wenzelm@57491
|
1 |
Isabelle NEWS -- history of user-relevant changes
|
wenzelm@57491
|
2 |
=================================================
|
wenzelm@2553
|
3 |
|
wenzelm@62114
|
4 |
(Note: Isabelle/jEdit shows a tree-view of the NEWS file in Sidekick.)
|
wenzelm@60006
|
5 |
|
wenzelm@64603
|
6 |
|
wenzelm@68391
|
7 |
New in Isabelle2018 (August 2018)
|
wenzelm@68391
|
8 |
---------------------------------
|
wenzelm@66651
|
9 |
|
wenzelm@66712
|
10 |
*** General ***
|
wenzelm@66712
|
11 |
|
wenzelm@68393
|
12 |
* Session-qualified theory names are mandatory: it is no longer possible
|
wenzelm@68393
|
13 |
to refer to unqualified theories from the parent session.
|
wenzelm@68393
|
14 |
INCOMPATIBILITY for old developments that have not been updated to
|
wenzelm@68393
|
15 |
Isabelle2017 yet (using the "isabelle imports" tool).
|
wenzelm@68393
|
16 |
|
wenzelm@68393
|
17 |
* Only the most fundamental theory names are global, usually the entry
|
wenzelm@68393
|
18 |
points to major logic sessions: Pure, Main, Complex_Main, HOLCF, IFOL,
|
wenzelm@68393
|
19 |
FOL, ZF, ZFC etc. INCOMPATIBILITY, need to use qualified names for
|
wenzelm@68393
|
20 |
formerly global "HOL-Probability.Probability" and "HOL-SPARK.SPARK".
|
wenzelm@68393
|
21 |
|
wenzelm@67446
|
22 |
* Marginal comments need to be written exclusively in the new-style form
|
wenzelm@67446
|
23 |
"\<comment> \<open>text\<close>", old ASCII variants like "-- {* ... *}" are no longer
|
wenzelm@67446
|
24 |
supported. INCOMPATIBILITY, use the command-line tool "isabelle
|
wenzelm@67446
|
25 |
update_comments" to update existing theory files.
|
wenzelm@67446
|
26 |
|
wenzelm@67507
|
27 |
* Old-style inner comments (* ... *) within the term language are legacy
|
wenzelm@67507
|
28 |
and will be discontinued soon: use formal comments "\<comment> \<open>...\<close>" or "\<^cancel>\<open>...\<close>"
|
wenzelm@67507
|
29 |
instead.
|
wenzelm@67507
|
30 |
|
nipkow@67402
|
31 |
* The "op <infix-op>" syntax for infix operators has been replaced by
|
nipkow@67400
|
32 |
"(<infix-op>)". If <infix-op> begins or ends with a "*", there needs to
|
nipkow@67400
|
33 |
be a space between the "*" and the corresponding parenthesis.
|
nipkow@67400
|
34 |
INCOMPATIBILITY.
|
nipkow@67398
|
35 |
There is an Isabelle tool "update_op" that converts theory and ML files
|
nipkow@67398
|
36 |
to the new syntax. Because it is based on regular expression matching,
|
nipkow@67398
|
37 |
the result may need a bit of manual postprocessing. Invoking "isabelle
|
nipkow@67398
|
38 |
update_op" converts all files in the current directory (recursively).
|
nipkow@67398
|
39 |
In case you want to exclude conversion of ML files (because the tool
|
nipkow@67398
|
40 |
frequently also converts ML's "op" syntax), use option "-m".
|
nipkow@67398
|
41 |
|
wenzelm@67013
|
42 |
* Theory header 'abbrevs' specifications need to be separated by 'and'.
|
wenzelm@67013
|
43 |
INCOMPATIBILITY.
|
wenzelm@67013
|
44 |
|
wenzelm@66757
|
45 |
* Command 'external_file' declares the formal dependency on the given
|
wenzelm@66757
|
46 |
file name, such that the Isabelle build process knows about it, but
|
wenzelm@66757
|
47 |
without specific Prover IDE management.
|
wenzelm@66757
|
48 |
|
wenzelm@66759
|
49 |
* Session ROOT entries no longer allow specification of 'files'. Rare
|
wenzelm@66759
|
50 |
INCOMPATIBILITY, use command 'external_file' within a proper theory
|
wenzelm@66759
|
51 |
context.
|
wenzelm@66759
|
52 |
|
wenzelm@66764
|
53 |
* Session root directories may be specified multiple times: each
|
wenzelm@66764
|
54 |
accessible ROOT file is processed only once. This facilitates
|
wenzelm@66764
|
55 |
specification of $ISABELLE_HOME_USER/ROOTS or command-line options like
|
wenzelm@66764
|
56 |
-d or -D for "isabelle build" and "isabelle jedit". Example:
|
wenzelm@66764
|
57 |
|
wenzelm@66764
|
58 |
isabelle build -D '~~/src/ZF'
|
wenzelm@66764
|
59 |
|
wenzelm@67263
|
60 |
* The command 'display_drafts' has been discontinued. INCOMPATIBILITY,
|
wenzelm@67263
|
61 |
use action "isabelle.draft" (or "print") in Isabelle/jEdit instead.
|
wenzelm@67263
|
62 |
|
wenzelm@68393
|
63 |
* In HTML output, the Isabelle symbol "\<hyphen>" is rendered as explicit
|
wenzelm@68393
|
64 |
Unicode hyphen U+2010, to avoid unclear meaning of the old "soft hyphen"
|
wenzelm@68393
|
65 |
U+00AD. Rare INCOMPATIBILITY, e.g. copy-paste of historic Isabelle HTML
|
wenzelm@68393
|
66 |
output.
|
wenzelm@67305
|
67 |
|
wenzelm@66712
|
68 |
|
wenzelm@67261
|
69 |
*** Isabelle/jEdit Prover IDE ***
|
wenzelm@66768
|
70 |
|
wenzelm@68393
|
71 |
* The command-line tool "isabelle jedit" provides more flexible options
|
wenzelm@68393
|
72 |
for session management:
|
wenzelm@68393
|
73 |
|
wenzelm@68472
|
74 |
- option -R builds an auxiliary logic image with all theories from
|
wenzelm@68472
|
75 |
other sessions that are not already present in its parent
|
wenzelm@68393
|
76 |
|
wenzelm@68393
|
77 |
- option -S is like -R, with a focus on the selected session and its
|
wenzelm@68393
|
78 |
descendants (this reduces startup time for big projects like AFP)
|
wenzelm@68393
|
79 |
|
wenzelm@68472
|
80 |
- option -A specifies an alternative ancestor session for options -R
|
wenzelm@68472
|
81 |
and -S
|
wenzelm@68472
|
82 |
|
wenzelm@68393
|
83 |
Examples:
|
wenzelm@68393
|
84 |
isabelle jedit -R HOL-Number_Theory
|
wenzelm@68393
|
85 |
isabelle jedit -R HOL-Number_Theory -A HOL
|
wenzelm@68393
|
86 |
isabelle jedit -d '$AFP' -S Formal_SSA -A HOL
|
wenzelm@68393
|
87 |
isabelle jedit -d '$AFP' -S Formal_SSA -A HOL-Analysis
|
wenzelm@68393
|
88 |
|
wenzelm@68393
|
89 |
* PIDE markup for session ROOT files: allows to complete session names,
|
wenzelm@68393
|
90 |
follow links to theories and document files etc.
|
wenzelm@68393
|
91 |
|
wenzelm@68393
|
92 |
* Completion supports theory header imports, using theory base name.
|
wenzelm@68393
|
93 |
E.g. "Prob" may be completed to "HOL-Probability.Probability".
|
wenzelm@68393
|
94 |
|
wenzelm@68393
|
95 |
* Named control symbols (without special Unicode rendering) are shown as
|
wenzelm@68393
|
96 |
bold-italic keyword. This is particularly useful for the short form of
|
wenzelm@68393
|
97 |
antiquotations with control symbol: \<^name>\<open>argument\<close>. The action
|
wenzelm@68393
|
98 |
"isabelle.antiquoted_cartouche" turns an antiquotation with 0 or 1
|
wenzelm@68393
|
99 |
arguments into this format.
|
wenzelm@68393
|
100 |
|
wenzelm@68393
|
101 |
* Completion provides templates for named symbols with arguments,
|
wenzelm@68393
|
102 |
e.g. "\<comment> \<open>ARGUMENT\<close>" or "\<^emph>\<open>ARGUMENT\<close>".
|
wenzelm@68393
|
103 |
|
wenzelm@68368
|
104 |
* Slightly more parallel checking, notably for high priority print
|
wenzelm@68368
|
105 |
functions (e.g. State output).
|
wenzelm@68368
|
106 |
|
wenzelm@68080
|
107 |
* The view title is set dynamically, according to the Isabelle
|
wenzelm@68080
|
108 |
distribution and the logic session name. The user can override this via
|
wenzelm@68080
|
109 |
set-view-title (stored persistently in $JEDIT_SETTINGS/perspective.xml).
|
wenzelm@68080
|
110 |
|
wenzelm@67395
|
111 |
* System options "spell_checker_include" and "spell_checker_exclude"
|
wenzelm@67395
|
112 |
supersede former "spell_checker_elements" to determine regions of text
|
wenzelm@67395
|
113 |
that are subject to spell-checking. Minor INCOMPATIBILITY.
|
wenzelm@67395
|
114 |
|
wenzelm@67248
|
115 |
* Action "isabelle.preview" is able to present more file formats,
|
wenzelm@67266
|
116 |
notably bibtex database files and ML files.
|
wenzelm@67246
|
117 |
|
wenzelm@67262
|
118 |
* Action "isabelle.draft" is similar to "isabelle.preview", but shows a
|
wenzelm@68067
|
119 |
plain-text document draft. Both are available via the menu "Plugins /
|
wenzelm@68067
|
120 |
Isabelle".
|
wenzelm@67262
|
121 |
|
wenzelm@68393
|
122 |
* Bibtex database files (.bib) are semantically checked.
|
wenzelm@68393
|
123 |
|
wenzelm@67304
|
124 |
* When loading text files, the Isabelle symbols encoding UTF-8-Isabelle
|
wenzelm@67304
|
125 |
is only used if there is no conflict with existing Unicode sequences in
|
wenzelm@67304
|
126 |
the file. Otherwise, the fallback encoding is plain UTF-8 and Isabelle
|
wenzelm@67304
|
127 |
symbols remain in literal \<symbol> form. This avoids accidental loss of
|
wenzelm@67304
|
128 |
Unicode content when saving the file.
|
wenzelm@67304
|
129 |
|
wenzelm@67993
|
130 |
* Update to jedit-5.5.0, the latest release.
|
wenzelm@67993
|
131 |
|
wenzelm@67246
|
132 |
|
wenzelm@67261
|
133 |
*** Isabelle/VSCode Prover IDE ***
|
wenzelm@67261
|
134 |
|
wenzelm@67261
|
135 |
* HTML preview of theories and other file-formats similar to
|
wenzelm@67261
|
136 |
Isabelle/jEdit.
|
wenzelm@67261
|
137 |
|
wenzelm@66768
|
138 |
|
wenzelm@67140
|
139 |
*** Document preparation ***
|
wenzelm@67140
|
140 |
|
wenzelm@67448
|
141 |
* Formal comments work uniformly in outer syntax, inner syntax (term
|
wenzelm@67448
|
142 |
language), Isabelle/ML and some other embedded languages of Isabelle.
|
wenzelm@67448
|
143 |
See also "Document comments" in the isar-ref manual. The following forms
|
wenzelm@67448
|
144 |
are supported:
|
wenzelm@67448
|
145 |
|
wenzelm@67448
|
146 |
- marginal text comment: \<comment> \<open>\<dots>\<close>
|
wenzelm@67448
|
147 |
- canceled source: \<^cancel>\<open>\<dots>\<close>
|
wenzelm@67448
|
148 |
- raw LaTeX: \<^latex>\<open>\<dots>\<close>
|
wenzelm@67413
|
149 |
|
wenzelm@67381
|
150 |
* Outside of the inner theory body, the default presentation context is
|
wenzelm@67381
|
151 |
theory Pure. Thus elementary antiquotations may be used in markup
|
wenzelm@67381
|
152 |
commands (e.g. 'chapter', 'section', 'text') and formal comments.
|
wenzelm@67381
|
153 |
|
wenzelm@67140
|
154 |
* System option "document_tags" specifies a default for otherwise
|
wenzelm@67140
|
155 |
untagged commands. This is occasionally useful to control the global
|
wenzelm@67140
|
156 |
visibility of commands via session options (e.g. in ROOT).
|
wenzelm@67140
|
157 |
|
wenzelm@67140
|
158 |
* Document markup commands ('section', 'text' etc.) are implicitly
|
wenzelm@67140
|
159 |
tagged as "document" and visible by default. This avoids the application
|
wenzelm@67140
|
160 |
of option "document_tags" to these commands.
|
wenzelm@67140
|
161 |
|
wenzelm@67145
|
162 |
* Isabelle names are mangled into LaTeX macro names to allow the full
|
wenzelm@67145
|
163 |
identifier syntax with underscore, prime, digits. This is relevant for
|
wenzelm@67145
|
164 |
antiquotations in control symbol notation, e.g. \<^const_name> becomes
|
wenzelm@67145
|
165 |
\isactrlconstUNDERSCOREname.
|
wenzelm@67145
|
166 |
|
wenzelm@68393
|
167 |
* Document preparation with skip_proofs option now preserves the content
|
wenzelm@68393
|
168 |
more accurately: only terminal proof steps ('by' etc.) are skipped.
|
wenzelm@67297
|
169 |
|
wenzelm@67219
|
170 |
* Document antiquotation @{session name} checks and prints the given
|
wenzelm@67219
|
171 |
session name verbatim.
|
wenzelm@67219
|
172 |
|
wenzelm@68393
|
173 |
* Document antiquotation @{cite} now checks the given Bibtex entries
|
wenzelm@68393
|
174 |
against the Bibtex database files -- only in batch-mode session builds.
|
wenzelm@67157
|
175 |
|
wenzelm@67176
|
176 |
* Command-line tool "isabelle document" has been re-implemented in
|
wenzelm@67194
|
177 |
Isabelle/Scala, with simplified arguments and explicit errors from the
|
wenzelm@67203
|
178 |
latex and bibtex process. Minor INCOMPATIBILITY.
|
wenzelm@67173
|
179 |
|
wenzelm@68393
|
180 |
* Session ROOT entry: empty 'document_files' means there is no document
|
wenzelm@68393
|
181 |
for this session. There is no need to specify options [document = false]
|
wenzelm@68393
|
182 |
anymore.
|
wenzelm@68393
|
183 |
|
wenzelm@67140
|
184 |
|
wenzelm@67702
|
185 |
*** Isar ***
|
wenzelm@67702
|
186 |
|
wenzelm@67702
|
187 |
* Command 'interpret' no longer exposes resulting theorems as literal
|
wenzelm@67702
|
188 |
facts, notably for the \<open>prop\<close> notation or the "fact" proof method. This
|
wenzelm@67702
|
189 |
improves modularity of proofs and scalability of locale interpretation.
|
wenzelm@67702
|
190 |
Rare INCOMPATIBILITY, need to refer to explicitly named facts instead
|
wenzelm@67702
|
191 |
(e.g. use 'find_theorems' or 'try' to figure this out).
|
wenzelm@67702
|
192 |
|
wenzelm@68393
|
193 |
* The old 'def' command has been discontinued (legacy since
|
wenzelm@68393
|
194 |
Isbelle2016-1). INCOMPATIBILITY, use 'define' instead -- usually with
|
wenzelm@68393
|
195 |
object-logic equality or equivalence.
|
wenzelm@68393
|
196 |
|
ballarin@67740
|
197 |
* Rewrites clauses (keyword 'rewrites') were moved into the locale
|
wenzelm@68393
|
198 |
expression syntax, where they are part of locale instances. In
|
wenzelm@68393
|
199 |
interpretation commands rewrites clauses now need to occur before 'for'
|
ballarin@68469
|
200 |
and 'defines'. Rare INCOMPATIBILITY; definitions immediately subject to
|
ballarin@68469
|
201 |
rewriting may need to be pulled up into the surrounding theory.
|
wenzelm@68393
|
202 |
|
wenzelm@68393
|
203 |
* For 'rewrites' clauses, if activating a locale instance fails, fall
|
wenzelm@68393
|
204 |
back to reading the clause first. This helps avoid qualification of
|
ballarin@67764
|
205 |
locale instances where the qualifier's sole purpose is avoiding
|
ballarin@67764
|
206 |
duplicate constant declarations.
|
ballarin@67741
|
207 |
|
nipkow@68403
|
208 |
* Proof method 'simp' now supports a new modifier 'flip:' followed by a list
|
nipkow@68403
|
209 |
of theorems. Each of these theorems is removed from the simpset
|
nipkow@68403
|
210 |
(without warning if it is not there) and the symmetric version of the theorem
|
nipkow@68403
|
211 |
(i.e. lhs and rhs exchanged) is added to the simpset.
|
nipkow@68403
|
212 |
For 'auto' and friends the modifier is "simp flip:".
|
nipkow@68403
|
213 |
|
wenzelm@67702
|
214 |
|
wenzelm@67718
|
215 |
*** Pure ***
|
wenzelm@67718
|
216 |
|
wenzelm@67718
|
217 |
* The inner syntax category "sort" now includes notation "_" for the
|
wenzelm@67718
|
218 |
dummy sort: it is effectively ignored in type-inference.
|
wenzelm@67718
|
219 |
|
wenzelm@67718
|
220 |
|
blanchet@66661
|
221 |
*** HOL ***
|
blanchet@66661
|
222 |
|
haftmann@68028
|
223 |
* Clarified relationship of characters, strings and code generation:
|
haftmann@68028
|
224 |
|
wenzelm@68393
|
225 |
- Type "char" is now a proper datatype of 8-bit values.
|
wenzelm@68393
|
226 |
|
wenzelm@68393
|
227 |
- Conversions "nat_of_char" and "char_of_nat" are gone; use more
|
wenzelm@68393
|
228 |
general conversions "of_char" and "char_of" with suitable type
|
wenzelm@68393
|
229 |
constraints instead.
|
wenzelm@68393
|
230 |
|
wenzelm@68393
|
231 |
- The zero character is just written "CHR 0x00", not "0" any longer.
|
wenzelm@68393
|
232 |
|
wenzelm@68393
|
233 |
- Type "String.literal" (for code generation) is now isomorphic to
|
wenzelm@68393
|
234 |
lists of 7-bit (ASCII) values; concrete values can be written as
|
wenzelm@68393
|
235 |
"STR ''...''" for sequences of printable characters and "STR 0x..."
|
wenzelm@68393
|
236 |
for one single ASCII code point given as hexadecimal numeral.
|
wenzelm@68393
|
237 |
|
wenzelm@68393
|
238 |
- Type "String.literal" supports concatenation "... + ..." for all
|
wenzelm@68393
|
239 |
standard target languages.
|
wenzelm@68393
|
240 |
|
wenzelm@68393
|
241 |
- Theory HOL-Library.Code_Char is gone; study the explanations
|
wenzelm@68393
|
242 |
concerning "String.literal" in the tutorial on code generation to
|
wenzelm@68393
|
243 |
get an idea how target-language string literals can be converted to
|
wenzelm@68393
|
244 |
HOL string values and vice versa.
|
wenzelm@68393
|
245 |
|
wenzelm@68393
|
246 |
- Session Imperative-HOL: operation "raise" directly takes a value of
|
wenzelm@68393
|
247 |
type "String.literal" as argument, not type "string".
|
wenzelm@68393
|
248 |
|
wenzelm@68393
|
249 |
INCOMPATIBILITY.
|
wenzelm@68393
|
250 |
|
wenzelm@68393
|
251 |
* Code generation: Code generation takes an explicit option
|
wenzelm@68393
|
252 |
"case_insensitive" to accomodate case-insensitive file systems.
|
wenzelm@68393
|
253 |
|
wenzelm@68393
|
254 |
* Abstract bit operations as part of Main: push_bit, take_bit, drop_bit.
|
wenzelm@68393
|
255 |
|
wenzelm@68393
|
256 |
* New, more general, axiomatization of complete_distrib_lattice. The
|
wenzelm@68393
|
257 |
former axioms:
|
wenzelm@68393
|
258 |
|
wenzelm@68393
|
259 |
"sup x (Inf X) = Inf (sup x ` X)" and "inf x (Sup X) = Sup (inf x ` X)"
|
wenzelm@68393
|
260 |
|
wenzelm@68393
|
261 |
are replaced by:
|
wenzelm@68393
|
262 |
|
wenzelm@68393
|
263 |
"Inf (Sup ` A) <= Sup (Inf ` {f ` A | f . (! Y \<in> A . f Y \<in> Y)})"
|
wenzelm@68393
|
264 |
|
wenzelm@68393
|
265 |
The instantiations of sets and functions as complete_distrib_lattice are
|
wenzelm@68393
|
266 |
moved to Hilbert_Choice.thy because their proofs need the Hilbert choice
|
wenzelm@68393
|
267 |
operator. The dual of this property is also proved in theory
|
wenzelm@68393
|
268 |
HOL.Hilbert_Choice.
|
eberlm@67831
|
269 |
|
lp15@67999
|
270 |
* New syntax for the minimum/maximum of a function over a finite set:
|
wenzelm@68393
|
271 |
MIN x\<in>A. B and even MIN x. B (only useful for finite types), also MAX.
|
lp15@67999
|
272 |
|
haftmann@67525
|
273 |
* Clarifed theorem names:
|
haftmann@67525
|
274 |
|
haftmann@67525
|
275 |
Min.antimono ~> Min.subset_imp
|
haftmann@67525
|
276 |
Max.antimono ~> Max.subset_imp
|
haftmann@67525
|
277 |
|
haftmann@67525
|
278 |
Minor INCOMPATIBILITY.
|
haftmann@67525
|
279 |
|
blanchet@66661
|
280 |
* SMT module:
|
wenzelm@68393
|
281 |
|
blanchet@66661
|
282 |
- The 'smt_oracle' option is now necessary when using the 'smt' method
|
blanchet@66662
|
283 |
with a solver other than Z3. INCOMPATIBILITY.
|
wenzelm@68393
|
284 |
|
wenzelm@66844
|
285 |
- The encoding to first-order logic is now more complete in the
|
wenzelm@66844
|
286 |
presence of higher-order quantifiers. An 'smt_explicit_application'
|
wenzelm@66844
|
287 |
option has been added to control this. INCOMPATIBILITY.
|
wenzelm@66844
|
288 |
|
haftmann@66804
|
289 |
* Facts sum.commute(_restrict) and prod.commute(_restrict) renamed to
|
wenzelm@66844
|
290 |
sum.swap(_restrict) and prod.swap(_restrict), to avoid name clashes on
|
wenzelm@66844
|
291 |
interpretation of abstract locales. INCOMPATIBILITY.
|
haftmann@66804
|
292 |
|
wenzelm@68393
|
293 |
* Predicate coprime is now a real definition, not a mere abbreviation.
|
wenzelm@68393
|
294 |
INCOMPATIBILITY.
|
wenzelm@68393
|
295 |
|
haftmann@66803
|
296 |
* Predicate pairwise_coprime abolished, use "pairwise coprime" instead.
|
haftmann@66803
|
297 |
INCOMPATIBILITY.
|
haftmann@66803
|
298 |
|
lp15@68373
|
299 |
* The relator rel_filter on filters has been strengthened to its
|
wenzelm@68393
|
300 |
canonical categorical definition with better properties.
|
wenzelm@68393
|
301 |
INCOMPATIBILITY.
|
Andreas@67616
|
302 |
|
immler@68072
|
303 |
* Generalized linear algebra involving linear, span, dependent, dim
|
immler@68072
|
304 |
from type class real_vector to locales module and vector_space.
|
immler@68072
|
305 |
Renamed:
|
wenzelm@68393
|
306 |
|
wenzelm@68393
|
307 |
span_inc ~> span_superset
|
wenzelm@68393
|
308 |
span_superset ~> span_base
|
wenzelm@68393
|
309 |
span_eq ~> span_eq_iff
|
wenzelm@68393
|
310 |
|
wenzelm@68393
|
311 |
INCOMPATIBILITY.
|
wenzelm@66844
|
312 |
|
haftmann@66937
|
313 |
* Class linordered_semiring_1 covers zero_less_one also, ruling out
|
haftmann@66937
|
314 |
pathologic instances. Minor INCOMPATIBILITY.
|
haftmann@66937
|
315 |
|
wenzelm@68393
|
316 |
* Theory HOL.List: functions "sorted_wrt" and "sorted" now compare every
|
wenzelm@68393
|
317 |
element in a list to all following elements, not just the next one.
|
wenzelm@68393
|
318 |
|
wenzelm@68393
|
319 |
* Theory HOL.List syntax:
|
wenzelm@68393
|
320 |
|
wenzelm@68393
|
321 |
- filter-syntax "[x <- xs. P]" is no longer output syntax, but only
|
wenzelm@68393
|
322 |
input syntax
|
wenzelm@68393
|
323 |
|
wenzelm@68393
|
324 |
- list comprehension syntax now supports tuple patterns in "pat <- xs"
|
nipkow@68249
|
325 |
|
nipkow@68450
|
326 |
* Theory Map: "empty" must now be qualified as "Map.empty".
|
nipkow@68450
|
327 |
|
haftmann@67051
|
328 |
* Removed nat-int transfer machinery. Rare INCOMPATIBILITY.
|
haftmann@67051
|
329 |
|
haftmann@68100
|
330 |
* Fact mod_mult_self4 (on nat) renamed to Suc_mod_mult_self3, to avoid
|
haftmann@68100
|
331 |
clash with fact mod_mult_self4 (on more generic semirings).
|
haftmann@68100
|
332 |
INCOMPATIBILITY.
|
haftmann@68100
|
333 |
|
haftmann@68100
|
334 |
* Eliminated some theorem aliasses:
|
haftmann@68100
|
335 |
even_times_iff ~> even_mult_iff
|
haftmann@68100
|
336 |
mod_2_not_eq_zero_eq_one_nat ~> not_mod_2_eq_0_eq_1
|
haftmann@68100
|
337 |
even_of_nat ~> even_int_iff
|
haftmann@68100
|
338 |
|
haftmann@68100
|
339 |
INCOMPATIBILITY.
|
haftmann@68100
|
340 |
|
haftmann@68157
|
341 |
* Eliminated some theorem duplicate variations:
|
wenzelm@68393
|
342 |
|
wenzelm@68393
|
343 |
- dvd_eq_mod_eq_0_numeral can be replaced by dvd_eq_mod_eq_0
|
wenzelm@68393
|
344 |
- mod_Suc_eq_Suc_mod can be replaced by mod_Suc
|
wenzelm@68393
|
345 |
- mod_Suc_eq_Suc_mod [symmetrict] can be replaced by mod_simps
|
wenzelm@68393
|
346 |
- mod_eq_0_iff can be replaced by mod_eq_0_iff_dvd and dvd_def
|
wenzelm@68393
|
347 |
- the witness of mod_eqD can be given directly as "_ div _"
|
haftmann@68157
|
348 |
|
haftmann@68157
|
349 |
INCOMPATIBILITY.
|
haftmann@68157
|
350 |
|
haftmann@68260
|
351 |
* Classical setup: Assumption "m mod d = 0" (for m d :: nat) is no
|
wenzelm@68393
|
352 |
longer aggresively destroyed to "\<exists>q. m = d * q". INCOMPATIBILITY, adding
|
wenzelm@68393
|
353 |
"elim!: dvd" to classical proof methods in most situations restores
|
wenzelm@68393
|
354 |
broken proofs.
|
wenzelm@68393
|
355 |
|
wenzelm@68393
|
356 |
* Theory HOL-Library.Conditional_Parametricity provides command
|
wenzelm@68393
|
357 |
'parametric_constant' for proving parametricity of non-recursive
|
wenzelm@68393
|
358 |
definitions. For constants that are not fully parametric the command
|
wenzelm@68393
|
359 |
will infer conditions on relations (e.g., bi_unique, bi_total, or type
|
wenzelm@68393
|
360 |
class conditions such as "respects 0") sufficient for parametricity. See
|
wenzelm@68393
|
361 |
theory HOL-ex.Conditional_Parametricity_Examples for some examples.
|
wenzelm@68393
|
362 |
|
wenzelm@68393
|
363 |
* Theory HOL-Library.Code_Lazy provides a new preprocessor for the code
|
wenzelm@68393
|
364 |
generator to generate code for algebraic types with lazy evaluation
|
wenzelm@68393
|
365 |
semantics even in call-by-value target languages. See theory
|
wenzelm@68393
|
366 |
HOL-Codegenerator_Test.Code_Lazy_Test for some examples.
|
wenzelm@68393
|
367 |
|
wenzelm@68393
|
368 |
* Theory HOL-Library.Landau_Symbols has been moved here from AFP.
|
wenzelm@68393
|
369 |
|
wenzelm@68393
|
370 |
* Theory HOL-Library.Old_Datatype no longer provides the legacy command
|
wenzelm@68393
|
371 |
'old_datatype'. INCOMPATIBILITY.
|
wenzelm@68393
|
372 |
|
wenzelm@68393
|
373 |
* Theory HOL-Computational_Algebra.Polynomial_Factorial does not provide
|
wenzelm@68393
|
374 |
instances of rat, real, complex as factorial rings etc. Import
|
wenzelm@68393
|
375 |
HOL-Computational_Algebra.Field_as_Ring explicitly in case of need.
|
wenzelm@68393
|
376 |
INCOMPATIBILITY.
|
wenzelm@68393
|
377 |
|
wenzelm@68393
|
378 |
* Session HOL-Algebra: renamed (^) to [^] to avoid conflict with new
|
wenzelm@68393
|
379 |
infix/prefix notation.
|
wenzelm@68393
|
380 |
|
lp15@68466
|
381 |
* Session HOL-Algebra: Revamped with much new material.
|
lp15@68466
|
382 |
The set of isomorphisms between two groups is now denoted iso rather than iso_set.
|
lp15@68466
|
383 |
INCOMPATIBILITY.
|
lp15@68466
|
384 |
|
wenzelm@68393
|
385 |
* Session HOL-Analysis: infinite products, Moebius functions, the
|
wenzelm@68393
|
386 |
Riemann mapping theorem, the Vitali covering theorem,
|
wenzelm@68393
|
387 |
change-of-variables results for integration and measures.
|
haftmann@68260
|
388 |
|
wenzelm@66651
|
389 |
|
wenzelm@68116
|
390 |
*** ML ***
|
wenzelm@68116
|
391 |
|
wenzelm@68116
|
392 |
* Operation Export.export emits theory exports (arbitrary blobs), which
|
wenzelm@68116
|
393 |
are stored persistently in the session build database.
|
wenzelm@68116
|
394 |
|
wenzelm@68276
|
395 |
* Command 'ML_export' exports ML toplevel bindings to the global
|
wenzelm@68276
|
396 |
bootstrap environment of the ML process. This allows ML evaluation
|
wenzelm@68276
|
397 |
without a formal theory context, e.g. in command-line tools like
|
wenzelm@68276
|
398 |
"isabelle process".
|
wenzelm@68276
|
399 |
|
wenzelm@68116
|
400 |
|
wenzelm@66729
|
401 |
*** System ***
|
wenzelm@66729
|
402 |
|
wenzelm@67088
|
403 |
* Mac OS X 10.10 Yosemite is now the baseline version; Mavericks is no
|
wenzelm@67088
|
404 |
longer supported.
|
wenzelm@67088
|
405 |
|
wenzelm@68393
|
406 |
* Linux and Windows/Cygwin is for x86_64 only, old 32bit platform
|
wenzelm@68393
|
407 |
support has been discontinued.
|
wenzelm@68393
|
408 |
|
wenzelm@66906
|
409 |
* Java runtime is for x86_64 only. Corresponding Isabelle settings have
|
wenzelm@66906
|
410 |
been renamed to ISABELLE_TOOL_JAVA_OPTIONS and JEDIT_JAVA_OPTIONS,
|
wenzelm@66906
|
411 |
instead of former 32/64 variants. INCOMPATIBILITY.
|
wenzelm@66906
|
412 |
|
wenzelm@68003
|
413 |
* Old settings ISABELLE_PLATFORM and ISABELLE_WINDOWS_PLATFORM should be
|
wenzelm@68003
|
414 |
phased out due to unclear preference of 32bit vs. 64bit architecture.
|
wenzelm@68003
|
415 |
Explicit GNU bash expressions are now preferred, for example (with
|
wenzelm@68003
|
416 |
quotes):
|
wenzelm@68003
|
417 |
|
wenzelm@68003
|
418 |
#Posix executables (Unix or Cygwin), with preference for 64bit
|
wenzelm@68003
|
419 |
"${ISABELLE_PLATFORM64:-$ISABELLE_PLATFORM32}"
|
wenzelm@68003
|
420 |
|
wenzelm@68003
|
421 |
#native Windows or Unix executables, with preference for 64bit
|
wenzelm@68003
|
422 |
"${ISABELLE_WINDOWS_PLATFORM64:-${ISABELLE_WINDOWS_PLATFORM32:-${ISABELLE_PLATFORM64:-$ISABELLE_PLATFORM32}}}"
|
wenzelm@68003
|
423 |
|
wenzelm@68003
|
424 |
#native Windows (32bit) or Unix executables (preference for 64bit)
|
wenzelm@68003
|
425 |
"${ISABELLE_WINDOWS_PLATFORM32:-${ISABELLE_PLATFORM64:-$ISABELLE_PLATFORM32}}"
|
wenzelm@68003
|
426 |
|
wenzelm@66745
|
427 |
* Command-line tool "isabelle build" supports new options:
|
wenzelm@66745
|
428 |
- option -B NAME: include session NAME and all descendants
|
wenzelm@66745
|
429 |
- option -S: only observe changes of sources, not heap images
|
wenzelm@66841
|
430 |
- option -f: forces a fresh build
|
wenzelm@66737
|
431 |
|
wenzelm@66843
|
432 |
* Command-line tool "isabelle build" takes "condition" options with the
|
wenzelm@66843
|
433 |
corresponding environment values into account, when determining the
|
wenzelm@66843
|
434 |
up-to-date status of a session.
|
wenzelm@66843
|
435 |
|
wenzelm@68393
|
436 |
* The command-line tool "dump" dumps information from the cumulative
|
wenzelm@68393
|
437 |
PIDE session database: many sessions may be loaded into a given logic
|
wenzelm@68393
|
438 |
image, results from all loaded theories are written to the output
|
wenzelm@68393
|
439 |
directory.
|
wenzelm@68393
|
440 |
|
wenzelm@66851
|
441 |
* Command-line tool "isabelle imports -I" also reports actual session
|
wenzelm@66851
|
442 |
imports. This helps to minimize the session dependency graph.
|
wenzelm@66851
|
443 |
|
wenzelm@68393
|
444 |
* The command-line tool "export" and 'export_files' in session ROOT
|
wenzelm@68393
|
445 |
entries retrieve theory exports from the session build database.
|
wenzelm@68393
|
446 |
|
wenzelm@68393
|
447 |
* The command-line tools "isabelle server" and "isabelle client" provide
|
wenzelm@68393
|
448 |
access to the Isabelle Server: it supports responsive session management
|
wenzelm@68393
|
449 |
and concurrent use of theories, based on Isabelle/PIDE infrastructure.
|
wenzelm@68393
|
450 |
See also the "system" manual.
|
wenzelm@68393
|
451 |
|
wenzelm@68393
|
452 |
* The command-line tool "isabelle update_comments" normalizes formal
|
wenzelm@68393
|
453 |
comments in outer syntax as follows: \<comment> \<open>text\<close> (whith a single space to
|
wenzelm@68393
|
454 |
approximate the appearance in document output). This is more specific
|
wenzelm@68393
|
455 |
than former "isabelle update_cartouches -c": the latter tool option has
|
wenzelm@68393
|
456 |
been discontinued.
|
wenzelm@68393
|
457 |
|
wenzelm@68393
|
458 |
* The command-line tool "isabelle mkroot" now always produces a document
|
wenzelm@68393
|
459 |
outline: its options have been adapted accordingly. INCOMPATIBILITY.
|
wenzelm@68393
|
460 |
|
wenzelm@68393
|
461 |
* The command-line tool "isabelle mkroot -I" initializes a Mercurial
|
wenzelm@68393
|
462 |
repository for the generated session files.
|
wenzelm@68393
|
463 |
|
wenzelm@68393
|
464 |
* Settings ISABELLE_PATH and ISABELLE_OUTPUT have been discontinued:
|
wenzelm@68393
|
465 |
heap images and session databases are always stored in
|
wenzelm@68393
|
466 |
$ISABELLE_HOME_USER/heaps/$ML_IDENTIFIER (command-line default) or
|
wenzelm@68393
|
467 |
$ISABELLE_HOME/heaps/$ML_IDENTIFIER (main Isabelle application or
|
wenzelm@68393
|
468 |
"isabelle jedit -s" or "isabelle build -s").
|
wenzelm@67099
|
469 |
|
wenzelm@67199
|
470 |
* ISABELLE_LATEX and ISABELLE_PDFLATEX now include platform-specific
|
wenzelm@67199
|
471 |
options for improved error reporting. Potential INCOMPATIBILITY with
|
wenzelm@67199
|
472 |
unusual LaTeX installations, may have to adapt these settings.
|
wenzelm@67199
|
473 |
|
wenzelm@68393
|
474 |
* Update to Poly/ML 5.7.1 with slightly improved performance and PIDE
|
wenzelm@68393
|
475 |
markup for identifier bindings. It now uses The GNU Multiple Precision
|
wenzelm@67591
|
476 |
Arithmetic Library (libgmp) on all platforms, notably Mac OS X with
|
wenzelm@67591
|
477 |
32/64 bit.
|
wenzelm@67591
|
478 |
|
wenzelm@67099
|
479 |
|
wenzelm@66729
|
480 |
|
wenzelm@66472
|
481 |
New in Isabelle2017 (October 2017)
|
wenzelm@66472
|
482 |
----------------------------------
|
wenzelm@64439
|
483 |
|
wenzelm@64986
|
484 |
*** General ***
|
wenzelm@64986
|
485 |
|
wenzelm@66238
|
486 |
* Experimental support for Visual Studio Code (VSCode) as alternative
|
wenzelm@66238
|
487 |
Isabelle/PIDE front-end, see also
|
wenzelm@66599
|
488 |
https://marketplace.visualstudio.com/items?itemName=makarius.Isabelle2017
|
wenzelm@66238
|
489 |
|
wenzelm@66238
|
490 |
VSCode is a new type of application that continues the concepts of
|
wenzelm@66238
|
491 |
"programmer's editor" and "integrated development environment" towards
|
wenzelm@66238
|
492 |
fully semantic editing and debugging -- in a relatively light-weight
|
wenzelm@66238
|
493 |
manner. Thus it fits nicely on top of the Isabelle/PIDE infrastructure.
|
wenzelm@66238
|
494 |
Technically, VSCode is based on the Electron application framework
|
wenzelm@66238
|
495 |
(Node.js + Chromium browser + V8), which is implemented in JavaScript
|
wenzelm@66238
|
496 |
and TypeScript, while Isabelle/VSCode mainly consists of Isabelle/Scala
|
wenzelm@66238
|
497 |
modules around a Language Server implementation.
|
wenzelm@66238
|
498 |
|
wenzelm@65504
|
499 |
* Theory names are qualified by the session name that they belong to.
|
wenzelm@66454
|
500 |
This affects imports, but not the theory name space prefix (which is
|
wenzelm@66454
|
501 |
just the theory base name as before).
|
wenzelm@66454
|
502 |
|
wenzelm@66454
|
503 |
In order to import theories from other sessions, the ROOT file format
|
wenzelm@66454
|
504 |
provides a new 'sessions' keyword. In contrast, a theory that is
|
wenzelm@66454
|
505 |
imported in the old-fashioned manner via an explicit file-system path
|
wenzelm@66472
|
506 |
belongs to the current session, and might cause theory name conflicts
|
wenzelm@66454
|
507 |
later on. Theories that are imported from other sessions are excluded
|
wenzelm@66454
|
508 |
from the current session document. The command-line tool "isabelle
|
wenzelm@66454
|
509 |
imports" helps to update theory imports.
|
wenzelm@66454
|
510 |
|
wenzelm@65451
|
511 |
* The main theory entry points for some non-HOL sessions have changed,
|
wenzelm@65451
|
512 |
to avoid confusion with the global name "Main" of the session HOL. This
|
wenzelm@65451
|
513 |
leads to the follow renamings:
|
wenzelm@65451
|
514 |
|
wenzelm@65451
|
515 |
CTT/Main.thy ~> CTT/CTT.thy
|
wenzelm@65451
|
516 |
ZF/Main.thy ~> ZF/ZF.thy
|
wenzelm@65451
|
517 |
ZF/Main_ZF.thy ~> ZF/ZF.thy
|
wenzelm@65451
|
518 |
ZF/Main_ZFC.thy ~> ZF/ZFC.thy
|
wenzelm@65451
|
519 |
ZF/ZF.thy ~> ZF/ZF_Base.thy
|
wenzelm@65451
|
520 |
|
wenzelm@65451
|
521 |
INCOMPATIBILITY.
|
wenzelm@65451
|
522 |
|
wenzelm@66472
|
523 |
* Commands 'alias' and 'type_alias' introduce aliases for constants and
|
wenzelm@66472
|
524 |
type constructors, respectively. This allows adhoc changes to name-space
|
wenzelm@66472
|
525 |
accesses within global or local theory contexts, e.g. within a 'bundle'.
|
wenzelm@66472
|
526 |
|
wenzelm@64986
|
527 |
* Document antiquotations @{prf} and @{full_prf} output proof terms
|
wenzelm@64986
|
528 |
(again) in the same way as commands 'prf' and 'full_prf'.
|
wenzelm@64986
|
529 |
|
wenzelm@65055
|
530 |
* Computations generated by the code generator can be embedded directly
|
wenzelm@65055
|
531 |
into ML, alongside with @{code} antiquotations, using the following
|
wenzelm@65055
|
532 |
antiquotations:
|
wenzelm@65055
|
533 |
|
wenzelm@65055
|
534 |
@{computation ... terms: ... datatypes: ...} :
|
wenzelm@65055
|
535 |
((term -> term) -> 'ml option -> 'a) -> Proof.context -> term -> 'a
|
wenzelm@65055
|
536 |
@{computation_conv ... terms: ... datatypes: ...} :
|
wenzelm@65055
|
537 |
(Proof.context -> 'ml -> conv) -> Proof.context -> conv
|
wenzelm@65045
|
538 |
@{computation_check terms: ... datatypes: ...} : Proof.context -> conv
|
haftmann@65041
|
539 |
|
wenzelm@65055
|
540 |
See src/HOL/ex/Computations.thy,
|
wenzelm@65055
|
541 |
src/HOL/Decision_Procs/Commutative_Ring.thy and
|
wenzelm@65055
|
542 |
src/HOL/Decision_Procs/Reflective_Field.thy for examples and the
|
wenzelm@65055
|
543 |
tutorial on code generation.
|
haftmann@65041
|
544 |
|
wenzelm@64986
|
545 |
|
wenzelm@64602
|
546 |
*** Prover IDE -- Isabelle/Scala/jEdit ***
|
wenzelm@64602
|
547 |
|
wenzelm@66472
|
548 |
* Session-qualified theory imports allow the Prover IDE to process
|
wenzelm@66472
|
549 |
arbitrary theory hierarchies independently of the underlying logic
|
wenzelm@66472
|
550 |
session image (e.g. option "isabelle jedit -l"), but the directory
|
wenzelm@66472
|
551 |
structure needs to be known in advance (e.g. option "isabelle jedit -d"
|
wenzelm@66472
|
552 |
or a line in the file $ISABELLE_HOME_USER/ROOTS).
|
wenzelm@64602
|
553 |
|
wenzelm@64842
|
554 |
* The PIDE document model maintains file content independently of the
|
wenzelm@64842
|
555 |
status of jEdit editor buffers. Reloading jEdit buffers no longer causes
|
wenzelm@64842
|
556 |
changes of formal document content. Theory dependencies are always
|
wenzelm@64842
|
557 |
resolved internally, without the need for corresponding editor buffers.
|
wenzelm@64842
|
558 |
The system option "jedit_auto_load" has been discontinued: it is
|
wenzelm@64842
|
559 |
effectively always enabled.
|
wenzelm@64842
|
560 |
|
wenzelm@64867
|
561 |
* The Theories dockable provides a "Purge" button, in order to restrict
|
wenzelm@64867
|
562 |
the document model to theories that are required for open editor
|
wenzelm@64867
|
563 |
buffers.
|
wenzelm@64867
|
564 |
|
wenzelm@66424
|
565 |
* The Theories dockable indicates the overall status of checking of each
|
wenzelm@66424
|
566 |
entry. When all forked tasks of a theory are finished, the border is
|
wenzelm@66424
|
567 |
painted with thick lines; remaining errors in this situation are
|
wenzelm@66424
|
568 |
represented by a different border color.
|
wenzelm@66424
|
569 |
|
wenzelm@66472
|
570 |
* Automatic indentation is more careful to avoid redundant spaces in
|
wenzelm@66472
|
571 |
intermediate situations. Keywords are indented after input (via typed
|
wenzelm@66472
|
572 |
characters or completion); see also option "jedit_indent_input".
|
wenzelm@66472
|
573 |
|
wenzelm@66472
|
574 |
* Action "isabelle.preview" opens an HTML preview of the current theory
|
wenzelm@66472
|
575 |
document in the default web browser.
|
wenzelm@66472
|
576 |
|
wenzelm@66574
|
577 |
* Command-line invocation "isabelle jedit -R -l LOGIC" opens the ROOT
|
wenzelm@66574
|
578 |
entry of the specified logic session in the editor, while its parent is
|
wenzelm@66574
|
579 |
used for formal checking.
|
wenzelm@66472
|
580 |
|
wenzelm@66462
|
581 |
* The main Isabelle/jEdit plugin may be restarted manually (using the
|
wenzelm@66462
|
582 |
jEdit Plugin Manager), as long as the "Isabelle Base" plugin remains
|
wenzelm@66462
|
583 |
enabled at all times.
|
wenzelm@66462
|
584 |
|
wenzelm@66472
|
585 |
* Update to current jedit-5.4.0.
|
wenzelm@65329
|
586 |
|
wenzelm@64602
|
587 |
|
haftmann@66149
|
588 |
*** Pure ***
|
haftmann@66149
|
589 |
|
haftmann@66149
|
590 |
* Deleting the last code equations for a particular function using
|
haftmann@66149
|
591 |
[code del] results in function with no equations (runtime abort) rather
|
wenzelm@66472
|
592 |
than an unimplemented function (generation time abort). Use explicit
|
haftmann@66665
|
593 |
[[code drop:]] to enforce the latter. Minor INCOMPATIBILITY.
|
haftmann@66149
|
594 |
|
haftmann@66310
|
595 |
* Proper concept of code declarations in code.ML:
|
wenzelm@66472
|
596 |
- Regular code declarations act only on the global theory level, being
|
wenzelm@66472
|
597 |
ignored with warnings if syntactically malformed.
|
wenzelm@66472
|
598 |
- Explicitly global code declarations yield errors if syntactically
|
wenzelm@66472
|
599 |
malformed.
|
wenzelm@66472
|
600 |
- Default code declarations are silently ignored if syntactically
|
wenzelm@66472
|
601 |
malformed.
|
haftmann@66310
|
602 |
Minor INCOMPATIBILITY.
|
haftmann@66310
|
603 |
|
wenzelm@66472
|
604 |
* Clarified and standardized internal data bookkeeping of code
|
wenzelm@66472
|
605 |
declarations: history of serials allows to track potentially
|
wenzelm@66472
|
606 |
non-monotonous declarations appropriately. Minor INCOMPATIBILITY.
|
haftmann@66310
|
607 |
|
haftmann@66149
|
608 |
|
haftmann@64593
|
609 |
*** HOL ***
|
haftmann@64593
|
610 |
|
blanchet@66614
|
611 |
* The Nunchaku model finder is now part of "Main".
|
blanchet@66614
|
612 |
|
wenzelm@66472
|
613 |
* SMT module:
|
wenzelm@66472
|
614 |
- A new option, 'smt_nat_as_int', has been added to translate 'nat' to
|
wenzelm@66472
|
615 |
'int' and benefit from the SMT solver's theory reasoning. It is
|
wenzelm@66472
|
616 |
disabled by default.
|
wenzelm@66472
|
617 |
- The legacy module "src/HOL/Library/Old_SMT.thy" has been removed.
|
wenzelm@66472
|
618 |
- Several small issues have been rectified in the 'smt' command.
|
wenzelm@66472
|
619 |
|
wenzelm@66472
|
620 |
* (Co)datatype package: The 'size_gen_o_map' lemma is no longer
|
wenzelm@66472
|
621 |
generated for datatypes with type class annotations. As a result, the
|
wenzelm@66472
|
622 |
tactic that derives it no longer fails on nested datatypes. Slight
|
wenzelm@66472
|
623 |
INCOMPATIBILITY.
|
eberlm@66450
|
624 |
|
haftmann@66345
|
625 |
* Command and antiquotation "value" with modified default strategy:
|
haftmann@66345
|
626 |
terms without free variables are always evaluated using plain evaluation
|
wenzelm@66472
|
627 |
only, with no fallback on normalization by evaluation. Minor
|
wenzelm@66472
|
628 |
INCOMPATIBILITY.
|
eberlm@65956
|
629 |
|
wenzelm@65552
|
630 |
* Theories "GCD" and "Binomial" are already included in "Main" (instead
|
wenzelm@65575
|
631 |
of "Complex_Main").
|
wenzelm@65552
|
632 |
|
haftmann@65170
|
633 |
* Constant "surj" is a full input/output abbreviation (again).
|
haftmann@65170
|
634 |
Minor INCOMPATIBILITY.
|
haftmann@65170
|
635 |
|
haftmann@64632
|
636 |
* Dropped aliasses RangeP, DomainP for Rangep, Domainp respectively.
|
haftmann@64632
|
637 |
INCOMPATIBILITY.
|
haftmann@64632
|
638 |
|
wenzelm@66472
|
639 |
* Renamed ii to imaginary_unit in order to free up ii as a variable
|
wenzelm@66472
|
640 |
name. The syntax \<i> remains available. INCOMPATIBILITY.
|
wenzelm@66472
|
641 |
|
wenzelm@66472
|
642 |
* Dropped abbreviations transP, antisymP, single_valuedP; use constants
|
wenzelm@66472
|
643 |
transp, antisymp, single_valuedp instead. INCOMPATIBILITY.
|
wenzelm@66472
|
644 |
|
wenzelm@66472
|
645 |
* Constant "subseq" in Topological_Spaces has been removed -- it is
|
wenzelm@66472
|
646 |
subsumed by "strict_mono". Some basic lemmas specific to "subseq" have
|
wenzelm@66472
|
647 |
been renamed accordingly, e.g. "subseq_o" -> "strict_mono_o" etc.
|
wenzelm@66472
|
648 |
|
wenzelm@66472
|
649 |
* Theory List: "sublist" renamed to "nths" in analogy with "nth", and
|
wenzelm@66472
|
650 |
"sublisteq" renamed to "subseq". Minor INCOMPATIBILITY.
|
wenzelm@66472
|
651 |
|
wenzelm@66472
|
652 |
* Theory List: new generic function "sorted_wrt".
|
wenzelm@66472
|
653 |
|
wenzelm@66472
|
654 |
* Named theorems mod_simps covers various congruence rules concerning
|
wenzelm@66472
|
655 |
mod, replacing former zmod_simps. INCOMPATIBILITY.
|
haftmann@64787
|
656 |
|
haftmann@64593
|
657 |
* Swapped orientation of congruence rules mod_add_left_eq,
|
haftmann@64593
|
658 |
mod_add_right_eq, mod_add_eq, mod_mult_left_eq, mod_mult_right_eq,
|
haftmann@64593
|
659 |
mod_mult_eq, mod_minus_eq, mod_diff_left_eq, mod_diff_right_eq,
|
wenzelm@66472
|
660 |
mod_diff_eq. INCOMPATIBILITY.
|
haftmann@64593
|
661 |
|
haftmann@64593
|
662 |
* Generalized some facts:
|
blanchet@64876
|
663 |
measure_induct_rule
|
blanchet@64876
|
664 |
measure_induct
|
haftmann@64593
|
665 |
zminus_zmod ~> mod_minus_eq
|
haftmann@64593
|
666 |
zdiff_zmod_left ~> mod_diff_left_eq
|
haftmann@64593
|
667 |
zdiff_zmod_right ~> mod_diff_right_eq
|
haftmann@64593
|
668 |
zmod_eq_dvd_iff ~> mod_eq_dvd_iff
|
haftmann@64593
|
669 |
INCOMPATIBILITY.
|
haftmann@64593
|
670 |
|
wenzelm@66472
|
671 |
* Algebraic type class hierarchy of euclidean (semi)rings in HOL:
|
wenzelm@66472
|
672 |
euclidean_(semi)ring, euclidean_(semi)ring_cancel,
|
wenzelm@66472
|
673 |
unique_euclidean_(semi)ring; instantiation requires provision of a
|
wenzelm@66472
|
674 |
euclidean size.
|
wenzelm@66472
|
675 |
|
wenzelm@66472
|
676 |
* Theory "HOL-Number_Theory.Euclidean_Algorithm" has been reworked:
|
wenzelm@66472
|
677 |
- Euclidean induction is available as rule eucl_induct.
|
wenzelm@66472
|
678 |
- Constants Euclidean_Algorithm.gcd, Euclidean_Algorithm.lcm,
|
wenzelm@66472
|
679 |
Euclidean_Algorithm.Gcd and Euclidean_Algorithm.Lcm allow
|
wenzelm@66472
|
680 |
easy instantiation of euclidean (semi)rings as GCD (semi)rings.
|
wenzelm@66472
|
681 |
- Coefficients obtained by extended euclidean algorithm are
|
wenzelm@66472
|
682 |
available as "bezout_coefficients".
|
wenzelm@66472
|
683 |
INCOMPATIBILITY.
|
wenzelm@66472
|
684 |
|
wenzelm@66472
|
685 |
* Theory "Number_Theory.Totient" introduces basic notions about Euler's
|
wenzelm@66472
|
686 |
totient function previously hidden as solitary example in theory
|
wenzelm@66472
|
687 |
Residues. Definition changed so that "totient 1 = 1" in agreement with
|
wenzelm@66472
|
688 |
the literature. Minor INCOMPATIBILITY.
|
wenzelm@66472
|
689 |
|
wenzelm@66542
|
690 |
* New styles in theory "HOL-Library.LaTeXsugar":
|
nipkow@66541
|
691 |
- "dummy_pats" for printing equations with "_" on the lhs;
|
nipkow@66541
|
692 |
- "eta_expand" for printing eta-expanded terms.
|
nipkow@66541
|
693 |
|
wenzelm@66472
|
694 |
* Theory "HOL-Library.Permutations": theorem bij_swap_ompose_bij has
|
wenzelm@66472
|
695 |
been renamed to bij_swap_compose_bij. INCOMPATIBILITY.
|
wenzelm@66472
|
696 |
|
lp15@66643
|
697 |
* New theory "HOL-Library.Going_To_Filter" providing the "f going_to F"
|
eberlm@66488
|
698 |
filter for describing points x such that f(x) is in the filter F.
|
eberlm@66488
|
699 |
|
eberlm@66480
|
700 |
* Theory "HOL-Library.Formal_Power_Series": constants X/E/L/F have been
|
eberlm@66480
|
701 |
renamed to fps_X/fps_exp/fps_ln/fps_hypergeo to avoid polluting the name
|
wenzelm@66472
|
702 |
space. INCOMPATIBILITY.
|
wenzelm@66472
|
703 |
|
wenzelm@66472
|
704 |
* Theory "HOL-Library.FinFun" has been moved to AFP (again).
|
wenzelm@66472
|
705 |
INCOMPATIBILITY.
|
wenzelm@66472
|
706 |
|
wenzelm@66472
|
707 |
* Theory "HOL-Library.FuncSet": some old and rarely used ASCII
|
wenzelm@66472
|
708 |
replacement syntax has been removed. INCOMPATIBILITY, standard syntax
|
wenzelm@66472
|
709 |
with symbols should be used instead. The subsequent commands help to
|
wenzelm@66472
|
710 |
reproduce the old forms, e.g. to simplify porting old theories:
|
wenzelm@66472
|
711 |
|
wenzelm@66472
|
712 |
syntax (ASCII)
|
wenzelm@66472
|
713 |
"_PiE" :: "pttrn \<Rightarrow> 'a set \<Rightarrow> 'b set \<Rightarrow> ('a \<Rightarrow> 'b) set" ("(3PIE _:_./ _)" 10)
|
wenzelm@66472
|
714 |
"_Pi" :: "pttrn \<Rightarrow> 'a set \<Rightarrow> 'b set \<Rightarrow> ('a \<Rightarrow> 'b) set" ("(3PI _:_./ _)" 10)
|
wenzelm@66472
|
715 |
"_lam" :: "pttrn \<Rightarrow> 'a set \<Rightarrow> 'a \<Rightarrow> 'b \<Rightarrow> ('a \<Rightarrow> 'b)" ("(3%_:_./ _)" [0,0,3] 3)
|
wenzelm@66472
|
716 |
|
wenzelm@66472
|
717 |
* Theory "HOL-Library.Multiset": the simprocs on subsets operators of
|
wenzelm@66472
|
718 |
multisets have been renamed:
|
wenzelm@66472
|
719 |
|
wenzelm@66472
|
720 |
msetless_cancel_numerals ~> msetsubset_cancel
|
wenzelm@66472
|
721 |
msetle_cancel_numerals ~> msetsubset_eq_cancel
|
wenzelm@66472
|
722 |
|
wenzelm@66472
|
723 |
INCOMPATIBILITY.
|
wenzelm@66472
|
724 |
|
lars@66481
|
725 |
* Theory "HOL-Library.Pattern_Aliases" provides input and output syntax
|
lars@66481
|
726 |
for pattern aliases as known from Haskell, Scala and ML.
|
blanchet@65515
|
727 |
|
Andreas@66563
|
728 |
* Theory "HOL-Library.Uprod" formalizes the type of unordered pairs.
|
Andreas@66563
|
729 |
|
wenzelm@64898
|
730 |
* Session HOL-Analysis: more material involving arcs, paths, covering
|
wenzelm@66650
|
731 |
spaces, innessential maps, retracts, infinite products, simplicial
|
wenzelm@66650
|
732 |
complexes. Baire Category theorem. Major results include the Jordan
|
wenzelm@66650
|
733 |
Curve Theorem and the Great Picard Theorem.
|
wenzelm@66472
|
734 |
|
wenzelm@66472
|
735 |
* Session HOL-Algebra has been extended by additional lattice theory:
|
wenzelm@66472
|
736 |
the Knaster-Tarski fixed point theorem and Galois Connections.
|
wenzelm@66472
|
737 |
|
wenzelm@66472
|
738 |
* Sessions HOL-Computational_Algebra and HOL-Number_Theory: new notions
|
wenzelm@66472
|
739 |
of squarefreeness, n-th powers, and prime powers.
|
wenzelm@66472
|
740 |
|
wenzelm@66472
|
741 |
* Session "HOL-Computional_Algebra" covers many previously scattered
|
wenzelm@66472
|
742 |
theories, notably Euclidean_Algorithm, Factorial_Ring,
|
wenzelm@66472
|
743 |
Formal_Power_Series, Fraction_Field, Fundamental_Theorem_Algebra,
|
wenzelm@66472
|
744 |
Normalized_Fraction, Polynomial_FPS, Polynomial, Primes. Minor
|
wenzelm@66472
|
745 |
INCOMPATIBILITY.
|
Mathias@65027
|
746 |
|
wenzelm@60331
|
747 |
|
wenzelm@64844
|
748 |
*** System ***
|
wenzelm@64844
|
749 |
|
wenzelm@66474
|
750 |
* Isabelle/Scala: the SQL module supports access to relational
|
wenzelm@66474
|
751 |
databases, either as plain file (SQLite) or full-scale server
|
wenzelm@66474
|
752 |
(PostgreSQL via local port or remote ssh connection).
|
wenzelm@66474
|
753 |
|
wenzelm@66474
|
754 |
* Results of "isabelle build" are recorded as SQLite database (i.e.
|
wenzelm@66474
|
755 |
"Application File Format" in the sense of
|
wenzelm@66474
|
756 |
https://www.sqlite.org/appfileformat.html). This allows systematic
|
wenzelm@66474
|
757 |
access via operations from module Sessions.Store in Isabelle/Scala.
|
wenzelm@66474
|
758 |
|
wenzelm@66472
|
759 |
* System option "parallel_proofs" is 1 by default (instead of more
|
wenzelm@66472
|
760 |
aggressive 2). This requires less heap space and avoids burning parallel
|
wenzelm@66472
|
761 |
CPU cycles, while full subproof parallelization is enabled for repeated
|
wenzelm@66472
|
762 |
builds (according to parallel_subproofs_threshold).
|
wenzelm@65072
|
763 |
|
wenzelm@65448
|
764 |
* System option "record_proofs" allows to change the global
|
wenzelm@65448
|
765 |
Proofterm.proofs variable for a session. Regular values are are 0, 1, 2;
|
wenzelm@65448
|
766 |
a negative value means the current state in the ML heap image remains
|
wenzelm@65448
|
767 |
unchanged.
|
wenzelm@65448
|
768 |
|
wenzelm@66472
|
769 |
* Isabelle settings variable ISABELLE_SCALA_BUILD_OPTIONS has been
|
wenzelm@66472
|
770 |
renamed to ISABELLE_SCALAC_OPTIONS. Rare INCOMPATIBILITY.
|
wenzelm@66472
|
771 |
|
wenzelm@66472
|
772 |
* Isabelle settings variables ISABELLE_WINDOWS_PLATFORM,
|
wenzelm@66472
|
773 |
ISABELLE_WINDOWS_PLATFORM32, ISABELLE_WINDOWS_PLATFORM64 indicate the
|
wenzelm@66472
|
774 |
native Windows platform (independently of the Cygwin installation). This
|
wenzelm@66472
|
775 |
is analogous to ISABELLE_PLATFORM, ISABELLE_PLATFORM32,
|
wenzelm@66472
|
776 |
ISABELLE_PLATFORM64.
|
wenzelm@65557
|
777 |
|
wenzelm@66786
|
778 |
* Command-line tool "isabelle build_docker" builds a Docker image from
|
wenzelm@66786
|
779 |
the Isabelle application bundle for Linux. See also
|
wenzelm@66786
|
780 |
https://hub.docker.com/r/makarius/isabelle
|
wenzelm@66786
|
781 |
|
wenzelm@66473
|
782 |
* Command-line tool "isabelle vscode_server" provides a Language Server
|
wenzelm@66473
|
783 |
Protocol implementation, e.g. for the Visual Studio Code editor. It
|
wenzelm@66473
|
784 |
serves as example for alternative PIDE front-ends.
|
wenzelm@66473
|
785 |
|
wenzelm@66472
|
786 |
* Command-line tool "isabelle imports" helps to maintain theory imports
|
wenzelm@66671
|
787 |
wrt. session structure. Examples for the main Isabelle distribution:
|
wenzelm@66472
|
788 |
|
wenzelm@66472
|
789 |
isabelle imports -I -a
|
wenzelm@66472
|
790 |
isabelle imports -U -a
|
wenzelm@66472
|
791 |
isabelle imports -U -i -a
|
wenzelm@66472
|
792 |
isabelle imports -M -a -d '~~/src/Benchmarks'
|
wenzelm@66472
|
793 |
|
wenzelm@64844
|
794 |
|
wenzelm@67099
|
795 |
|
wenzelm@64072
|
796 |
New in Isabelle2016-1 (December 2016)
|
wenzelm@64072
|
797 |
-------------------------------------
|
wenzelm@62216
|
798 |
|
wenzelm@62440
|
799 |
*** General ***
|
wenzelm@62440
|
800 |
|
wenzelm@64390
|
801 |
* Splitter in proof methods "simp", "auto" and friends:
|
wenzelm@64390
|
802 |
- The syntax "split add" has been discontinued, use plain "split",
|
wenzelm@64390
|
803 |
INCOMPATIBILITY.
|
wenzelm@64390
|
804 |
- For situations with many conditional or case expressions, there is
|
wenzelm@64390
|
805 |
an alternative splitting strategy that can be much faster. It is
|
wenzelm@64390
|
806 |
selected by writing "split!" instead of "split". It applies safe
|
wenzelm@64390
|
807 |
introduction and elimination rules after each split rule. As a
|
wenzelm@64390
|
808 |
result the subgoal may be split into several subgoals.
|
wenzelm@64390
|
809 |
|
wenzelm@63273
|
810 |
* Command 'bundle' provides a local theory target to define a bundle
|
wenzelm@63273
|
811 |
from the body of specification commands (such as 'declare',
|
wenzelm@63273
|
812 |
'declaration', 'notation', 'lemmas', 'lemma'). For example:
|
wenzelm@63273
|
813 |
|
wenzelm@63273
|
814 |
bundle foo
|
wenzelm@63273
|
815 |
begin
|
wenzelm@63273
|
816 |
declare a [simp]
|
wenzelm@63273
|
817 |
declare b [intro]
|
wenzelm@63273
|
818 |
end
|
wenzelm@63272
|
819 |
|
wenzelm@63282
|
820 |
* Command 'unbundle' is like 'include', but works within a local theory
|
wenzelm@63282
|
821 |
context. Unlike "context includes ... begin", the effect of 'unbundle'
|
wenzelm@63282
|
822 |
on the target context persists, until different declarations are given.
|
wenzelm@63282
|
823 |
|
wenzelm@63977
|
824 |
* Simplified outer syntax: uniform category "name" includes long
|
wenzelm@63977
|
825 |
identifiers. Former "xname" / "nameref" / "name reference" has been
|
wenzelm@63977
|
826 |
discontinued.
|
wenzelm@63977
|
827 |
|
wenzelm@63977
|
828 |
* Embedded content (e.g. the inner syntax of types, terms, props) may be
|
wenzelm@63977
|
829 |
delimited uniformly via cartouches. This works better than old-fashioned
|
wenzelm@63977
|
830 |
quotes when sub-languages are nested.
|
wenzelm@63977
|
831 |
|
wenzelm@63977
|
832 |
* Mixfix annotations support general block properties, with syntax
|
wenzelm@63977
|
833 |
"(\<open>x=a y=b z \<dots>\<close>". Notable property names are "indent", "consistent",
|
wenzelm@63977
|
834 |
"unbreakable", "markup". The existing notation "(DIGITS" is equivalent
|
wenzelm@63977
|
835 |
to "(\<open>indent=DIGITS\<close>". The former notation "(00" for unbreakable blocks
|
wenzelm@63977
|
836 |
is superseded by "(\<open>unbreabable\<close>" --- rare INCOMPATIBILITY.
|
nipkow@63650
|
837 |
|
wenzelm@63383
|
838 |
* Proof method "blast" is more robust wrt. corner cases of Pure
|
wenzelm@63383
|
839 |
statements without object-logic judgment.
|
wenzelm@63383
|
840 |
|
wenzelm@63624
|
841 |
* Commands 'prf' and 'full_prf' are somewhat more informative (again):
|
wenzelm@63977
|
842 |
proof terms are reconstructed and cleaned from administrative thm nodes.
|
wenzelm@63977
|
843 |
|
wenzelm@63977
|
844 |
* Code generator: config option "code_timing" triggers measurements of
|
wenzelm@63977
|
845 |
different phases of code generation. See src/HOL/ex/Code_Timing.thy for
|
wenzelm@63977
|
846 |
examples.
|
wenzelm@63977
|
847 |
|
wenzelm@63977
|
848 |
* Code generator: implicits in Scala (stemming from type class
|
wenzelm@63977
|
849 |
instances) are generated into companion object of corresponding type
|
wenzelm@63977
|
850 |
class, to resolve some situations where ambiguities may occur.
|
wenzelm@63977
|
851 |
|
wenzelm@64390
|
852 |
* Solve direct: option "solve_direct_strict_warnings" gives explicit
|
wenzelm@64390
|
853 |
warnings for lemma statements with trivial proofs.
|
haftmann@64013
|
854 |
|
wenzelm@64602
|
855 |
|
wenzelm@62904
|
856 |
*** Prover IDE -- Isabelle/Scala/jEdit ***
|
wenzelm@62904
|
857 |
|
wenzelm@64527
|
858 |
* More aggressive flushing of machine-generated input, according to
|
wenzelm@64527
|
859 |
system option editor_generated_input_delay (in addition to existing
|
wenzelm@64527
|
860 |
editor_input_delay for regular user edits). This may affect overall PIDE
|
wenzelm@64527
|
861 |
reactivity and CPU usage.
|
wenzelm@64527
|
862 |
|
wenzelm@64390
|
863 |
* Syntactic indentation according to Isabelle outer syntax. Action
|
wenzelm@64390
|
864 |
"indent-lines" (shortcut C+i) indents the current line according to
|
wenzelm@64390
|
865 |
command keywords and some command substructure. Action
|
wenzelm@64390
|
866 |
"isabelle.newline" (shortcut ENTER) indents the old and the new line
|
wenzelm@64390
|
867 |
according to command keywords only; see also option
|
wenzelm@64390
|
868 |
"jedit_indent_newline".
|
wenzelm@64390
|
869 |
|
wenzelm@64390
|
870 |
* Semantic indentation for unstructured proof scripts ('apply' etc.) via
|
wenzelm@64390
|
871 |
number of subgoals. This requires information of ongoing document
|
wenzelm@64390
|
872 |
processing and may thus lag behind, when the user is editing too
|
wenzelm@64390
|
873 |
quickly; see also option "jedit_script_indent" and
|
wenzelm@64390
|
874 |
"jedit_script_indent_limit".
|
wenzelm@64390
|
875 |
|
wenzelm@64390
|
876 |
* Refined folding mode "isabelle" based on Isar syntax: 'next' and 'qed'
|
wenzelm@64390
|
877 |
are treated as delimiters for fold structure; 'begin' and 'end'
|
wenzelm@64390
|
878 |
structure of theory specifications is treated as well.
|
wenzelm@64390
|
879 |
|
wenzelm@64390
|
880 |
* Command 'proof' provides information about proof outline with cases,
|
wenzelm@64390
|
881 |
e.g. for proof methods "cases", "induct", "goal_cases".
|
wenzelm@64390
|
882 |
|
wenzelm@64390
|
883 |
* Completion templates for commands involving "begin ... end" blocks,
|
wenzelm@64390
|
884 |
e.g. 'context', 'notepad'.
|
wenzelm@64390
|
885 |
|
wenzelm@64390
|
886 |
* Sidekick parser "isabelle-context" shows nesting of context blocks
|
wenzelm@64390
|
887 |
according to 'begin' and 'end' structure.
|
wenzelm@64390
|
888 |
|
wenzelm@63977
|
889 |
* Highlighting of entity def/ref positions wrt. cursor.
|
wenzelm@63977
|
890 |
|
wenzelm@63977
|
891 |
* Action "isabelle.select-entity" (shortcut CS+ENTER) selects all
|
wenzelm@64514
|
892 |
occurrences of the formal entity at the caret position. This facilitates
|
wenzelm@63977
|
893 |
systematic renaming.
|
wenzelm@63977
|
894 |
|
wenzelm@63977
|
895 |
* PIDE document markup works across multiple Isar commands, e.g. the
|
wenzelm@63977
|
896 |
results established at the end of a proof are properly identified in the
|
wenzelm@63977
|
897 |
theorem statement.
|
wenzelm@63977
|
898 |
|
wenzelm@63977
|
899 |
* Cartouche abbreviations work both for " and ` to accomodate typical
|
wenzelm@63977
|
900 |
situations where old ASCII notation may be updated.
|
wenzelm@63977
|
901 |
|
wenzelm@63875
|
902 |
* Dockable window "Symbols" also provides access to 'abbrevs' from the
|
wenzelm@63875
|
903 |
outer syntax of the current theory buffer. This provides clickable
|
wenzelm@63875
|
904 |
syntax templates, including entries with empty abbrevs name (which are
|
wenzelm@63875
|
905 |
inaccessible via keyboard completion).
|
wenzelm@63875
|
906 |
|
wenzelm@63022
|
907 |
* IDE support for the Isabelle/Pure bootstrap process, with the
|
wenzelm@63022
|
908 |
following independent stages:
|
wenzelm@63022
|
909 |
|
wenzelm@63022
|
910 |
src/Pure/ROOT0.ML
|
wenzelm@63022
|
911 |
src/Pure/ROOT.ML
|
wenzelm@63022
|
912 |
src/Pure/Pure.thy
|
wenzelm@63022
|
913 |
src/Pure/ML_Bootstrap.thy
|
wenzelm@63022
|
914 |
|
wenzelm@63022
|
915 |
The ML ROOT files act like quasi-theories in the context of theory
|
wenzelm@63022
|
916 |
ML_Bootstrap: this allows continuous checking of all loaded ML files.
|
wenzelm@63022
|
917 |
The theory files are presented with a modified header to import Pure
|
wenzelm@63022
|
918 |
from the running Isabelle instance. Results from changed versions of
|
wenzelm@63022
|
919 |
each stage are *not* propagated to the next stage, and isolated from the
|
wenzelm@63022
|
920 |
actual Isabelle/Pure that runs the IDE itself. The sequential
|
wenzelm@63307
|
921 |
dependencies of the above files are only observed for batch build.
|
wenzelm@62904
|
922 |
|
wenzelm@63977
|
923 |
* Isabelle/ML and Standard ML files are presented in Sidekick with the
|
wenzelm@63977
|
924 |
tree structure of section headings: this special comment format is
|
wenzelm@63977
|
925 |
described in "implementation" chapter 0, e.g. (*** section ***).
|
wenzelm@63461
|
926 |
|
wenzelm@63581
|
927 |
* Additional abbreviations for syntactic completion may be specified
|
wenzelm@63871
|
928 |
within the theory header as 'abbrevs'. The theory syntax for 'keywords'
|
wenzelm@63871
|
929 |
has been simplified accordingly: optional abbrevs need to go into the
|
wenzelm@63871
|
930 |
new 'abbrevs' section.
|
wenzelm@63871
|
931 |
|
wenzelm@63871
|
932 |
* Global abbreviations via $ISABELLE_HOME/etc/abbrevs and
|
wenzelm@63871
|
933 |
$ISABELLE_HOME_USER/etc/abbrevs are no longer supported. Minor
|
wenzelm@63871
|
934 |
INCOMPATIBILITY, use 'abbrevs' within theory header instead.
|
wenzelm@63579
|
935 |
|
wenzelm@64390
|
936 |
* Action "isabelle.keymap-merge" asks the user to resolve pending
|
wenzelm@64390
|
937 |
Isabelle keymap changes that are in conflict with the current jEdit
|
wenzelm@64390
|
938 |
keymap; non-conflicting changes are always applied implicitly. This
|
wenzelm@64390
|
939 |
action is automatically invoked on Isabelle/jEdit startup and thus
|
wenzelm@64390
|
940 |
increases chances that users see new keyboard shortcuts when re-using
|
wenzelm@64390
|
941 |
old keymaps.
|
wenzelm@64390
|
942 |
|
wenzelm@63675
|
943 |
* ML and document antiquotations for file-systems paths are more uniform
|
wenzelm@63675
|
944 |
and diverse:
|
wenzelm@63675
|
945 |
|
wenzelm@63675
|
946 |
@{path NAME} -- no file-system check
|
wenzelm@63675
|
947 |
@{file NAME} -- check for plain file
|
wenzelm@63675
|
948 |
@{dir NAME} -- check for directory
|
wenzelm@63675
|
949 |
|
wenzelm@63675
|
950 |
Minor INCOMPATIBILITY, former uses of @{file} and @{file_unchecked} may
|
wenzelm@63675
|
951 |
have to be changed.
|
wenzelm@63669
|
952 |
|
wenzelm@63669
|
953 |
|
wenzelm@63977
|
954 |
*** Document preparation ***
|
wenzelm@63977
|
955 |
|
wenzelm@63977
|
956 |
* New symbol \<circle>, e.g. for temporal operator.
|
wenzelm@63977
|
957 |
|
wenzelm@64073
|
958 |
* New document and ML antiquotation @{locale} for locales, similar to
|
wenzelm@64073
|
959 |
existing antiquotation @{class}.
|
wenzelm@64073
|
960 |
|
wenzelm@63977
|
961 |
* Mixfix annotations support delimiters like \<^control>\<open>cartouche\<close> --
|
wenzelm@63977
|
962 |
this allows special forms of document output.
|
wenzelm@63977
|
963 |
|
wenzelm@63977
|
964 |
* Raw LaTeX output now works via \<^latex>\<open>...\<close> instead of raw control
|
wenzelm@63977
|
965 |
symbol \<^raw:...>. INCOMPATIBILITY, notably for LaTeXsugar.thy and its
|
wenzelm@63977
|
966 |
derivatives.
|
wenzelm@63977
|
967 |
|
wenzelm@63977
|
968 |
* \<^raw:...> symbols are no longer supported.
|
wenzelm@63977
|
969 |
|
wenzelm@63977
|
970 |
* Old 'header' command is no longer supported (legacy since
|
wenzelm@63977
|
971 |
Isabelle2015).
|
wenzelm@63977
|
972 |
|
wenzelm@63977
|
973 |
|
wenzelm@62312
|
974 |
*** Isar ***
|
wenzelm@62312
|
975 |
|
wenzelm@63180
|
976 |
* Many specification elements support structured statements with 'if' /
|
wenzelm@63180
|
977 |
'for' eigen-context, e.g. 'axiomatization', 'abbreviation',
|
wenzelm@63180
|
978 |
'definition', 'inductive', 'function'.
|
wenzelm@63180
|
979 |
|
wenzelm@63094
|
980 |
* Toplevel theorem statements support eigen-context notation with 'if' /
|
wenzelm@63284
|
981 |
'for' (in postfix), which corresponds to 'assumes' / 'fixes' in the
|
wenzelm@63094
|
982 |
traditional long statement form (in prefix). Local premises are called
|
wenzelm@63094
|
983 |
"that" or "assms", respectively. Empty premises are *not* bound in the
|
wenzelm@63094
|
984 |
context: INCOMPATIBILITY.
|
wenzelm@63094
|
985 |
|
wenzelm@63039
|
986 |
* Command 'define' introduces a local (non-polymorphic) definition, with
|
wenzelm@63039
|
987 |
optional abstraction over local parameters. The syntax resembles
|
wenzelm@63043
|
988 |
'definition' and 'obtain'. It fits better into the Isar language than
|
wenzelm@63043
|
989 |
old 'def', which is now a legacy feature.
|
wenzelm@63039
|
990 |
|
wenzelm@63059
|
991 |
* Command 'obtain' supports structured statements with 'if' / 'for'
|
wenzelm@63059
|
992 |
context.
|
wenzelm@63059
|
993 |
|
wenzelm@62312
|
994 |
* Command '\<proof>' is an alias for 'sorry', with different
|
wenzelm@62312
|
995 |
typesetting. E.g. to produce proof holes in examples and documentation.
|
wenzelm@62216
|
996 |
|
wenzelm@63977
|
997 |
* The defining position of a literal fact \<open>prop\<close> is maintained more
|
wenzelm@63977
|
998 |
carefully, and made accessible as hyperlink in the Prover IDE.
|
wenzelm@63977
|
999 |
|
wenzelm@63977
|
1000 |
* Commands 'finally' and 'ultimately' used to expose the result as
|
wenzelm@63977
|
1001 |
literal fact: this accidental behaviour has been discontinued. Rare
|
wenzelm@63977
|
1002 |
INCOMPATIBILITY, use more explicit means to refer to facts in Isar.
|
wenzelm@63977
|
1003 |
|
wenzelm@63977
|
1004 |
* Command 'axiomatization' has become more restrictive to correspond
|
wenzelm@63977
|
1005 |
better to internal axioms as singleton facts with mandatory name. Minor
|
wenzelm@63977
|
1006 |
INCOMPATIBILITY.
|
wenzelm@62939
|
1007 |
|
wenzelm@63259
|
1008 |
* Proof methods may refer to the main facts via the dynamic fact
|
wenzelm@63259
|
1009 |
"method_facts". This is particularly useful for Eisbach method
|
wenzelm@63259
|
1010 |
definitions.
|
wenzelm@63259
|
1011 |
|
wenzelm@63527
|
1012 |
* Proof method "use" allows to modify the main facts of a given method
|
wenzelm@63527
|
1013 |
expression, e.g.
|
wenzelm@63259
|
1014 |
|
wenzelm@63259
|
1015 |
(use facts in simp)
|
wenzelm@63259
|
1016 |
(use facts in \<open>simp add: ...\<close>)
|
wenzelm@63259
|
1017 |
|
wenzelm@63977
|
1018 |
* The old proof method "default" has been removed (legacy since
|
wenzelm@63977
|
1019 |
Isabelle2016). INCOMPATIBILITY, use "standard" instead.
|
wenzelm@63977
|
1020 |
|
wenzelm@62216
|
1021 |
|
haftmann@63165
|
1022 |
*** Pure ***
|
haftmann@63165
|
1023 |
|
wenzelm@63977
|
1024 |
* Pure provides basic versions of proof methods "simp" and "simp_all"
|
wenzelm@63977
|
1025 |
that only know about meta-equality (==). Potential INCOMPATIBILITY in
|
wenzelm@63977
|
1026 |
theory imports that merge Pure with e.g. Main of Isabelle/HOL: the order
|
wenzelm@63977
|
1027 |
is relevant to avoid confusion of Pure.simp vs. HOL.simp.
|
wenzelm@63977
|
1028 |
|
wenzelm@63977
|
1029 |
* The command 'unfolding' and proof method "unfold" include a second
|
wenzelm@63977
|
1030 |
stage where given equations are passed through the attribute "abs_def"
|
wenzelm@63977
|
1031 |
before rewriting. This ensures that definitions are fully expanded,
|
wenzelm@63977
|
1032 |
regardless of the actual parameters that are provided. Rare
|
wenzelm@63977
|
1033 |
INCOMPATIBILITY in some corner cases: use proof method (simp only:)
|
wenzelm@63977
|
1034 |
instead, or declare [[unfold_abs_def = false]] in the proof context.
|
wenzelm@63977
|
1035 |
|
wenzelm@63977
|
1036 |
* Type-inference improves sorts of newly introduced type variables for
|
wenzelm@63977
|
1037 |
the object-logic, using its base sort (i.e. HOL.type for Isabelle/HOL).
|
wenzelm@63977
|
1038 |
Thus terms like "f x" or "\<And>x. P x" without any further syntactic context
|
wenzelm@63977
|
1039 |
produce x::'a::type in HOL instead of x::'a::{} in Pure. Rare
|
wenzelm@63977
|
1040 |
INCOMPATIBILITY, need to provide explicit type constraints for Pure
|
wenzelm@63977
|
1041 |
types where this is really intended.
|
haftmann@63350
|
1042 |
|
haftmann@63165
|
1043 |
|
blanchet@62327
|
1044 |
*** HOL ***
|
blanchet@62327
|
1045 |
|
wenzelm@63977
|
1046 |
* New proof method "argo" using the built-in Argo solver based on SMT
|
wenzelm@63977
|
1047 |
technology. The method can be used to prove goals of quantifier-free
|
wenzelm@63977
|
1048 |
propositional logic, goals based on a combination of quantifier-free
|
wenzelm@63977
|
1049 |
propositional logic with equality, and goals based on a combination of
|
wenzelm@63977
|
1050 |
quantifier-free propositional logic with linear real arithmetic
|
wenzelm@63977
|
1051 |
including min/max/abs. See HOL/ex/Argo_Examples.thy for examples.
|
wenzelm@63977
|
1052 |
|
blanchet@66614
|
1053 |
* The new "nunchaku" command integrates the Nunchaku model finder. The
|
wenzelm@64390
|
1054 |
tool is experimental. See ~~/src/HOL/Nunchaku/Nunchaku.thy for details.
|
wenzelm@64390
|
1055 |
|
wenzelm@63977
|
1056 |
* Metis: The problem encoding has changed very slightly. This might
|
blanchet@63785
|
1057 |
break existing proofs. INCOMPATIBILITY.
|
blanchet@63785
|
1058 |
|
blanchet@63116
|
1059 |
* Sledgehammer:
|
lp15@63967
|
1060 |
- The MaSh relevance filter is now faster than before.
|
blanchet@63116
|
1061 |
- Produce syntactically correct Vampire 4.0 problem files.
|
blanchet@63116
|
1062 |
|
blanchet@62327
|
1063 |
* (Co)datatype package:
|
blanchet@62693
|
1064 |
- New commands for defining corecursive functions and reasoning about
|
blanchet@62693
|
1065 |
them in "~~/src/HOL/Library/BNF_Corec.thy": 'corec', 'corecursive',
|
blanchet@62693
|
1066 |
'friend_of_corec', and 'corecursion_upto'; and 'corec_unique' proof
|
blanchet@62842
|
1067 |
method. See 'isabelle doc corec'.
|
wenzelm@63977
|
1068 |
- The predicator :: ('a \<Rightarrow> bool) \<Rightarrow> 'a F \<Rightarrow> bool is now a first-class
|
blanchet@63855
|
1069 |
citizen in bounded natural functors.
|
blanchet@62693
|
1070 |
- 'primrec' now allows nested calls through the predicator in addition
|
blanchet@62327
|
1071 |
to the map function.
|
blanchet@63855
|
1072 |
- 'bnf' automatically discharges reflexive proof obligations.
|
blanchet@62693
|
1073 |
- 'bnf' outputs a slightly modified proof obligation expressing rel in
|
traytel@62332
|
1074 |
terms of map and set
|
blanchet@63855
|
1075 |
(not giving a specification for rel makes this one reflexive).
|
blanchet@62693
|
1076 |
- 'bnf' outputs a new proof obligation expressing pred in terms of set
|
blanchet@63855
|
1077 |
(not giving a specification for pred makes this one reflexive).
|
blanchet@63855
|
1078 |
INCOMPATIBILITY: manual 'bnf' declarations may need adjustment.
|
blanchet@62335
|
1079 |
- Renamed lemmas:
|
blanchet@62335
|
1080 |
rel_prod_apply ~> rel_prod_inject
|
blanchet@62335
|
1081 |
pred_prod_apply ~> pred_prod_inject
|
blanchet@62335
|
1082 |
INCOMPATIBILITY.
|
blanchet@62536
|
1083 |
- The "size" plugin has been made compatible again with locales.
|
blanchet@63855
|
1084 |
- The theorems about "rel" and "set" may have a slightly different (but
|
blanchet@63855
|
1085 |
equivalent) form.
|
blanchet@63855
|
1086 |
INCOMPATIBILITY.
|
blanchet@62327
|
1087 |
|
wenzelm@63977
|
1088 |
* The 'coinductive' command produces a proper coinduction rule for
|
wenzelm@63977
|
1089 |
mutual coinductive predicates. This new rule replaces the old rule,
|
wenzelm@63977
|
1090 |
which exposed details of the internal fixpoint construction and was
|
wenzelm@63977
|
1091 |
hard to use. INCOMPATIBILITY.
|
wenzelm@63977
|
1092 |
|
wenzelm@63977
|
1093 |
* New abbreviations for negated existence (but not bounded existence):
|
wenzelm@63977
|
1094 |
|
wenzelm@63977
|
1095 |
\<nexists>x. P x \<equiv> \<not> (\<exists>x. P x)
|
wenzelm@63977
|
1096 |
\<nexists>!x. P x \<equiv> \<not> (\<exists>!x. P x)
|
wenzelm@63977
|
1097 |
|
wenzelm@63977
|
1098 |
* The print mode "HOL" for ASCII syntax of binders "!", "?", "?!", "@"
|
wenzelm@63977
|
1099 |
has been removed for output. It is retained for input only, until it is
|
wenzelm@63977
|
1100 |
eliminated altogether.
|
wenzelm@63977
|
1101 |
|
wenzelm@63977
|
1102 |
* The unique existence quantifier no longer provides 'binder' syntax,
|
wenzelm@63977
|
1103 |
but uses syntax translations (as for bounded unique existence). Thus
|
wenzelm@63977
|
1104 |
iterated quantification \<exists>!x y. P x y with its slightly confusing
|
wenzelm@63977
|
1105 |
sequential meaning \<exists>!x. \<exists>!y. P x y is no longer possible. Instead,
|
wenzelm@63977
|
1106 |
pattern abstraction admits simultaneous unique existence \<exists>!(x, y). P x y
|
wenzelm@63977
|
1107 |
(analogous to existing notation \<exists>!(x, y)\<in>A. P x y). Potential
|
wenzelm@63977
|
1108 |
INCOMPATIBILITY in rare situations.
|
wenzelm@63977
|
1109 |
|
wenzelm@63977
|
1110 |
* Conventional syntax "%(). t" for unit abstractions. Slight syntactic
|
wenzelm@63977
|
1111 |
INCOMPATIBILITY.
|
wenzelm@63977
|
1112 |
|
wenzelm@64390
|
1113 |
* Renamed constants and corresponding theorems:
|
wenzelm@64390
|
1114 |
|
wenzelm@64390
|
1115 |
setsum ~> sum
|
wenzelm@64390
|
1116 |
setprod ~> prod
|
wenzelm@64390
|
1117 |
listsum ~> sum_list
|
wenzelm@64390
|
1118 |
listprod ~> prod_list
|
wenzelm@64390
|
1119 |
|
wenzelm@64390
|
1120 |
INCOMPATIBILITY.
|
wenzelm@64390
|
1121 |
|
wenzelm@64390
|
1122 |
* Sligthly more standardized theorem names:
|
wenzelm@64390
|
1123 |
sgn_times ~> sgn_mult
|
wenzelm@64390
|
1124 |
sgn_mult' ~> Real_Vector_Spaces.sgn_mult
|
wenzelm@64390
|
1125 |
divide_zero_left ~> div_0
|
wenzelm@64390
|
1126 |
zero_mod_left ~> mod_0
|
wenzelm@64390
|
1127 |
divide_zero ~> div_by_0
|
wenzelm@64390
|
1128 |
divide_1 ~> div_by_1
|
wenzelm@64390
|
1129 |
nonzero_mult_divide_cancel_left ~> nonzero_mult_div_cancel_left
|
wenzelm@64390
|
1130 |
div_mult_self1_is_id ~> nonzero_mult_div_cancel_left
|
wenzelm@64390
|
1131 |
nonzero_mult_divide_cancel_right ~> nonzero_mult_div_cancel_right
|
wenzelm@64390
|
1132 |
div_mult_self2_is_id ~> nonzero_mult_div_cancel_right
|
wenzelm@64390
|
1133 |
is_unit_divide_mult_cancel_left ~> is_unit_div_mult_cancel_left
|
wenzelm@64390
|
1134 |
is_unit_divide_mult_cancel_right ~> is_unit_div_mult_cancel_right
|
wenzelm@64390
|
1135 |
mod_div_equality ~> div_mult_mod_eq
|
wenzelm@64390
|
1136 |
mod_div_equality2 ~> mult_div_mod_eq
|
wenzelm@64390
|
1137 |
mod_div_equality3 ~> mod_div_mult_eq
|
wenzelm@64390
|
1138 |
mod_div_equality4 ~> mod_mult_div_eq
|
wenzelm@64390
|
1139 |
minus_div_eq_mod ~> minus_div_mult_eq_mod
|
wenzelm@64390
|
1140 |
minus_div_eq_mod2 ~> minus_mult_div_eq_mod
|
wenzelm@64390
|
1141 |
minus_mod_eq_div ~> minus_mod_eq_div_mult
|
wenzelm@64390
|
1142 |
minus_mod_eq_div2 ~> minus_mod_eq_mult_div
|
wenzelm@64390
|
1143 |
div_mod_equality' ~> minus_mod_eq_div_mult [symmetric]
|
wenzelm@64390
|
1144 |
mod_div_equality' ~> minus_div_mult_eq_mod [symmetric]
|
wenzelm@64390
|
1145 |
zmod_zdiv_equality ~> mult_div_mod_eq [symmetric]
|
wenzelm@64390
|
1146 |
zmod_zdiv_equality' ~> minus_div_mult_eq_mod [symmetric]
|
wenzelm@64390
|
1147 |
Divides.mult_div_cancel ~> minus_mod_eq_mult_div [symmetric]
|
wenzelm@64390
|
1148 |
mult_div_cancel ~> minus_mod_eq_mult_div [symmetric]
|
wenzelm@64390
|
1149 |
zmult_div_cancel ~> minus_mod_eq_mult_div [symmetric]
|
wenzelm@64390
|
1150 |
div_1 ~> div_by_Suc_0
|
wenzelm@64390
|
1151 |
mod_1 ~> mod_by_Suc_0
|
wenzelm@64390
|
1152 |
INCOMPATIBILITY.
|
wenzelm@64390
|
1153 |
|
wenzelm@64390
|
1154 |
* New type class "idom_abs_sgn" specifies algebraic properties
|
wenzelm@64390
|
1155 |
of sign and absolute value functions. Type class "sgn_if" has
|
wenzelm@64390
|
1156 |
disappeared. Slight INCOMPATIBILITY.
|
wenzelm@64390
|
1157 |
|
wenzelm@64390
|
1158 |
* Dedicated syntax LENGTH('a) for length of types.
|
wenzelm@64390
|
1159 |
|
wenzelm@63977
|
1160 |
* Characters (type char) are modelled as finite algebraic type
|
wenzelm@63977
|
1161 |
corresponding to {0..255}.
|
wenzelm@63977
|
1162 |
|
wenzelm@63977
|
1163 |
- Logical representation:
|
wenzelm@63977
|
1164 |
* 0 is instantiated to the ASCII zero character.
|
wenzelm@63977
|
1165 |
* All other characters are represented as "Char n"
|
wenzelm@63977
|
1166 |
with n being a raw numeral expression less than 256.
|
wenzelm@63977
|
1167 |
* Expressions of the form "Char n" with n greater than 255
|
wenzelm@63977
|
1168 |
are non-canonical.
|
wenzelm@63977
|
1169 |
- Printing and parsing:
|
wenzelm@63977
|
1170 |
* Printable characters are printed and parsed as "CHR ''\<dots>''"
|
wenzelm@63977
|
1171 |
(as before).
|
wenzelm@63977
|
1172 |
* The ASCII zero character is printed and parsed as "0".
|
wenzelm@63977
|
1173 |
* All other canonical characters are printed as "CHR 0xXX"
|
wenzelm@63977
|
1174 |
with XX being the hexadecimal character code. "CHR n"
|
wenzelm@63977
|
1175 |
is parsable for every numeral expression n.
|
wenzelm@63977
|
1176 |
* Non-canonical characters have no special syntax and are
|
wenzelm@63977
|
1177 |
printed as their logical representation.
|
wenzelm@63977
|
1178 |
- Explicit conversions from and to the natural numbers are
|
wenzelm@63977
|
1179 |
provided as char_of_nat, nat_of_char (as before).
|
wenzelm@63977
|
1180 |
- The auxiliary nibble type has been discontinued.
|
wenzelm@63977
|
1181 |
|
wenzelm@63977
|
1182 |
INCOMPATIBILITY.
|
wenzelm@63977
|
1183 |
|
wenzelm@63977
|
1184 |
* Type class "div" with operation "mod" renamed to type class "modulo"
|
wenzelm@63977
|
1185 |
with operation "modulo", analogously to type class "divide". This
|
wenzelm@63977
|
1186 |
eliminates the need to qualify any of those names in the presence of
|
wenzelm@63977
|
1187 |
infix "mod" syntax. INCOMPATIBILITY.
|
wenzelm@63977
|
1188 |
|
wenzelm@63979
|
1189 |
* Statements and proofs of Knaster-Tarski fixpoint combinators lfp/gfp
|
wenzelm@63979
|
1190 |
have been clarified. The fixpoint properties are lfp_fixpoint, its
|
wenzelm@63979
|
1191 |
symmetric lfp_unfold (as before), and the duals for gfp. Auxiliary items
|
wenzelm@63979
|
1192 |
for the proof (lfp_lemma2 etc.) are no longer exported, but can be
|
wenzelm@63979
|
1193 |
easily recovered by composition with eq_refl. Minor INCOMPATIBILITY.
|
wenzelm@63979
|
1194 |
|
wenzelm@63977
|
1195 |
* Constant "surj" is a mere input abbreviation, to avoid hiding an
|
wenzelm@63977
|
1196 |
equation in term output. Minor INCOMPATIBILITY.
|
wenzelm@63977
|
1197 |
|
wenzelm@63977
|
1198 |
* Command 'code_reflect' accepts empty constructor lists for datatypes,
|
wenzelm@63977
|
1199 |
which renders those abstract effectively.
|
wenzelm@63977
|
1200 |
|
wenzelm@63977
|
1201 |
* Command 'export_code' checks given constants for abstraction
|
wenzelm@63977
|
1202 |
violations: a small guarantee that given constants specify a safe
|
wenzelm@63977
|
1203 |
interface for the generated code.
|
wenzelm@63977
|
1204 |
|
wenzelm@63977
|
1205 |
* Code generation for Scala: ambiguous implicts in class diagrams are
|
wenzelm@63977
|
1206 |
spelt out explicitly.
|
wenzelm@63977
|
1207 |
|
wenzelm@63977
|
1208 |
* Static evaluators (Code_Evaluation.static_* in Isabelle/ML) rely on
|
wenzelm@63977
|
1209 |
explicitly provided auxiliary definitions for required type class
|
wenzelm@64390
|
1210 |
dictionaries rather than half-working magic. INCOMPATIBILITY, see the
|
wenzelm@64390
|
1211 |
tutorial on code generation for details.
|
wenzelm@64390
|
1212 |
|
wenzelm@64390
|
1213 |
* Theory Set_Interval: substantial new theorems on indexed sums and
|
wenzelm@64390
|
1214 |
products.
|
wenzelm@63977
|
1215 |
|
wenzelm@63977
|
1216 |
* Locale bijection establishes convenient default simp rules such as
|
wenzelm@63977
|
1217 |
"inv f (f a) = a" for total bijections.
|
wenzelm@63977
|
1218 |
|
wenzelm@63977
|
1219 |
* Abstract locales semigroup, abel_semigroup, semilattice,
|
wenzelm@63977
|
1220 |
semilattice_neutr, ordering, ordering_top, semilattice_order,
|
wenzelm@63977
|
1221 |
semilattice_neutr_order, comm_monoid_set, semilattice_set,
|
wenzelm@63977
|
1222 |
semilattice_neutr_set, semilattice_order_set,
|
wenzelm@63977
|
1223 |
semilattice_order_neutr_set monoid_list, comm_monoid_list,
|
wenzelm@63977
|
1224 |
comm_monoid_list_set, comm_monoid_mset, comm_monoid_fun use boldified
|
wenzelm@63977
|
1225 |
syntax uniformly that does not clash with corresponding global syntax.
|
wenzelm@63977
|
1226 |
INCOMPATIBILITY.
|
wenzelm@63977
|
1227 |
|
wenzelm@63977
|
1228 |
* Former locale lifting_syntax is now a bundle, which is easier to
|
wenzelm@63977
|
1229 |
include in a local context or theorem statement, e.g. "context includes
|
wenzelm@63977
|
1230 |
lifting_syntax begin ... end". Minor INCOMPATIBILITY.
|
wenzelm@63977
|
1231 |
|
wenzelm@63807
|
1232 |
* Some old / obsolete theorems have been renamed / removed, potential
|
wenzelm@63807
|
1233 |
INCOMPATIBILITY.
|
wenzelm@63807
|
1234 |
|
wenzelm@63807
|
1235 |
nat_less_cases -- removed, use linorder_cases instead
|
wenzelm@63807
|
1236 |
inv_image_comp -- removed, use image_inv_f_f instead
|
wenzelm@63807
|
1237 |
image_surj_f_inv_f ~> image_f_inv_f
|
wenzelm@63113
|
1238 |
|
Mathias@63456
|
1239 |
* Some theorems about groups and orders have been generalised from
|
Mathias@63456
|
1240 |
groups to semi-groups that are also monoids:
|
Mathias@63456
|
1241 |
le_add_same_cancel1
|
Mathias@63456
|
1242 |
le_add_same_cancel2
|
Mathias@63456
|
1243 |
less_add_same_cancel1
|
Mathias@63456
|
1244 |
less_add_same_cancel2
|
Mathias@63456
|
1245 |
add_le_same_cancel1
|
Mathias@63456
|
1246 |
add_le_same_cancel2
|
Mathias@63456
|
1247 |
add_less_same_cancel1
|
Mathias@63456
|
1248 |
add_less_same_cancel2
|
Mathias@63456
|
1249 |
|
Mathias@63456
|
1250 |
* Some simplifications theorems about rings have been removed, since
|
Mathias@63456
|
1251 |
superseeded by a more general version:
|
Mathias@63456
|
1252 |
less_add_cancel_left_greater_zero ~> less_add_same_cancel1
|
Mathias@63456
|
1253 |
less_add_cancel_right_greater_zero ~> less_add_same_cancel2
|
Mathias@63456
|
1254 |
less_eq_add_cancel_left_greater_eq_zero ~> le_add_same_cancel1
|
Mathias@63456
|
1255 |
less_eq_add_cancel_right_greater_eq_zero ~> le_add_same_cancel2
|
Mathias@63456
|
1256 |
less_eq_add_cancel_left_less_eq_zero ~> add_le_same_cancel1
|
Mathias@63456
|
1257 |
less_eq_add_cancel_right_less_eq_zero ~> add_le_same_cancel2
|
Mathias@63456
|
1258 |
less_add_cancel_left_less_zero ~> add_less_same_cancel1
|
Mathias@63456
|
1259 |
less_add_cancel_right_less_zero ~> add_less_same_cancel2
|
Mathias@63456
|
1260 |
INCOMPATIBILITY.
|
Mathias@63456
|
1261 |
|
wenzelm@62407
|
1262 |
* Renamed split_if -> if_split and split_if_asm -> if_split_asm to
|
wenzelm@62407
|
1263 |
resemble the f.split naming convention, INCOMPATIBILITY.
|
nipkow@62396
|
1264 |
|
wenzelm@63977
|
1265 |
* Added class topological_monoid.
|
wenzelm@63977
|
1266 |
|
wenzelm@64391
|
1267 |
* The following theorems have been renamed:
|
wenzelm@64391
|
1268 |
|
nipkow@64457
|
1269 |
setsum_left_distrib ~> sum_distrib_right
|
nipkow@64457
|
1270 |
setsum_right_distrib ~> sum_distrib_left
|
wenzelm@64391
|
1271 |
|
wenzelm@64391
|
1272 |
INCOMPATIBILITY.
|
wenzelm@64391
|
1273 |
|
wenzelm@64391
|
1274 |
* Compound constants INFIMUM and SUPREMUM are mere abbreviations now.
|
wenzelm@64391
|
1275 |
INCOMPATIBILITY.
|
wenzelm@64391
|
1276 |
|
wenzelm@64391
|
1277 |
* "Gcd (f ` A)" and "Lcm (f ` A)" are printed with optional
|
wenzelm@64391
|
1278 |
comprehension-like syntax analogously to "Inf (f ` A)" and "Sup (f `
|
wenzelm@64391
|
1279 |
A)".
|
wenzelm@64391
|
1280 |
|
wenzelm@64391
|
1281 |
* Class semiring_Lcd merged into semiring_Gcd. INCOMPATIBILITY.
|
wenzelm@64391
|
1282 |
|
wenzelm@64391
|
1283 |
* The type class ordered_comm_monoid_add is now called
|
wenzelm@64391
|
1284 |
ordered_cancel_comm_monoid_add. A new type class ordered_comm_monoid_add
|
wenzelm@64391
|
1285 |
is introduced as the combination of ordered_ab_semigroup_add +
|
wenzelm@64391
|
1286 |
comm_monoid_add. INCOMPATIBILITY.
|
wenzelm@64391
|
1287 |
|
wenzelm@64391
|
1288 |
* Introduced the type classes canonically_ordered_comm_monoid_add and
|
wenzelm@64391
|
1289 |
dioid.
|
wenzelm@64391
|
1290 |
|
wenzelm@64391
|
1291 |
* Introduced the type class ordered_ab_semigroup_monoid_add_imp_le. When
|
wenzelm@64391
|
1292 |
instantiating linordered_semiring_strict and ordered_ab_group_add, an
|
wenzelm@64391
|
1293 |
explicit instantiation of ordered_ab_semigroup_monoid_add_imp_le might
|
wenzelm@64391
|
1294 |
be required. INCOMPATIBILITY.
|
nipkow@63117
|
1295 |
|
haftmann@62348
|
1296 |
* Dropped various legacy fact bindings, whose replacements are often
|
haftmann@62348
|
1297 |
of a more general type also:
|
haftmann@62348
|
1298 |
lcm_left_commute_nat ~> lcm.left_commute
|
haftmann@62348
|
1299 |
lcm_left_commute_int ~> lcm.left_commute
|
haftmann@62348
|
1300 |
gcd_left_commute_nat ~> gcd.left_commute
|
haftmann@62348
|
1301 |
gcd_left_commute_int ~> gcd.left_commute
|
haftmann@62348
|
1302 |
gcd_greatest_iff_nat ~> gcd_greatest_iff
|
haftmann@62348
|
1303 |
gcd_greatest_iff_int ~> gcd_greatest_iff
|
haftmann@62348
|
1304 |
coprime_dvd_mult_nat ~> coprime_dvd_mult
|
haftmann@62348
|
1305 |
coprime_dvd_mult_int ~> coprime_dvd_mult
|
haftmann@62348
|
1306 |
zpower_numeral_even ~> power_numeral_even
|
haftmann@62348
|
1307 |
gcd_mult_cancel_nat ~> gcd_mult_cancel
|
haftmann@62348
|
1308 |
gcd_mult_cancel_int ~> gcd_mult_cancel
|
haftmann@62348
|
1309 |
div_gcd_coprime_nat ~> div_gcd_coprime
|
haftmann@62348
|
1310 |
div_gcd_coprime_int ~> div_gcd_coprime
|
haftmann@62348
|
1311 |
zpower_numeral_odd ~> power_numeral_odd
|
haftmann@62348
|
1312 |
zero_less_int_conv ~> of_nat_0_less_iff
|
haftmann@62348
|
1313 |
gcd_greatest_nat ~> gcd_greatest
|
haftmann@62348
|
1314 |
gcd_greatest_int ~> gcd_greatest
|
haftmann@62348
|
1315 |
coprime_mult_nat ~> coprime_mult
|
haftmann@62348
|
1316 |
coprime_mult_int ~> coprime_mult
|
haftmann@62348
|
1317 |
lcm_commute_nat ~> lcm.commute
|
haftmann@62348
|
1318 |
lcm_commute_int ~> lcm.commute
|
haftmann@62348
|
1319 |
int_less_0_conv ~> of_nat_less_0_iff
|
haftmann@62348
|
1320 |
gcd_commute_nat ~> gcd.commute
|
haftmann@62348
|
1321 |
gcd_commute_int ~> gcd.commute
|
haftmann@62348
|
1322 |
Gcd_insert_nat ~> Gcd_insert
|
haftmann@62348
|
1323 |
Gcd_insert_int ~> Gcd_insert
|
haftmann@62348
|
1324 |
of_int_int_eq ~> of_int_of_nat_eq
|
haftmann@62348
|
1325 |
lcm_least_nat ~> lcm_least
|
haftmann@62348
|
1326 |
lcm_least_int ~> lcm_least
|
haftmann@62348
|
1327 |
lcm_assoc_nat ~> lcm.assoc
|
haftmann@62348
|
1328 |
lcm_assoc_int ~> lcm.assoc
|
haftmann@62348
|
1329 |
int_le_0_conv ~> of_nat_le_0_iff
|
haftmann@62348
|
1330 |
int_eq_0_conv ~> of_nat_eq_0_iff
|
haftmann@62348
|
1331 |
Gcd_empty_nat ~> Gcd_empty
|
haftmann@62348
|
1332 |
Gcd_empty_int ~> Gcd_empty
|
haftmann@62348
|
1333 |
gcd_assoc_nat ~> gcd.assoc
|
haftmann@62348
|
1334 |
gcd_assoc_int ~> gcd.assoc
|
haftmann@62348
|
1335 |
zero_zle_int ~> of_nat_0_le_iff
|
haftmann@62348
|
1336 |
lcm_dvd2_nat ~> dvd_lcm2
|
haftmann@62348
|
1337 |
lcm_dvd2_int ~> dvd_lcm2
|
haftmann@62348
|
1338 |
lcm_dvd1_nat ~> dvd_lcm1
|
haftmann@62348
|
1339 |
lcm_dvd1_int ~> dvd_lcm1
|
haftmann@62348
|
1340 |
gcd_zero_nat ~> gcd_eq_0_iff
|
haftmann@62348
|
1341 |
gcd_zero_int ~> gcd_eq_0_iff
|
haftmann@62348
|
1342 |
gcd_dvd2_nat ~> gcd_dvd2
|
haftmann@62348
|
1343 |
gcd_dvd2_int ~> gcd_dvd2
|
haftmann@62348
|
1344 |
gcd_dvd1_nat ~> gcd_dvd1
|
haftmann@62348
|
1345 |
gcd_dvd1_int ~> gcd_dvd1
|
haftmann@62348
|
1346 |
int_numeral ~> of_nat_numeral
|
haftmann@62348
|
1347 |
lcm_ac_nat ~> ac_simps
|
haftmann@62348
|
1348 |
lcm_ac_int ~> ac_simps
|
haftmann@62348
|
1349 |
gcd_ac_nat ~> ac_simps
|
haftmann@62348
|
1350 |
gcd_ac_int ~> ac_simps
|
haftmann@62348
|
1351 |
abs_int_eq ~> abs_of_nat
|
haftmann@62348
|
1352 |
zless_int ~> of_nat_less_iff
|
haftmann@62348
|
1353 |
zdiff_int ~> of_nat_diff
|
haftmann@62348
|
1354 |
zadd_int ~> of_nat_add
|
haftmann@62348
|
1355 |
int_mult ~> of_nat_mult
|
haftmann@62348
|
1356 |
int_Suc ~> of_nat_Suc
|
haftmann@62348
|
1357 |
inj_int ~> inj_of_nat
|
haftmann@62348
|
1358 |
int_1 ~> of_nat_1
|
haftmann@62348
|
1359 |
int_0 ~> of_nat_0
|
haftmann@62353
|
1360 |
Lcm_empty_nat ~> Lcm_empty
|
haftmann@62353
|
1361 |
Lcm_empty_int ~> Lcm_empty
|
haftmann@62353
|
1362 |
Lcm_insert_nat ~> Lcm_insert
|
haftmann@62353
|
1363 |
Lcm_insert_int ~> Lcm_insert
|
haftmann@62353
|
1364 |
comp_fun_idem_gcd_nat ~> comp_fun_idem_gcd
|
haftmann@62353
|
1365 |
comp_fun_idem_gcd_int ~> comp_fun_idem_gcd
|
haftmann@62353
|
1366 |
comp_fun_idem_lcm_nat ~> comp_fun_idem_lcm
|
haftmann@62353
|
1367 |
comp_fun_idem_lcm_int ~> comp_fun_idem_lcm
|
haftmann@62353
|
1368 |
Lcm_eq_0 ~> Lcm_eq_0_I
|
haftmann@62353
|
1369 |
Lcm0_iff ~> Lcm_0_iff
|
haftmann@62353
|
1370 |
Lcm_dvd_int ~> Lcm_least
|
haftmann@62353
|
1371 |
divides_mult_nat ~> divides_mult
|
haftmann@62353
|
1372 |
divides_mult_int ~> divides_mult
|
haftmann@62353
|
1373 |
lcm_0_nat ~> lcm_0_right
|
haftmann@62353
|
1374 |
lcm_0_int ~> lcm_0_right
|
haftmann@62353
|
1375 |
lcm_0_left_nat ~> lcm_0_left
|
haftmann@62353
|
1376 |
lcm_0_left_int ~> lcm_0_left
|
haftmann@62353
|
1377 |
dvd_gcd_D1_nat ~> dvd_gcdD1
|
haftmann@62353
|
1378 |
dvd_gcd_D1_int ~> dvd_gcdD1
|
haftmann@62353
|
1379 |
dvd_gcd_D2_nat ~> dvd_gcdD2
|
haftmann@62353
|
1380 |
dvd_gcd_D2_int ~> dvd_gcdD2
|
haftmann@62353
|
1381 |
coprime_dvd_mult_iff_nat ~> coprime_dvd_mult_iff
|
haftmann@62353
|
1382 |
coprime_dvd_mult_iff_int ~> coprime_dvd_mult_iff
|
haftmann@62348
|
1383 |
realpow_minus_mult ~> power_minus_mult
|
haftmann@62348
|
1384 |
realpow_Suc_le_self ~> power_Suc_le_self
|
haftmann@62353
|
1385 |
dvd_Gcd, dvd_Gcd_nat, dvd_Gcd_int removed in favour of Gcd_greatest
|
haftmann@62347
|
1386 |
INCOMPATIBILITY.
|
haftmann@62347
|
1387 |
|
lp15@63967
|
1388 |
* Renamed HOL/Quotient_Examples/FSet.thy to
|
wenzelm@63977
|
1389 |
HOL/Quotient_Examples/Quotient_FSet.thy INCOMPATIBILITY.
|
wenzelm@63977
|
1390 |
|
wenzelm@64390
|
1391 |
* Session HOL-Library: theory FinFun bundles "finfun_syntax" and
|
wenzelm@64390
|
1392 |
"no_finfun_syntax" allow to control optional syntax in local contexts;
|
wenzelm@64390
|
1393 |
this supersedes former theory FinFun_Syntax. INCOMPATIBILITY, e.g. use
|
wenzelm@64390
|
1394 |
"unbundle finfun_syntax" to imitate import of
|
wenzelm@64390
|
1395 |
"~~/src/HOL/Library/FinFun_Syntax".
|
wenzelm@64390
|
1396 |
|
wenzelm@64390
|
1397 |
* Session HOL-Library: theory Multiset_Permutations (executably) defines
|
wenzelm@64390
|
1398 |
the set of permutations of a given set or multiset, i.e. the set of all
|
wenzelm@64390
|
1399 |
lists that contain every element of the carrier (multi-)set exactly
|
wenzelm@64390
|
1400 |
once.
|
wenzelm@64390
|
1401 |
|
wenzelm@64390
|
1402 |
* Session HOL-Library: multiset membership is now expressed using
|
wenzelm@64390
|
1403 |
set_mset rather than count.
|
wenzelm@64390
|
1404 |
|
wenzelm@64390
|
1405 |
- Expressions "count M a > 0" and similar simplify to membership
|
wenzelm@64390
|
1406 |
by default.
|
wenzelm@64390
|
1407 |
|
wenzelm@64390
|
1408 |
- Converting between "count M a = 0" and non-membership happens using
|
wenzelm@64390
|
1409 |
equations count_eq_zero_iff and not_in_iff.
|
wenzelm@64390
|
1410 |
|
wenzelm@64390
|
1411 |
- Rules count_inI and in_countE obtain facts of the form
|
wenzelm@64390
|
1412 |
"count M a = n" from membership.
|
wenzelm@64390
|
1413 |
|
wenzelm@64390
|
1414 |
- Rules count_in_diffI and in_diff_countE obtain facts of the form
|
wenzelm@64390
|
1415 |
"count M a = n + count N a" from membership on difference sets.
|
wenzelm@64390
|
1416 |
|
wenzelm@64390
|
1417 |
INCOMPATIBILITY.
|
wenzelm@64390
|
1418 |
|
wenzelm@64390
|
1419 |
* Session HOL-Library: theory LaTeXsugar uses new-style "dummy_pats" for
|
wenzelm@64390
|
1420 |
displaying equations in functional programming style --- variables
|
wenzelm@64390
|
1421 |
present on the left-hand but not on the righ-hand side are replaced by
|
wenzelm@64390
|
1422 |
underscores.
|
wenzelm@64390
|
1423 |
|
wenzelm@64390
|
1424 |
* Session HOL-Library: theory Combinator_PER provides combinator to
|
wenzelm@64390
|
1425 |
build partial equivalence relations from a predicate and an equivalence
|
wenzelm@64390
|
1426 |
relation.
|
wenzelm@64390
|
1427 |
|
wenzelm@64390
|
1428 |
* Session HOL-Library: theory Perm provides basic facts about almost
|
wenzelm@64390
|
1429 |
everywhere fix bijections.
|
wenzelm@64390
|
1430 |
|
wenzelm@64390
|
1431 |
* Session HOL-Library: theory Normalized_Fraction allows viewing an
|
wenzelm@64390
|
1432 |
element of a field of fractions as a normalized fraction (i.e. a pair of
|
wenzelm@64390
|
1433 |
numerator and denominator such that the two are coprime and the
|
wenzelm@64390
|
1434 |
denominator is normalized wrt. unit factors).
|
wenzelm@64390
|
1435 |
|
wenzelm@64390
|
1436 |
* Session HOL-NSA has been renamed to HOL-Nonstandard_Analysis.
|
wenzelm@64390
|
1437 |
|
wenzelm@64390
|
1438 |
* Session HOL-Multivariate_Analysis has been renamed to HOL-Analysis.
|
wenzelm@64390
|
1439 |
|
wenzelm@64390
|
1440 |
* Session HOL-Analysis: measure theory has been moved here from
|
wenzelm@64390
|
1441 |
HOL-Probability. When importing HOL-Analysis some theorems need
|
wenzelm@64390
|
1442 |
additional name spaces prefixes due to name clashes. INCOMPATIBILITY.
|
wenzelm@64390
|
1443 |
|
wenzelm@64390
|
1444 |
* Session HOL-Analysis: more complex analysis including Cauchy's
|
wenzelm@64390
|
1445 |
inequality, Liouville theorem, open mapping theorem, maximum modulus
|
wenzelm@64390
|
1446 |
principle, Residue theorem, Schwarz Lemma.
|
wenzelm@64390
|
1447 |
|
wenzelm@64390
|
1448 |
* Session HOL-Analysis: Theory of polyhedra: faces, extreme points,
|
wenzelm@64390
|
1449 |
polytopes, and the Krein–Milman Minkowski theorem.
|
wenzelm@64390
|
1450 |
|
wenzelm@64390
|
1451 |
* Session HOL-Analysis: Numerous results ported from the HOL Light
|
wenzelm@64390
|
1452 |
libraries: homeomorphisms, continuous function extensions, invariance of
|
wenzelm@64390
|
1453 |
domain.
|
wenzelm@64390
|
1454 |
|
wenzelm@64390
|
1455 |
* Session HOL-Probability: the type of emeasure and nn_integral was
|
wenzelm@64390
|
1456 |
changed from ereal to ennreal, INCOMPATIBILITY.
|
wenzelm@64390
|
1457 |
|
wenzelm@64390
|
1458 |
emeasure :: 'a measure \<Rightarrow> 'a set \<Rightarrow> ennreal
|
wenzelm@64390
|
1459 |
nn_integral :: 'a measure \<Rightarrow> ('a \<Rightarrow> ennreal) \<Rightarrow> ennreal
|
wenzelm@64390
|
1460 |
|
wenzelm@64390
|
1461 |
* Session HOL-Probability: Code generation and QuickCheck for
|
wenzelm@64390
|
1462 |
Probability Mass Functions.
|
wenzelm@64390
|
1463 |
|
wenzelm@64390
|
1464 |
* Session HOL-Probability: theory Random_Permutations contains some
|
wenzelm@64390
|
1465 |
theory about choosing a permutation of a set uniformly at random and
|
wenzelm@64390
|
1466 |
folding over a list in random order.
|
wenzelm@64390
|
1467 |
|
wenzelm@64390
|
1468 |
* Session HOL-Probability: theory SPMF formalises discrete
|
wenzelm@64390
|
1469 |
subprobability distributions.
|
wenzelm@64390
|
1470 |
|
wenzelm@64390
|
1471 |
* Session HOL-Library: the names of multiset theorems have been
|
wenzelm@64390
|
1472 |
normalised to distinguish which ordering the theorems are about
|
wenzelm@64390
|
1473 |
|
wenzelm@64390
|
1474 |
mset_less_eqI ~> mset_subset_eqI
|
wenzelm@64390
|
1475 |
mset_less_insertD ~> mset_subset_insertD
|
wenzelm@64390
|
1476 |
mset_less_eq_count ~> mset_subset_eq_count
|
wenzelm@64390
|
1477 |
mset_less_diff_self ~> mset_subset_diff_self
|
wenzelm@64390
|
1478 |
mset_le_exists_conv ~> mset_subset_eq_exists_conv
|
wenzelm@64390
|
1479 |
mset_le_mono_add_right_cancel ~> mset_subset_eq_mono_add_right_cancel
|
wenzelm@64390
|
1480 |
mset_le_mono_add_left_cancel ~> mset_subset_eq_mono_add_left_cancel
|
wenzelm@64390
|
1481 |
mset_le_mono_add ~> mset_subset_eq_mono_add
|
wenzelm@64390
|
1482 |
mset_le_add_left ~> mset_subset_eq_add_left
|
wenzelm@64390
|
1483 |
mset_le_add_right ~> mset_subset_eq_add_right
|
wenzelm@64390
|
1484 |
mset_le_single ~> mset_subset_eq_single
|
wenzelm@64390
|
1485 |
mset_le_multiset_union_diff_commute ~> mset_subset_eq_multiset_union_diff_commute
|
wenzelm@64390
|
1486 |
diff_le_self ~> diff_subset_eq_self
|
wenzelm@64390
|
1487 |
mset_leD ~> mset_subset_eqD
|
wenzelm@64390
|
1488 |
mset_lessD ~> mset_subsetD
|
wenzelm@64390
|
1489 |
mset_le_insertD ~> mset_subset_eq_insertD
|
wenzelm@64390
|
1490 |
mset_less_of_empty ~> mset_subset_of_empty
|
wenzelm@64390
|
1491 |
mset_less_size ~> mset_subset_size
|
wenzelm@64390
|
1492 |
wf_less_mset_rel ~> wf_subset_mset_rel
|
wenzelm@64390
|
1493 |
count_le_replicate_mset_le ~> count_le_replicate_mset_subset_eq
|
wenzelm@64390
|
1494 |
mset_remdups_le ~> mset_remdups_subset_eq
|
wenzelm@64390
|
1495 |
ms_lesseq_impl ~> subset_eq_mset_impl
|
wenzelm@64390
|
1496 |
|
wenzelm@64390
|
1497 |
Some functions have been renamed:
|
wenzelm@64390
|
1498 |
ms_lesseq_impl -> subset_eq_mset_impl
|
wenzelm@64390
|
1499 |
|
wenzelm@64390
|
1500 |
* HOL-Library: multisets are now ordered with the multiset ordering
|
wenzelm@64390
|
1501 |
#\<subseteq># ~> \<le>
|
wenzelm@64390
|
1502 |
#\<subset># ~> <
|
wenzelm@64390
|
1503 |
le_multiset ~> less_eq_multiset
|
wenzelm@64390
|
1504 |
less_multiset ~> le_multiset
|
wenzelm@64390
|
1505 |
INCOMPATIBILITY.
|
wenzelm@64390
|
1506 |
|
wenzelm@64390
|
1507 |
* Session HOL-Library: the prefix multiset_order has been discontinued:
|
wenzelm@64390
|
1508 |
the theorems can be directly accessed. As a consequence, the lemmas
|
wenzelm@64390
|
1509 |
"order_multiset" and "linorder_multiset" have been discontinued, and the
|
wenzelm@64390
|
1510 |
interpretations "multiset_linorder" and "multiset_wellorder" have been
|
wenzelm@64390
|
1511 |
replaced by instantiations. INCOMPATIBILITY.
|
wenzelm@64390
|
1512 |
|
wenzelm@64390
|
1513 |
* Session HOL-Library: some theorems about the multiset ordering have
|
wenzelm@64390
|
1514 |
been renamed:
|
wenzelm@64390
|
1515 |
|
wenzelm@64390
|
1516 |
le_multiset_def ~> less_eq_multiset_def
|
wenzelm@64390
|
1517 |
less_multiset_def ~> le_multiset_def
|
wenzelm@64390
|
1518 |
less_eq_imp_le_multiset ~> subset_eq_imp_le_multiset
|
wenzelm@64390
|
1519 |
mult_less_not_refl ~> mset_le_not_refl
|
wenzelm@64390
|
1520 |
mult_less_trans ~> mset_le_trans
|
wenzelm@64390
|
1521 |
mult_less_not_sym ~> mset_le_not_sym
|
wenzelm@64390
|
1522 |
mult_less_asym ~> mset_le_asym
|
wenzelm@64390
|
1523 |
mult_less_irrefl ~> mset_le_irrefl
|
wenzelm@64390
|
1524 |
union_less_mono2{,1,2} ~> union_le_mono2{,1,2}
|
wenzelm@64390
|
1525 |
|
wenzelm@64390
|
1526 |
le_multiset\<^sub>H\<^sub>O ~> less_eq_multiset\<^sub>H\<^sub>O
|
wenzelm@64390
|
1527 |
le_multiset_total ~> less_eq_multiset_total
|
wenzelm@64390
|
1528 |
less_multiset_right_total ~> subset_eq_imp_le_multiset
|
wenzelm@64390
|
1529 |
le_multiset_empty_left ~> less_eq_multiset_empty_left
|
wenzelm@64390
|
1530 |
le_multiset_empty_right ~> less_eq_multiset_empty_right
|
wenzelm@64390
|
1531 |
less_multiset_empty_right ~> le_multiset_empty_left
|
wenzelm@64390
|
1532 |
less_multiset_empty_left ~> le_multiset_empty_right
|
wenzelm@64390
|
1533 |
union_less_diff_plus ~> union_le_diff_plus
|
wenzelm@64390
|
1534 |
ex_gt_count_imp_less_multiset ~> ex_gt_count_imp_le_multiset
|
wenzelm@64390
|
1535 |
less_multiset_plus_left_nonempty ~> le_multiset_plus_left_nonempty
|
wenzelm@64390
|
1536 |
le_multiset_plus_right_nonempty ~> le_multiset_plus_right_nonempty
|
wenzelm@64390
|
1537 |
INCOMPATIBILITY.
|
wenzelm@64390
|
1538 |
|
wenzelm@64390
|
1539 |
* Session HOL-Library: the lemma mset_map has now the attribute [simp].
|
wenzelm@64390
|
1540 |
INCOMPATIBILITY.
|
wenzelm@64390
|
1541 |
|
wenzelm@64390
|
1542 |
* Session HOL-Library: some theorems about multisets have been removed.
|
wenzelm@64390
|
1543 |
INCOMPATIBILITY, use the following replacements:
|
wenzelm@64390
|
1544 |
|
wenzelm@64390
|
1545 |
le_multiset_plus_plus_left_iff ~> add_less_cancel_right
|
wenzelm@64390
|
1546 |
less_multiset_plus_plus_left_iff ~> add_less_cancel_right
|
wenzelm@64390
|
1547 |
le_multiset_plus_plus_right_iff ~> add_less_cancel_left
|
wenzelm@64390
|
1548 |
less_multiset_plus_plus_right_iff ~> add_less_cancel_left
|
wenzelm@64390
|
1549 |
add_eq_self_empty_iff ~> add_cancel_left_right
|
wenzelm@64390
|
1550 |
mset_subset_add_bothsides ~> subset_mset.add_less_cancel_right
|
wenzelm@64390
|
1551 |
mset_less_add_bothsides ~> subset_mset.add_less_cancel_right
|
wenzelm@64390
|
1552 |
mset_le_add_bothsides ~> subset_mset.add_less_cancel_right
|
wenzelm@64390
|
1553 |
empty_inter ~> subset_mset.inf_bot_left
|
wenzelm@64390
|
1554 |
inter_empty ~> subset_mset.inf_bot_right
|
wenzelm@64390
|
1555 |
empty_sup ~> subset_mset.sup_bot_left
|
wenzelm@64390
|
1556 |
sup_empty ~> subset_mset.sup_bot_right
|
wenzelm@64390
|
1557 |
bdd_below_multiset ~> subset_mset.bdd_above_bot
|
wenzelm@64390
|
1558 |
subset_eq_empty ~> subset_mset.le_zero_eq
|
wenzelm@64390
|
1559 |
le_empty ~> subset_mset.le_zero_eq
|
wenzelm@64390
|
1560 |
mset_subset_empty_nonempty ~> subset_mset.zero_less_iff_neq_zero
|
wenzelm@64390
|
1561 |
mset_less_empty_nonempty ~> subset_mset.zero_less_iff_neq_zero
|
wenzelm@64390
|
1562 |
|
wenzelm@64390
|
1563 |
* Session HOL-Library: some typeclass constraints about multisets have
|
wenzelm@64390
|
1564 |
been reduced from ordered or linordered to preorder. Multisets have the
|
wenzelm@64390
|
1565 |
additional typeclasses order_bot, no_top,
|
wenzelm@64390
|
1566 |
ordered_ab_semigroup_add_imp_le, ordered_cancel_comm_monoid_add,
|
wenzelm@64390
|
1567 |
linordered_cancel_ab_semigroup_add, and
|
wenzelm@64390
|
1568 |
ordered_ab_semigroup_monoid_add_imp_le. INCOMPATIBILITY.
|
wenzelm@64390
|
1569 |
|
wenzelm@64390
|
1570 |
* Session HOL-Library: there are some new simplification rules about
|
wenzelm@64390
|
1571 |
multisets, the multiset ordering, and the subset ordering on multisets.
|
wenzelm@64390
|
1572 |
INCOMPATIBILITY.
|
wenzelm@64390
|
1573 |
|
wenzelm@64390
|
1574 |
* Session HOL-Library: the subset ordering on multisets has now the
|
wenzelm@64390
|
1575 |
interpretations ordered_ab_semigroup_monoid_add_imp_le and
|
wenzelm@64390
|
1576 |
bounded_lattice_bot. INCOMPATIBILITY.
|
wenzelm@64390
|
1577 |
|
wenzelm@64390
|
1578 |
* Session HOL-Library, theory Multiset: single has been removed in favor
|
wenzelm@64390
|
1579 |
of add_mset that roughly corresponds to Set.insert. Some theorems have
|
wenzelm@64390
|
1580 |
removed or changed:
|
wenzelm@64390
|
1581 |
|
wenzelm@64390
|
1582 |
single_not_empty ~> add_mset_not_empty or empty_not_add_mset
|
wenzelm@64390
|
1583 |
fold_mset_insert ~> fold_mset_add_mset
|
wenzelm@64390
|
1584 |
image_mset_insert ~> image_mset_add_mset
|
wenzelm@64390
|
1585 |
union_single_eq_diff
|
wenzelm@64390
|
1586 |
multi_self_add_other_not_self
|
wenzelm@64390
|
1587 |
diff_single_eq_union
|
wenzelm@64390
|
1588 |
INCOMPATIBILITY.
|
wenzelm@64390
|
1589 |
|
wenzelm@64390
|
1590 |
* Session HOL-Library, theory Multiset: some theorems have been changed
|
wenzelm@64390
|
1591 |
to use add_mset instead of single:
|
wenzelm@64390
|
1592 |
|
wenzelm@64390
|
1593 |
mset_add
|
wenzelm@64390
|
1594 |
multi_self_add_other_not_self
|
wenzelm@64390
|
1595 |
diff_single_eq_union
|
wenzelm@64390
|
1596 |
union_single_eq_diff
|
wenzelm@64390
|
1597 |
union_single_eq_member
|
wenzelm@64390
|
1598 |
add_eq_conv_diff
|
wenzelm@64390
|
1599 |
insert_noteq_member
|
wenzelm@64390
|
1600 |
add_eq_conv_ex
|
wenzelm@64390
|
1601 |
multi_member_split
|
wenzelm@64390
|
1602 |
multiset_add_sub_el_shuffle
|
wenzelm@64390
|
1603 |
mset_subset_eq_insertD
|
wenzelm@64390
|
1604 |
mset_subset_insertD
|
wenzelm@64390
|
1605 |
insert_subset_eq_iff
|
wenzelm@64390
|
1606 |
insert_union_subset_iff
|
wenzelm@64390
|
1607 |
multi_psub_of_add_self
|
wenzelm@64390
|
1608 |
inter_add_left1
|
wenzelm@64390
|
1609 |
inter_add_left2
|
wenzelm@64390
|
1610 |
inter_add_right1
|
wenzelm@64390
|
1611 |
inter_add_right2
|
wenzelm@64390
|
1612 |
sup_union_left1
|
wenzelm@64390
|
1613 |
sup_union_left2
|
wenzelm@64390
|
1614 |
sup_union_right1
|
wenzelm@64390
|
1615 |
sup_union_right2
|
wenzelm@64390
|
1616 |
size_eq_Suc_imp_eq_union
|
wenzelm@64390
|
1617 |
multi_nonempty_split
|
wenzelm@64390
|
1618 |
mset_insort
|
wenzelm@64390
|
1619 |
mset_update
|
wenzelm@64390
|
1620 |
mult1I
|
wenzelm@64390
|
1621 |
less_add
|
wenzelm@64390
|
1622 |
mset_zip_take_Cons_drop_twice
|
wenzelm@64390
|
1623 |
rel_mset_Zero
|
wenzelm@64390
|
1624 |
msed_map_invL
|
wenzelm@64390
|
1625 |
msed_map_invR
|
wenzelm@64390
|
1626 |
msed_rel_invL
|
wenzelm@64390
|
1627 |
msed_rel_invR
|
wenzelm@64390
|
1628 |
le_multiset_right_total
|
wenzelm@64390
|
1629 |
multiset_induct
|
wenzelm@64390
|
1630 |
multiset_induct2_size
|
wenzelm@64390
|
1631 |
multiset_induct2
|
wenzelm@64390
|
1632 |
INCOMPATIBILITY.
|
wenzelm@64390
|
1633 |
|
wenzelm@64390
|
1634 |
* Session HOL-Library, theory Multiset: the definitions of some
|
wenzelm@64390
|
1635 |
constants have changed to use add_mset instead of adding a single
|
wenzelm@64390
|
1636 |
element:
|
wenzelm@64390
|
1637 |
|
wenzelm@64390
|
1638 |
image_mset
|
wenzelm@64390
|
1639 |
mset
|
wenzelm@64390
|
1640 |
replicate_mset
|
wenzelm@64390
|
1641 |
mult1
|
wenzelm@64390
|
1642 |
pred_mset
|
wenzelm@64390
|
1643 |
rel_mset'
|
wenzelm@64390
|
1644 |
mset_insort
|
wenzelm@64390
|
1645 |
|
wenzelm@64390
|
1646 |
INCOMPATIBILITY.
|
wenzelm@64390
|
1647 |
|
wenzelm@64390
|
1648 |
* Session HOL-Library, theory Multiset: due to the above changes, the
|
wenzelm@64390
|
1649 |
attributes of some multiset theorems have been changed:
|
wenzelm@64390
|
1650 |
|
wenzelm@64390
|
1651 |
insert_DiffM [] ~> [simp]
|
wenzelm@64390
|
1652 |
insert_DiffM2 [simp] ~> []
|
wenzelm@64390
|
1653 |
diff_add_mset_swap [simp]
|
wenzelm@64390
|
1654 |
fold_mset_add_mset [simp]
|
wenzelm@64390
|
1655 |
diff_diff_add [simp] (for multisets only)
|
wenzelm@64390
|
1656 |
diff_cancel [simp] ~> []
|
wenzelm@64390
|
1657 |
count_single [simp] ~> []
|
wenzelm@64390
|
1658 |
set_mset_single [simp] ~> []
|
wenzelm@64390
|
1659 |
size_multiset_single [simp] ~> []
|
wenzelm@64390
|
1660 |
size_single [simp] ~> []
|
wenzelm@64390
|
1661 |
image_mset_single [simp] ~> []
|
wenzelm@64390
|
1662 |
mset_subset_eq_mono_add_right_cancel [simp] ~> []
|
wenzelm@64390
|
1663 |
mset_subset_eq_mono_add_left_cancel [simp] ~> []
|
wenzelm@64390
|
1664 |
fold_mset_single [simp] ~> []
|
wenzelm@64390
|
1665 |
subset_eq_empty [simp] ~> []
|
wenzelm@64390
|
1666 |
empty_sup [simp] ~> []
|
wenzelm@64390
|
1667 |
sup_empty [simp] ~> []
|
wenzelm@64390
|
1668 |
inter_empty [simp] ~> []
|
wenzelm@64390
|
1669 |
empty_inter [simp] ~> []
|
wenzelm@64390
|
1670 |
INCOMPATIBILITY.
|
wenzelm@64390
|
1671 |
|
wenzelm@64391
|
1672 |
* Session HOL-Library, theory Multiset: the order of the variables in
|
wenzelm@64390
|
1673 |
the second cases of multiset_induct, multiset_induct2_size,
|
wenzelm@64390
|
1674 |
multiset_induct2 has been changed (e.g. Add A a ~> Add a A).
|
wenzelm@64390
|
1675 |
INCOMPATIBILITY.
|
wenzelm@64390
|
1676 |
|
wenzelm@64390
|
1677 |
* Session HOL-Library, theory Multiset: there is now a simplification
|
wenzelm@64390
|
1678 |
procedure on multisets. It mimics the behavior of the procedure on
|
wenzelm@64390
|
1679 |
natural numbers. INCOMPATIBILITY.
|
wenzelm@64390
|
1680 |
|
wenzelm@64390
|
1681 |
* Session HOL-Library, theory Multiset: renamed sums and products of
|
wenzelm@64390
|
1682 |
multisets:
|
wenzelm@64390
|
1683 |
|
wenzelm@64390
|
1684 |
msetsum ~> sum_mset
|
wenzelm@64390
|
1685 |
msetprod ~> prod_mset
|
wenzelm@64390
|
1686 |
|
wenzelm@64390
|
1687 |
* Session HOL-Library, theory Multiset: the notation for intersection
|
wenzelm@64390
|
1688 |
and union of multisets have been changed:
|
wenzelm@64390
|
1689 |
|
wenzelm@64390
|
1690 |
#\<inter> ~> \<inter>#
|
wenzelm@64390
|
1691 |
#\<union> ~> \<union>#
|
wenzelm@64390
|
1692 |
|
wenzelm@64390
|
1693 |
INCOMPATIBILITY.
|
wenzelm@64390
|
1694 |
|
wenzelm@64390
|
1695 |
* Session HOL-Library, theory Multiset: the lemma
|
wenzelm@64390
|
1696 |
one_step_implies_mult_aux on multisets has been removed, use
|
wenzelm@64390
|
1697 |
one_step_implies_mult instead. INCOMPATIBILITY.
|
wenzelm@64390
|
1698 |
|
wenzelm@64390
|
1699 |
* Session HOL-Library: theory Complete_Partial_Order2 provides reasoning
|
wenzelm@64390
|
1700 |
support for monotonicity and continuity in chain-complete partial orders
|
wenzelm@64390
|
1701 |
and about admissibility conditions for fixpoint inductions.
|
wenzelm@64390
|
1702 |
|
haftmann@64523
|
1703 |
* Session HOL-Library: theory Library/Polynomial contains also
|
haftmann@64523
|
1704 |
derivation of polynomials (formerly in Library/Poly_Deriv) but not
|
haftmann@64523
|
1705 |
gcd/lcm on polynomials over fields. This has been moved to a separate
|
haftmann@64523
|
1706 |
theory Library/Polynomial_GCD_euclidean.thy, to pave way for a possible
|
haftmann@64523
|
1707 |
future different type class instantiation for polynomials over factorial
|
haftmann@64523
|
1708 |
rings. INCOMPATIBILITY.
|
wenzelm@64390
|
1709 |
|
wenzelm@64390
|
1710 |
* Session HOL-Library: theory Sublist provides function "prefixes" with
|
wenzelm@64390
|
1711 |
the following renaming
|
wenzelm@64390
|
1712 |
|
wenzelm@64390
|
1713 |
prefixeq -> prefix
|
wenzelm@64390
|
1714 |
prefix -> strict_prefix
|
wenzelm@64390
|
1715 |
suffixeq -> suffix
|
wenzelm@64390
|
1716 |
suffix -> strict_suffix
|
wenzelm@64390
|
1717 |
|
wenzelm@64390
|
1718 |
Added theory of longest common prefixes.
|
blanchet@64389
|
1719 |
|
wenzelm@64391
|
1720 |
* Session HOL-Number_Theory: algebraic foundation for primes:
|
wenzelm@64391
|
1721 |
Generalisation of predicate "prime" and introduction of predicates
|
wenzelm@64391
|
1722 |
"prime_elem", "irreducible", a "prime_factorization" function, and the
|
wenzelm@64391
|
1723 |
"factorial_ring" typeclass with instance proofs for nat, int, poly. Some
|
wenzelm@64391
|
1724 |
theorems now have different names, most notably "prime_def" is now
|
wenzelm@64391
|
1725 |
"prime_nat_iff". INCOMPATIBILITY.
|
wenzelm@64391
|
1726 |
|
wenzelm@64391
|
1727 |
* Session Old_Number_Theory has been removed, after porting remaining
|
wenzelm@64391
|
1728 |
theories.
|
wenzelm@64391
|
1729 |
|
wenzelm@64551
|
1730 |
* Session HOL-Types_To_Sets provides an experimental extension of
|
wenzelm@64551
|
1731 |
Higher-Order Logic to allow translation of types to sets.
|
wenzelm@64551
|
1732 |
|
wenzelm@63198
|
1733 |
|
wenzelm@62498
|
1734 |
*** ML ***
|
wenzelm@62498
|
1735 |
|
wenzelm@63227
|
1736 |
* Integer.gcd and Integer.lcm use efficient operations from the Poly/ML
|
wenzelm@63228
|
1737 |
library (notably for big integers). Subtle change of semantics:
|
wenzelm@63228
|
1738 |
Integer.gcd and Integer.lcm both normalize the sign, results are never
|
wenzelm@63228
|
1739 |
negative. This coincides with the definitions in HOL/GCD.thy.
|
wenzelm@63228
|
1740 |
INCOMPATIBILITY.
|
wenzelm@63227
|
1741 |
|
wenzelm@63212
|
1742 |
* Structure Rat for rational numbers is now an integral part of
|
wenzelm@63215
|
1743 |
Isabelle/ML, with special notation @int/nat or @int for numerals (an
|
wenzelm@63215
|
1744 |
abbreviation for antiquotation @{Pure.rat argument}) and ML pretty
|
wenzelm@63212
|
1745 |
printing. Standard operations on type Rat.rat are provided via ad-hoc
|
wenzelm@63215
|
1746 |
overloading of + - * / < <= > >= ~ abs. INCOMPATIBILITY, need to
|
wenzelm@63212
|
1747 |
use + instead of +/ etc. Moreover, exception Rat.DIVZERO has been
|
wenzelm@63212
|
1748 |
superseded by General.Div.
|
wenzelm@63198
|
1749 |
|
wenzelm@64390
|
1750 |
* ML antiquotation @{path} is superseded by @{file}, which ensures that
|
wenzelm@64390
|
1751 |
the argument is a plain file. Minor INCOMPATIBILITY.
|
wenzelm@64390
|
1752 |
|
wenzelm@64390
|
1753 |
* Antiquotation @{make_string} is available during Pure bootstrap --
|
wenzelm@64390
|
1754 |
with approximative output quality.
|
wenzelm@64390
|
1755 |
|
wenzelm@64390
|
1756 |
* Low-level ML system structures (like PolyML and RunCall) are no longer
|
wenzelm@64390
|
1757 |
exposed to Isabelle/ML user-space. Potential INCOMPATIBILITY.
|
wenzelm@64390
|
1758 |
|
wenzelm@62861
|
1759 |
* The ML function "ML" provides easy access to run-time compilation.
|
wenzelm@62861
|
1760 |
This is particularly useful for conditional compilation, without
|
wenzelm@62861
|
1761 |
requiring separate files.
|
wenzelm@62861
|
1762 |
|
wenzelm@62498
|
1763 |
* Option ML_exception_debugger controls detailed exception trace via the
|
wenzelm@62498
|
1764 |
Poly/ML debugger. Relevant ML modules need to be compiled beforehand
|
wenzelm@62498
|
1765 |
with ML_file_debug, or with ML_file and option ML_debugger enabled. Note
|
wenzelm@62498
|
1766 |
debugger information requires consirable time and space: main
|
wenzelm@62498
|
1767 |
Isabelle/HOL with full debugger support may need ML_system_64.
|
wenzelm@62498
|
1768 |
|
wenzelm@62514
|
1769 |
* Local_Theory.restore has been renamed to Local_Theory.reset to
|
wenzelm@62514
|
1770 |
emphasize its disruptive impact on the cumulative context, notably the
|
wenzelm@62514
|
1771 |
scope of 'private' or 'qualified' names. Note that Local_Theory.reset is
|
wenzelm@62514
|
1772 |
only appropriate when targets are managed, e.g. starting from a global
|
wenzelm@62514
|
1773 |
theory and returning to it. Regular definitional packages should use
|
wenzelm@62514
|
1774 |
balanced blocks of Local_Theory.open_target versus
|
wenzelm@62514
|
1775 |
Local_Theory.close_target instead. Rare INCOMPATIBILITY.
|
wenzelm@62514
|
1776 |
|
wenzelm@62519
|
1777 |
* Structure TimeLimit (originally from the SML/NJ library) has been
|
wenzelm@62519
|
1778 |
replaced by structure Timeout, with slightly different signature.
|
wenzelm@62519
|
1779 |
INCOMPATIBILITY.
|
wenzelm@62519
|
1780 |
|
wenzelm@62551
|
1781 |
* Discontinued cd and pwd operations, which are not well-defined in a
|
wenzelm@62551
|
1782 |
multi-threaded environment. Note that files are usually located
|
wenzelm@62551
|
1783 |
relatively to the master directory of a theory (see also
|
wenzelm@62551
|
1784 |
File.full_path). Potential INCOMPATIBILITY.
|
wenzelm@62551
|
1785 |
|
wenzelm@63352
|
1786 |
* Binding.empty_atts supersedes Thm.empty_binding and
|
wenzelm@63352
|
1787 |
Attrib.empty_binding. Minor INCOMPATIBILITY.
|
wenzelm@63352
|
1788 |
|
wenzelm@62498
|
1789 |
|
wenzelm@62354
|
1790 |
*** System ***
|
wenzelm@62354
|
1791 |
|
wenzelm@64390
|
1792 |
* SML/NJ and old versions of Poly/ML are no longer supported.
|
wenzelm@64390
|
1793 |
|
wenzelm@64390
|
1794 |
* Poly/ML heaps now follow the hierarchy of sessions, and thus require
|
wenzelm@64390
|
1795 |
much less disk space.
|
wenzelm@63226
|
1796 |
|
wenzelm@62591
|
1797 |
* The Isabelle ML process is now managed directly by Isabelle/Scala, and
|
wenzelm@62591
|
1798 |
shell scripts merely provide optional command-line access. In
|
wenzelm@62591
|
1799 |
particular:
|
wenzelm@62591
|
1800 |
|
wenzelm@62591
|
1801 |
. Scala module ML_Process to connect to the raw ML process,
|
wenzelm@62591
|
1802 |
with interaction via stdin/stdout/stderr or in batch mode;
|
wenzelm@62591
|
1803 |
. command-line tool "isabelle console" as interactive wrapper;
|
wenzelm@62591
|
1804 |
. command-line tool "isabelle process" as batch mode wrapper.
|
wenzelm@62588
|
1805 |
|
wenzelm@62588
|
1806 |
* The executable "isabelle_process" has been discontinued. Tools and
|
wenzelm@62588
|
1807 |
prover front-ends should use ML_Process or Isabelle_Process in
|
wenzelm@62591
|
1808 |
Isabelle/Scala. INCOMPATIBILITY.
|
wenzelm@62588
|
1809 |
|
wenzelm@62588
|
1810 |
* New command-line tool "isabelle process" supports ML evaluation of
|
wenzelm@62588
|
1811 |
literal expressions (option -e) or files (option -f) in the context of a
|
wenzelm@62588
|
1812 |
given heap image. Errors lead to premature exit of the ML process with
|
wenzelm@62588
|
1813 |
return code 1.
|
wenzelm@62588
|
1814 |
|
wenzelm@64390
|
1815 |
* The command-line tool "isabelle build" supports option -N for cyclic
|
wenzelm@64390
|
1816 |
shuffling of NUMA CPU nodes. This may help performance tuning on Linux
|
wenzelm@64390
|
1817 |
servers with separate CPU/memory modules.
|
wenzelm@64390
|
1818 |
|
wenzelm@64390
|
1819 |
* System option "threads" (for the size of the Isabelle/ML thread farm)
|
wenzelm@64390
|
1820 |
is also passed to the underlying ML runtime system as --gcthreads,
|
wenzelm@64274
|
1821 |
unless there is already a default provided via ML_OPTIONS settings.
|
wenzelm@64274
|
1822 |
|
wenzelm@63827
|
1823 |
* System option "checkpoint" helps to fine-tune the global heap space
|
wenzelm@63827
|
1824 |
management of isabelle build. This is relevant for big sessions that may
|
wenzelm@63827
|
1825 |
exhaust the small 32-bit address space of the ML process (which is used
|
wenzelm@63827
|
1826 |
by default).
|
wenzelm@63827
|
1827 |
|
wenzelm@64308
|
1828 |
* System option "profiling" specifies the mode for global ML profiling
|
wenzelm@64342
|
1829 |
in "isabelle build". Possible values are "time", "allocations". The
|
wenzelm@64342
|
1830 |
command-line tool "isabelle profiling_report" helps to digest the
|
wenzelm@64342
|
1831 |
resulting log files.
|
wenzelm@64308
|
1832 |
|
wenzelm@63986
|
1833 |
* System option "ML_process_policy" specifies an optional command prefix
|
wenzelm@63986
|
1834 |
for the underlying ML process, e.g. to control CPU affinity on
|
wenzelm@63987
|
1835 |
multiprocessor systems. The "isabelle jedit" tool allows to override the
|
wenzelm@63987
|
1836 |
implicit default via option -p.
|
wenzelm@63986
|
1837 |
|
wenzelm@64390
|
1838 |
* Command-line tool "isabelle console" provides option -r to help to
|
wenzelm@64390
|
1839 |
bootstrapping Isabelle/Pure interactively.
|
wenzelm@64390
|
1840 |
|
wenzelm@64390
|
1841 |
* Command-line tool "isabelle yxml" has been discontinued.
|
wenzelm@64390
|
1842 |
INCOMPATIBILITY, use operations from the modules "XML" and "YXML" in
|
wenzelm@64390
|
1843 |
Isabelle/ML or Isabelle/Scala.
|
wenzelm@64390
|
1844 |
|
wenzelm@64390
|
1845 |
* Many Isabelle tools that require a Java runtime system refer to the
|
wenzelm@64390
|
1846 |
settings ISABELLE_TOOL_JAVA_OPTIONS32 / ISABELLE_TOOL_JAVA_OPTIONS64,
|
wenzelm@64390
|
1847 |
depending on the underlying platform. The settings for "isabelle build"
|
wenzelm@64390
|
1848 |
ISABELLE_BUILD_JAVA_OPTIONS32 / ISABELLE_BUILD_JAVA_OPTIONS64 have been
|
wenzelm@64390
|
1849 |
discontinued. Potential INCOMPATIBILITY.
|
wenzelm@64390
|
1850 |
|
wenzelm@64390
|
1851 |
* The Isabelle system environment always ensures that the main
|
wenzelm@64390
|
1852 |
executables are found within the shell search $PATH: "isabelle" and
|
wenzelm@64390
|
1853 |
"isabelle_scala_script".
|
wenzelm@64390
|
1854 |
|
wenzelm@64390
|
1855 |
* Isabelle tools may consist of .scala files: the Scala compiler is
|
wenzelm@64390
|
1856 |
invoked on the spot. The source needs to define some object that extends
|
wenzelm@64390
|
1857 |
Isabelle_Tool.Body.
|
wenzelm@64390
|
1858 |
|
wenzelm@64390
|
1859 |
* File.bash_string, File.bash_path etc. represent Isabelle/ML and
|
wenzelm@64390
|
1860 |
Isabelle/Scala strings authentically within GNU bash. This is useful to
|
wenzelm@64390
|
1861 |
produce robust shell scripts under program control, without worrying
|
wenzelm@64390
|
1862 |
about spaces or special characters. Note that user output works via
|
wenzelm@64390
|
1863 |
Path.print (ML) or Path.toString (Scala). INCOMPATIBILITY, the old (and
|
wenzelm@64390
|
1864 |
less versatile) operations File.shell_quote, File.shell_path etc. have
|
wenzelm@64390
|
1865 |
been discontinued.
|
wenzelm@64390
|
1866 |
|
wenzelm@63995
|
1867 |
* The isabelle_java executable allows to run a Java process within the
|
wenzelm@63995
|
1868 |
name space of Java and Scala components that are bundled with Isabelle,
|
wenzelm@63995
|
1869 |
but without the Isabelle settings environment.
|
wenzelm@63995
|
1870 |
|
wenzelm@64390
|
1871 |
* Isabelle/Scala: the SSH module supports ssh and sftp connections, for
|
wenzelm@64390
|
1872 |
remote command-execution and file-system access. This resembles
|
wenzelm@64390
|
1873 |
operations from module File and Isabelle_System to some extent. Note
|
wenzelm@64390
|
1874 |
that Path specifications need to be resolved remotely via
|
wenzelm@64390
|
1875 |
ssh.remote_path instead of File.standard_path: the implicit process
|
wenzelm@64390
|
1876 |
environment is different, Isabelle settings are not available remotely.
|
wenzelm@64390
|
1877 |
|
wenzelm@64390
|
1878 |
* Isabelle/Scala: the Mercurial module supports repositories via the
|
wenzelm@64390
|
1879 |
regular hg command-line interface. The repositroy clone and working
|
wenzelm@64390
|
1880 |
directory may reside on a local or remote file-system (via ssh
|
wenzelm@64390
|
1881 |
connection).
|
wenzelm@64265
|
1882 |
|
wenzelm@62354
|
1883 |
|
wenzelm@62354
|
1884 |
|
wenzelm@62031
|
1885 |
New in Isabelle2016 (February 2016)
|
wenzelm@62016
|
1886 |
-----------------------------------
|
wenzelm@60138
|
1887 |
|
wenzelm@61337
|
1888 |
*** General ***
|
wenzelm@61337
|
1889 |
|
wenzelm@62168
|
1890 |
* Eisbach is now based on Pure instead of HOL. Objects-logics may import
|
wenzelm@62168
|
1891 |
either the theory ~~/src/HOL/Eisbach/Eisbach (for HOL etc.) or
|
wenzelm@62168
|
1892 |
~~/src/HOL/Eisbach/Eisbach_Old_Appl_Syntax (for FOL, ZF etc.). Note that
|
wenzelm@62168
|
1893 |
the HOL-Eisbach session located in ~~/src/HOL/Eisbach/ contains further
|
wenzelm@62168
|
1894 |
examples that do require HOL.
|
wenzelm@62168
|
1895 |
|
wenzelm@62157
|
1896 |
* Better resource usage on all platforms (Linux, Windows, Mac OS X) for
|
wenzelm@62157
|
1897 |
both Isabelle/ML and Isabelle/Scala. Slightly reduced heap space usage.
|
wenzelm@62157
|
1898 |
|
wenzelm@62017
|
1899 |
* Former "xsymbols" syntax with Isabelle symbols is used by default,
|
wenzelm@62017
|
1900 |
without any special print mode. Important ASCII replacement syntax
|
wenzelm@62017
|
1901 |
remains available under print mode "ASCII", but less important syntax
|
wenzelm@62017
|
1902 |
has been removed (see below).
|
wenzelm@62017
|
1903 |
|
wenzelm@62109
|
1904 |
* Support for more arrow symbols, with rendering in LaTeX and Isabelle
|
wenzelm@62109
|
1905 |
fonts: \<Lleftarrow> \<Rrightarrow> \<longlongleftarrow> \<longlongrightarrow> \<longlonglongleftarrow> \<longlonglongrightarrow>.
|
wenzelm@62017
|
1906 |
|
wenzelm@62108
|
1907 |
* Special notation \<struct> for the first implicit 'structure' in the
|
wenzelm@62108
|
1908 |
context has been discontinued. Rare INCOMPATIBILITY, use explicit
|
wenzelm@62108
|
1909 |
structure name instead, notably in indexed notation with block-subscript
|
wenzelm@62108
|
1910 |
(e.g. \<odot>\<^bsub>A\<^esub>).
|
wenzelm@62108
|
1911 |
|
wenzelm@62108
|
1912 |
* The glyph for \<diamond> in the IsabelleText font now corresponds better to its
|
wenzelm@62108
|
1913 |
counterpart \<box> as quantifier-like symbol. A small diamond is available as
|
wenzelm@62108
|
1914 |
\<diamondop>; the old symbol \<struct> loses this rendering and any special
|
wenzelm@62108
|
1915 |
meaning.
|
wenzelm@62108
|
1916 |
|
wenzelm@62017
|
1917 |
* Syntax for formal comments "-- text" now also supports the symbolic
|
wenzelm@62017
|
1918 |
form "\<comment> text". Command-line tool "isabelle update_cartouches -c" helps
|
wenzelm@62017
|
1919 |
to update old sources.
|
wenzelm@62017
|
1920 |
|
wenzelm@61337
|
1921 |
* Toplevel theorem statements have been simplified as follows:
|
wenzelm@61337
|
1922 |
|
wenzelm@61337
|
1923 |
theorems ~> lemmas
|
wenzelm@61337
|
1924 |
schematic_lemma ~> schematic_goal
|
wenzelm@61337
|
1925 |
schematic_theorem ~> schematic_goal
|
wenzelm@61337
|
1926 |
schematic_corollary ~> schematic_goal
|
wenzelm@61337
|
1927 |
|
wenzelm@61337
|
1928 |
Command-line tool "isabelle update_theorems" updates theory sources
|
wenzelm@61337
|
1929 |
accordingly.
|
wenzelm@61337
|
1930 |
|
wenzelm@61338
|
1931 |
* Toplevel theorem statement 'proposition' is another alias for
|
wenzelm@61338
|
1932 |
'theorem'.
|
wenzelm@61338
|
1933 |
|
wenzelm@62169
|
1934 |
* The old 'defs' command has been removed (legacy since Isabelle2014).
|
wenzelm@62169
|
1935 |
INCOMPATIBILITY, use regular 'definition' instead. Overloaded and/or
|
wenzelm@62169
|
1936 |
deferred definitions require a surrounding 'overloading' block.
|
wenzelm@62169
|
1937 |
|
wenzelm@61337
|
1938 |
|
wenzelm@60610
|
1939 |
*** Prover IDE -- Isabelle/Scala/jEdit ***
|
wenzelm@60610
|
1940 |
|
wenzelm@60986
|
1941 |
* IDE support for the source-level debugger of Poly/ML, to work with
|
wenzelm@62253
|
1942 |
Isabelle/ML and official Standard ML. Option "ML_debugger" and commands
|
wenzelm@62253
|
1943 |
'ML_file_debug', 'ML_file_no_debug', 'SML_file_debug',
|
wenzelm@62253
|
1944 |
'SML_file_no_debug' control compilation of sources with or without
|
wenzelm@62253
|
1945 |
debugging information. The Debugger panel allows to set breakpoints (via
|
wenzelm@62253
|
1946 |
context menu), step through stopped threads, evaluate local ML
|
wenzelm@62253
|
1947 |
expressions etc. At least one Debugger view needs to be active to have
|
wenzelm@62253
|
1948 |
any effect on the running ML program.
|
wenzelm@60984
|
1949 |
|
wenzelm@61803
|
1950 |
* The State panel manages explicit proof state output, with dynamic
|
wenzelm@61803
|
1951 |
auto-update according to cursor movement. Alternatively, the jEdit
|
wenzelm@61803
|
1952 |
action "isabelle.update-state" (shortcut S+ENTER) triggers manual
|
wenzelm@61803
|
1953 |
update.
|
wenzelm@61729
|
1954 |
|
wenzelm@61729
|
1955 |
* The Output panel no longer shows proof state output by default, to
|
wenzelm@61729
|
1956 |
avoid GUI overcrowding. INCOMPATIBILITY, use the State panel instead or
|
wenzelm@61729
|
1957 |
enable option "editor_output_state".
|
wenzelm@61215
|
1958 |
|
wenzelm@61803
|
1959 |
* The text overview column (status of errors, warnings etc.) is updated
|
wenzelm@61803
|
1960 |
asynchronously, leading to much better editor reactivity. Moreover, the
|
wenzelm@61803
|
1961 |
full document node content is taken into account. The width of the
|
wenzelm@61803
|
1962 |
column is scaled according to the main text area font, for improved
|
wenzelm@61803
|
1963 |
visibility.
|
wenzelm@61803
|
1964 |
|
wenzelm@61803
|
1965 |
* The main text area no longer changes its color hue in outdated
|
wenzelm@61803
|
1966 |
situations. The text overview column takes over the role to indicate
|
wenzelm@61803
|
1967 |
unfinished edits in the PIDE pipeline. This avoids flashing text display
|
wenzelm@61803
|
1968 |
due to ad-hoc updates by auxiliary GUI components, such as the State
|
wenzelm@61803
|
1969 |
panel.
|
wenzelm@61803
|
1970 |
|
wenzelm@62254
|
1971 |
* Slightly improved scheduling for urgent print tasks (e.g. command
|
wenzelm@62254
|
1972 |
state output, interactive queries) wrt. long-running background tasks.
|
wenzelm@62017
|
1973 |
|
wenzelm@62017
|
1974 |
* Completion of symbols via prefix of \<name> or \<^name> or \name is
|
wenzelm@62017
|
1975 |
always possible, independently of the language context. It is never
|
wenzelm@62017
|
1976 |
implicit: a popup will show up unconditionally.
|
wenzelm@62017
|
1977 |
|
wenzelm@62017
|
1978 |
* Additional abbreviations for syntactic completion may be specified in
|
wenzelm@62017
|
1979 |
$ISABELLE_HOME/etc/abbrevs and $ISABELLE_HOME_USER/etc/abbrevs, with
|
wenzelm@62017
|
1980 |
support for simple templates using ASCII 007 (bell) as placeholder.
|
wenzelm@62017
|
1981 |
|
wenzelm@62234
|
1982 |
* Symbols \<oplus>, \<Oplus>, \<otimes>, \<Otimes>, \<odot>, \<Odot>, \<ominus>, \<oslash> no longer provide abbreviations for
|
wenzelm@62234
|
1983 |
completion like "+o", "*o", ".o" etc. -- due to conflicts with other
|
wenzelm@62234
|
1984 |
ASCII syntax. INCOMPATIBILITY, use plain backslash-completion or define
|
wenzelm@62234
|
1985 |
suitable abbreviations in $ISABELLE_HOME_USER/etc/abbrevs.
|
wenzelm@62234
|
1986 |
|
wenzelm@61483
|
1987 |
* Action "isabelle-emph" (with keyboard shortcut C+e LEFT) controls
|
wenzelm@61483
|
1988 |
emphasized text style; the effect is visible in document output, not in
|
wenzelm@61483
|
1989 |
the editor.
|
wenzelm@61483
|
1990 |
|
wenzelm@61483
|
1991 |
* Action "isabelle-reset" now uses keyboard shortcut C+e BACK_SPACE,
|
wenzelm@61483
|
1992 |
instead of former C+e LEFT.
|
wenzelm@61483
|
1993 |
|
wenzelm@61512
|
1994 |
* The command-line tool "isabelle jedit" and the isabelle.Main
|
wenzelm@62027
|
1995 |
application wrapper treat the default $USER_HOME/Scratch.thy more
|
wenzelm@61512
|
1996 |
uniformly, and allow the dummy file argument ":" to open an empty buffer
|
wenzelm@61512
|
1997 |
instead.
|
wenzelm@61512
|
1998 |
|
wenzelm@62017
|
1999 |
* New command-line tool "isabelle jedit_client" allows to connect to an
|
wenzelm@62017
|
2000 |
already running Isabelle/jEdit process. This achieves the effect of
|
wenzelm@62017
|
2001 |
single-instance applications seen on common GUI desktops.
|
wenzelm@62017
|
2002 |
|
wenzelm@61529
|
2003 |
* The default look-and-feel for Linux is the traditional "Metal", which
|
wenzelm@61529
|
2004 |
works better with GUI scaling for very high-resolution displays (e.g.
|
wenzelm@61529
|
2005 |
4K). Moreover, it is generally more robust than "Nimbus".
|
wenzelm@61529
|
2006 |
|
wenzelm@62163
|
2007 |
* Update to jedit-5.3.0, with improved GUI scaling and support of
|
wenzelm@62163
|
2008 |
high-resolution displays (e.g. 4K).
|
wenzelm@62163
|
2009 |
|
wenzelm@62034
|
2010 |
* The main Isabelle executable is managed as single-instance Desktop
|
wenzelm@62034
|
2011 |
application uniformly on all platforms: Linux, Windows, Mac OS X.
|
wenzelm@62034
|
2012 |
|
wenzelm@60610
|
2013 |
|
wenzelm@61405
|
2014 |
*** Document preparation ***
|
wenzelm@61405
|
2015 |
|
wenzelm@62017
|
2016 |
* Commands 'paragraph' and 'subparagraph' provide additional section
|
wenzelm@62017
|
2017 |
headings. Thus there are 6 levels of standard headings, as in HTML.
|
wenzelm@62017
|
2018 |
|
wenzelm@62017
|
2019 |
* Command 'text_raw' has been clarified: input text is processed as in
|
wenzelm@62017
|
2020 |
'text' (with antiquotations and control symbols). The key difference is
|
wenzelm@62017
|
2021 |
the lack of the surrounding isabelle markup environment in output.
|
wenzelm@62017
|
2022 |
|
wenzelm@62017
|
2023 |
* Text is structured in paragraphs and nested lists, using notation that
|
wenzelm@62017
|
2024 |
is similar to Markdown. The control symbols for list items are as
|
wenzelm@62017
|
2025 |
follows:
|
wenzelm@62017
|
2026 |
|
wenzelm@62017
|
2027 |
\<^item> itemize
|
wenzelm@62017
|
2028 |
\<^enum> enumerate
|
wenzelm@62017
|
2029 |
\<^descr> description
|
wenzelm@62017
|
2030 |
|
wenzelm@61491
|
2031 |
* There is a new short form for antiquotations with a single argument
|
wenzelm@61491
|
2032 |
that is a cartouche: \<^name>\<open>...\<close> is equivalent to @{name \<open>...\<close>} and
|
wenzelm@61595
|
2033 |
\<open>...\<close> without control symbol is equivalent to @{cartouche \<open>...\<close>}.
|
wenzelm@61595
|
2034 |
\<^name> without following cartouche is equivalent to @{name}. The
|
wenzelm@61501
|
2035 |
standard Isabelle fonts provide glyphs to render important control
|
wenzelm@61501
|
2036 |
symbols, e.g. "\<^verbatim>", "\<^emph>", "\<^bold>".
|
wenzelm@61491
|
2037 |
|
wenzelm@61595
|
2038 |
* Antiquotations @{noindent}, @{smallskip}, @{medskip}, @{bigskip} with
|
wenzelm@61595
|
2039 |
corresponding control symbols \<^noindent>, \<^smallskip>, \<^medskip>, \<^bigskip> specify spacing formally, using
|
wenzelm@61595
|
2040 |
standard LaTeX macros of the same names.
|
wenzelm@61595
|
2041 |
|
wenzelm@61491
|
2042 |
* Antiquotation @{cartouche} in Isabelle/Pure is the same as @{text}.
|
wenzelm@61491
|
2043 |
Consequently, \<open>...\<close> without any decoration prints literal quasi-formal
|
wenzelm@61492
|
2044 |
text. Command-line tool "isabelle update_cartouches -t" helps to update
|
wenzelm@61492
|
2045 |
old sources, by approximative patching of the content of string and
|
wenzelm@61492
|
2046 |
cartouche tokens seen in theory sources.
|
wenzelm@61491
|
2047 |
|
wenzelm@61491
|
2048 |
* The @{text} antiquotation now ignores the antiquotation option
|
wenzelm@61491
|
2049 |
"source". The given text content is output unconditionally, without any
|
wenzelm@61491
|
2050 |
surrounding quotes etc. Subtle INCOMPATIBILITY, put quotes into the
|
wenzelm@61494
|
2051 |
argument where they are really intended, e.g. @{text \<open>"foo"\<close>}. Initial
|
wenzelm@61494
|
2052 |
or terminal spaces are ignored.
|
wenzelm@61491
|
2053 |
|
wenzelm@62017
|
2054 |
* Antiquotations @{emph} and @{bold} output LaTeX source recursively,
|
wenzelm@62017
|
2055 |
adding appropriate text style markup. These may be used in the short
|
wenzelm@62017
|
2056 |
form \<^emph>\<open>...\<close> and \<^bold>\<open>...\<close>.
|
wenzelm@62017
|
2057 |
|
wenzelm@62017
|
2058 |
* Document antiquotation @{footnote} outputs LaTeX source recursively,
|
wenzelm@62017
|
2059 |
marked as \footnote{}. This may be used in the short form \<^footnote>\<open>...\<close>.
|
wenzelm@62017
|
2060 |
|
wenzelm@62017
|
2061 |
* Antiquotation @{verbatim [display]} supports option "indent".
|
wenzelm@62017
|
2062 |
|
wenzelm@62017
|
2063 |
* Antiquotation @{theory_text} prints uninterpreted theory source text
|
wenzelm@62231
|
2064 |
(Isar outer syntax with command keywords etc.). This may be used in the
|
wenzelm@62231
|
2065 |
short form \<^theory_text>\<open>...\<close>. @{theory_text [display]} supports option "indent".
|
wenzelm@62017
|
2066 |
|
wenzelm@62017
|
2067 |
* Antiquotation @{doc ENTRY} provides a reference to the given
|
wenzelm@62017
|
2068 |
documentation, with a hyperlink in the Prover IDE.
|
wenzelm@62017
|
2069 |
|
wenzelm@62017
|
2070 |
* Antiquotations @{command}, @{method}, @{attribute} print checked
|
wenzelm@62017
|
2071 |
entities of the Isar language.
|
wenzelm@62017
|
2072 |
|
wenzelm@61471
|
2073 |
* HTML presentation uses the standard IsabelleText font and Unicode
|
wenzelm@61471
|
2074 |
rendering of Isabelle symbols like Isabelle/Scala/jEdit. The former
|
wenzelm@61488
|
2075 |
print mode "HTML" loses its special meaning.
|
wenzelm@61471
|
2076 |
|
wenzelm@61405
|
2077 |
|
wenzelm@60406
|
2078 |
*** Isar ***
|
wenzelm@60406
|
2079 |
|
wenzelm@62205
|
2080 |
* Local goals ('have', 'show', 'hence', 'thus') allow structured rule
|
wenzelm@62205
|
2081 |
statements like fixes/assumes/shows in theorem specifications, but the
|
wenzelm@62205
|
2082 |
notation is postfix with keywords 'if' (or 'when') and 'for'. For
|
wenzelm@60555
|
2083 |
example:
|
wenzelm@60414
|
2084 |
|
wenzelm@60414
|
2085 |
have result: "C x y"
|
wenzelm@60414
|
2086 |
if "A x" and "B y"
|
wenzelm@60414
|
2087 |
for x :: 'a and y :: 'a
|
wenzelm@60414
|
2088 |
<proof>
|
wenzelm@60414
|
2089 |
|
wenzelm@60449
|
2090 |
The local assumptions are bound to the name "that". The result is
|
wenzelm@60449
|
2091 |
exported from context of the statement as usual. The above roughly
|
wenzelm@60414
|
2092 |
corresponds to a raw proof block like this:
|
wenzelm@60414
|
2093 |
|
wenzelm@60414
|
2094 |
{
|
wenzelm@60414
|
2095 |
fix x :: 'a and y :: 'a
|
wenzelm@60449
|
2096 |
assume that: "A x" "B y"
|
wenzelm@60414
|
2097 |
have "C x y" <proof>
|
wenzelm@60414
|
2098 |
}
|
wenzelm@60414
|
2099 |
note result = this
|
wenzelm@60406
|
2100 |
|
wenzelm@60555
|
2101 |
The keyword 'when' may be used instead of 'if', to indicate 'presume'
|
wenzelm@60555
|
2102 |
instead of 'assume' above.
|
wenzelm@60555
|
2103 |
|
wenzelm@61733
|
2104 |
* Assumptions ('assume', 'presume') allow structured rule statements
|
wenzelm@61733
|
2105 |
using 'if' and 'for', similar to 'have' etc. above. For example:
|
wenzelm@61658
|
2106 |
|
wenzelm@61658
|
2107 |
assume result: "C x y"
|
wenzelm@61658
|
2108 |
if "A x" and "B y"
|
wenzelm@61658
|
2109 |
for x :: 'a and y :: 'a
|
wenzelm@61658
|
2110 |
|
wenzelm@61658
|
2111 |
This assumes "\<And>x y::'a. A x \<Longrightarrow> B y \<Longrightarrow> C x y" and produces a general
|
wenzelm@61658
|
2112 |
result as usual: "A ?x \<Longrightarrow> B ?y \<Longrightarrow> C ?x ?y".
|
wenzelm@61658
|
2113 |
|
wenzelm@61658
|
2114 |
Vacuous quantification in assumptions is omitted, i.e. a for-context
|
wenzelm@61658
|
2115 |
only effects propositions according to actual use of variables. For
|
wenzelm@61658
|
2116 |
example:
|
wenzelm@61658
|
2117 |
|
wenzelm@61658
|
2118 |
assume "A x" and "B y" for x and y
|
wenzelm@61658
|
2119 |
|
wenzelm@61658
|
2120 |
is equivalent to:
|
wenzelm@61658
|
2121 |
|
wenzelm@61658
|
2122 |
assume "\<And>x. A x" and "\<And>y. B y"
|
wenzelm@61658
|
2123 |
|
wenzelm@60595
|
2124 |
* The meaning of 'show' with Pure rule statements has changed: premises
|
wenzelm@60595
|
2125 |
are treated in the sense of 'assume', instead of 'presume'. This means,
|
wenzelm@62205
|
2126 |
a goal like "\<And>x. A x \<Longrightarrow> B x \<Longrightarrow> C x" can be solved completely as
|
wenzelm@62205
|
2127 |
follows:
|
wenzelm@60595
|
2128 |
|
wenzelm@60595
|
2129 |
show "\<And>x. A x \<Longrightarrow> B x \<Longrightarrow> C x"
|
wenzelm@60595
|
2130 |
|
wenzelm@60595
|
2131 |
or:
|
wenzelm@60595
|
2132 |
|
wenzelm@60595
|
2133 |
show "C x" if "A x" "B x" for x
|
wenzelm@60595
|
2134 |
|
wenzelm@60595
|
2135 |
Rare INCOMPATIBILITY, the old behaviour may be recovered as follows:
|
wenzelm@60595
|
2136 |
|
wenzelm@60595
|
2137 |
show "C x" when "A x" "B x" for x
|
wenzelm@60595
|
2138 |
|
wenzelm@60459
|
2139 |
* New command 'consider' states rules for generalized elimination and
|
wenzelm@60459
|
2140 |
case splitting. This is like a toplevel statement "theorem obtains" used
|
wenzelm@60459
|
2141 |
within a proof body; or like a multi-branch 'obtain' without activation
|
wenzelm@60459
|
2142 |
of the local context elements yet.
|
wenzelm@60459
|
2143 |
|
wenzelm@60455
|
2144 |
* Proof method "cases" allows to specify the rule as first entry of
|
wenzelm@60455
|
2145 |
chained facts. This is particularly useful with 'consider':
|
wenzelm@60455
|
2146 |
|
wenzelm@60455
|
2147 |
consider (a) A | (b) B | (c) C <proof>
|
wenzelm@60455
|
2148 |
then have something
|
wenzelm@60455
|
2149 |
proof cases
|
wenzelm@60455
|
2150 |
case a
|
wenzelm@60455
|
2151 |
then show ?thesis <proof>
|
wenzelm@60455
|
2152 |
next
|
wenzelm@60455
|
2153 |
case b
|
wenzelm@60455
|
2154 |
then show ?thesis <proof>
|
wenzelm@60455
|
2155 |
next
|
wenzelm@60455
|
2156 |
case c
|
wenzelm@60455
|
2157 |
then show ?thesis <proof>
|
wenzelm@60455
|
2158 |
qed
|
wenzelm@60455
|
2159 |
|
wenzelm@60565
|
2160 |
* Command 'case' allows fact name and attribute specification like this:
|
wenzelm@60565
|
2161 |
|
wenzelm@60565
|
2162 |
case a: (c xs)
|
wenzelm@60565
|
2163 |
case a [attributes]: (c xs)
|
wenzelm@60565
|
2164 |
|
wenzelm@60565
|
2165 |
Facts that are introduced by invoking the case context are uniformly
|
wenzelm@60565
|
2166 |
qualified by "a"; the same name is used for the cumulative fact. The old
|
wenzelm@60565
|
2167 |
form "case (c xs) [attributes]" is no longer supported. Rare
|
wenzelm@60565
|
2168 |
INCOMPATIBILITY, need to adapt uses of case facts in exotic situations,
|
wenzelm@60565
|
2169 |
and always put attributes in front.
|
wenzelm@60565
|
2170 |
|
wenzelm@60618
|
2171 |
* The standard proof method of commands 'proof' and '..' is now called
|
wenzelm@60618
|
2172 |
"standard" to make semantically clear what it is; the old name "default"
|
wenzelm@60618
|
2173 |
is still available as legacy for some time. Documentation now explains
|
wenzelm@60618
|
2174 |
'..' more accurately as "by standard" instead of "by rule".
|
wenzelm@60618
|
2175 |
|
wenzelm@62017
|
2176 |
* Nesting of Isar goal structure has been clarified: the context after
|
wenzelm@62017
|
2177 |
the initial backwards refinement is retained for the whole proof, within
|
wenzelm@62017
|
2178 |
all its context sections (as indicated via 'next'). This is e.g.
|
wenzelm@62017
|
2179 |
relevant for 'using', 'including', 'supply':
|
wenzelm@62017
|
2180 |
|
wenzelm@62017
|
2181 |
have "A \<and> A" if a: A for A
|
wenzelm@62017
|
2182 |
supply [simp] = a
|
wenzelm@62017
|
2183 |
proof
|
wenzelm@62017
|
2184 |
show A by simp
|
wenzelm@62017
|
2185 |
next
|
wenzelm@62017
|
2186 |
show A by simp
|
wenzelm@62017
|
2187 |
qed
|
wenzelm@62017
|
2188 |
|
wenzelm@62017
|
2189 |
* Command 'obtain' binds term abbreviations (via 'is' patterns) in the
|
wenzelm@62017
|
2190 |
proof body as well, abstracted over relevant parameters.
|
wenzelm@62017
|
2191 |
|
wenzelm@62017
|
2192 |
* Improved type-inference for theorem statement 'obtains': separate
|
wenzelm@62017
|
2193 |
parameter scope for of each clause.
|
wenzelm@62017
|
2194 |
|
wenzelm@62017
|
2195 |
* Term abbreviations via 'is' patterns also work for schematic
|
wenzelm@62017
|
2196 |
statements: result is abstracted over unknowns.
|
wenzelm@62017
|
2197 |
|
wenzelm@60631
|
2198 |
* Command 'subgoal' allows to impose some structure on backward
|
wenzelm@60631
|
2199 |
refinements, to avoid proof scripts degenerating into long of 'apply'
|
wenzelm@60631
|
2200 |
sequences. Further explanations and examples are given in the isar-ref
|
wenzelm@60631
|
2201 |
manual.
|
wenzelm@60631
|
2202 |
|
wenzelm@62017
|
2203 |
* Command 'supply' supports fact definitions during goal refinement
|
wenzelm@62017
|
2204 |
('apply' scripts).
|
wenzelm@62017
|
2205 |
|
wenzelm@61166
|
2206 |
* Proof method "goal_cases" turns the current subgoals into cases within
|
wenzelm@61166
|
2207 |
the context; the conclusion is bound to variable ?case in each case. For
|
wenzelm@61166
|
2208 |
example:
|
wenzelm@60617
|
2209 |
|
wenzelm@60617
|
2210 |
lemma "\<And>x. A x \<Longrightarrow> B x \<Longrightarrow> C x"
|
wenzelm@60622
|
2211 |
and "\<And>y z. U y \<Longrightarrow> V z \<Longrightarrow> W y z"
|
wenzelm@61166
|
2212 |
proof goal_cases
|
wenzelm@60622
|
2213 |
case (1 x)
|
wenzelm@60622
|
2214 |
then show ?case using \<open>A x\<close> \<open>B x\<close> sorry
|
wenzelm@60622
|
2215 |
next
|
wenzelm@60622
|
2216 |
case (2 y z)
|
wenzelm@60622
|
2217 |
then show ?case using \<open>U y\<close> \<open>V z\<close> sorry
|
wenzelm@60622
|
2218 |
qed
|
wenzelm@60622
|
2219 |
|
wenzelm@60622
|
2220 |
lemma "\<And>x. A x \<Longrightarrow> B x \<Longrightarrow> C x"
|
wenzelm@60622
|
2221 |
and "\<And>y z. U y \<Longrightarrow> V z \<Longrightarrow> W y z"
|
wenzelm@61166
|
2222 |
proof goal_cases
|
wenzelm@60617
|
2223 |
case prems: 1
|
wenzelm@60617
|
2224 |
then show ?case using prems sorry
|
wenzelm@60617
|
2225 |
next
|
wenzelm@60617
|
2226 |
case prems: 2
|
wenzelm@60617
|
2227 |
then show ?case using prems sorry
|
wenzelm@60617
|
2228 |
qed
|
wenzelm@60578
|
2229 |
|
wenzelm@60581
|
2230 |
* The undocumented feature of implicit cases goal1, goal2, goal3, etc.
|
wenzelm@60617
|
2231 |
is marked as legacy, and will be removed eventually. The proof method
|
wenzelm@60617
|
2232 |
"goals" achieves a similar effect within regular Isar; often it can be
|
wenzelm@60617
|
2233 |
done more adequately by other means (e.g. 'consider').
|
wenzelm@60581
|
2234 |
|
wenzelm@62017
|
2235 |
* The vacuous fact "TERM x" may be established "by fact" or as `TERM x`
|
wenzelm@62017
|
2236 |
as well, not just "by this" or "." as before.
|
wenzelm@60551
|
2237 |
|
wenzelm@60554
|
2238 |
* Method "sleep" succeeds after a real-time delay (in seconds). This is
|
wenzelm@60554
|
2239 |
occasionally useful for demonstration and testing purposes.
|
wenzelm@60554
|
2240 |
|
wenzelm@60406
|
2241 |
|
wenzelm@60331
|
2242 |
*** Pure ***
|
wenzelm@60331
|
2243 |
|
wenzelm@61606
|
2244 |
* Qualifiers in locale expressions default to mandatory ('!') regardless
|
wenzelm@61606
|
2245 |
of the command. Previously, for 'locale' and 'sublocale' the default was
|
wenzelm@61606
|
2246 |
optional ('?'). The old synatx '!' has been discontinued.
|
wenzelm@61606
|
2247 |
INCOMPATIBILITY, remove '!' and add '?' as required.
|
ballarin@61565
|
2248 |
|
ballarin@61566
|
2249 |
* Keyword 'rewrites' identifies rewrite morphisms in interpretation
|
wenzelm@62017
|
2250 |
commands. Previously, the keyword was 'where'. INCOMPATIBILITY.
|
ballarin@61566
|
2251 |
|
ballarin@61701
|
2252 |
* More gentle suppression of syntax along locale morphisms while
|
wenzelm@62017
|
2253 |
printing terms. Previously 'abbreviation' and 'notation' declarations
|
wenzelm@62017
|
2254 |
would be suppressed for morphisms except term identity. Now
|
ballarin@61701
|
2255 |
'abbreviation' is also kept for morphims that only change the involved
|
wenzelm@62017
|
2256 |
parameters, and only 'notation' is suppressed. This can be of great help
|
wenzelm@62017
|
2257 |
when working with complex locale hierarchies, because proof states are
|
wenzelm@62017
|
2258 |
displayed much more succinctly. It also means that only notation needs
|
wenzelm@62017
|
2259 |
to be redeclared if desired, as illustrated by this example:
|
ballarin@61701
|
2260 |
|
ballarin@61701
|
2261 |
locale struct = fixes composition :: "'a => 'a => 'a" (infixl "\<cdot>" 65)
|
ballarin@61701
|
2262 |
begin
|
ballarin@61701
|
2263 |
definition derived (infixl "\<odot>" 65) where ...
|
ballarin@61701
|
2264 |
end
|
ballarin@61701
|
2265 |
|
ballarin@61701
|
2266 |
locale morphism =
|
ballarin@61701
|
2267 |
left: struct composition + right: struct composition'
|
ballarin@61701
|
2268 |
for composition (infix "\<cdot>" 65) and composition' (infix "\<cdot>''" 65)
|
ballarin@61701
|
2269 |
begin
|
ballarin@61701
|
2270 |
notation right.derived ("\<odot>''")
|
ballarin@61701
|
2271 |
end
|
ballarin@61701
|
2272 |
|
wenzelm@61895
|
2273 |
* Command 'global_interpretation' issues interpretations into global
|
wenzelm@61895
|
2274 |
theories, with optional rewrite definitions following keyword 'defines'.
|
wenzelm@61895
|
2275 |
|
wenzelm@61895
|
2276 |
* Command 'sublocale' accepts optional rewrite definitions after keyword
|
haftmann@61675
|
2277 |
'defines'.
|
haftmann@61675
|
2278 |
|
wenzelm@61895
|
2279 |
* Command 'permanent_interpretation' has been discontinued. Use
|
wenzelm@61895
|
2280 |
'global_interpretation' or 'sublocale' instead. INCOMPATIBILITY.
|
haftmann@61670
|
2281 |
|
wenzelm@61252
|
2282 |
* Command 'print_definitions' prints dependencies of definitional
|
wenzelm@61252
|
2283 |
specifications. This functionality used to be part of 'print_theory'.
|
wenzelm@61252
|
2284 |
|
wenzelm@60331
|
2285 |
* Configuration option rule_insts_schematic has been discontinued
|
wenzelm@62017
|
2286 |
(intermediate legacy feature in Isabelle2015). INCOMPATIBILITY.
|
wenzelm@60331
|
2287 |
|
wenzelm@62205
|
2288 |
* Abbreviations in type classes now carry proper sort constraint. Rare
|
wenzelm@62205
|
2289 |
INCOMPATIBILITY in situations where the previous misbehaviour has been
|
wenzelm@62205
|
2290 |
exploited.
|
haftmann@60347
|
2291 |
|
haftmann@60347
|
2292 |
* Refinement of user-space type system in type classes: pseudo-local
|
wenzelm@62205
|
2293 |
operations behave more similar to abbreviations. Potential
|
haftmann@60347
|
2294 |
INCOMPATIBILITY in exotic situations.
|
haftmann@60347
|
2295 |
|
haftmann@60347
|
2296 |
|
nipkow@60171
|
2297 |
*** HOL ***
|
nipkow@60171
|
2298 |
|
wenzelm@62017
|
2299 |
* The 'typedef' command has been upgraded from a partially checked
|
wenzelm@62017
|
2300 |
"axiomatization", to a full definitional specification that takes the
|
wenzelm@62017
|
2301 |
global collection of overloaded constant / type definitions into
|
wenzelm@62017
|
2302 |
account. Type definitions with open dependencies on overloaded
|
wenzelm@62017
|
2303 |
definitions need to be specified as "typedef (overloaded)". This
|
wenzelm@62017
|
2304 |
provides extra robustness in theory construction. Rare INCOMPATIBILITY.
|
wenzelm@62017
|
2305 |
|
wenzelm@62017
|
2306 |
* Qualification of various formal entities in the libraries is done more
|
wenzelm@62017
|
2307 |
uniformly via "context begin qualified definition ... end" instead of
|
wenzelm@62017
|
2308 |
old-style "hide_const (open) ...". Consequently, both the defined
|
wenzelm@62017
|
2309 |
constant and its defining fact become qualified, e.g. Option.is_none and
|
wenzelm@62017
|
2310 |
Option.is_none_def. Occasional INCOMPATIBILITY in applications.
|
wenzelm@62017
|
2311 |
|
wenzelm@62017
|
2312 |
* Some old and rarely used ASCII replacement syntax has been removed.
|
wenzelm@62017
|
2313 |
INCOMPATIBILITY, standard syntax with symbols should be used instead.
|
wenzelm@62017
|
2314 |
The subsequent commands help to reproduce the old forms, e.g. to
|
wenzelm@62017
|
2315 |
simplify porting old theories:
|
wenzelm@62017
|
2316 |
|
wenzelm@62017
|
2317 |
notation iff (infixr "<->" 25)
|
wenzelm@62017
|
2318 |
|
wenzelm@62017
|
2319 |
notation Times (infixr "<*>" 80)
|
wenzelm@62017
|
2320 |
|
wenzelm@62017
|
2321 |
type_notation Map.map (infixr "~=>" 0)
|
wenzelm@62017
|
2322 |
notation Map.map_comp (infixl "o'_m" 55)
|
wenzelm@62017
|
2323 |
|
wenzelm@62017
|
2324 |
type_notation FinFun.finfun ("(_ =>f /_)" [22, 21] 21)
|
wenzelm@62017
|
2325 |
|
wenzelm@62017
|
2326 |
notation FuncSet.funcset (infixr "->" 60)
|
wenzelm@62017
|
2327 |
notation FuncSet.extensional_funcset (infixr "->\<^sub>E" 60)
|
wenzelm@62017
|
2328 |
|
wenzelm@62017
|
2329 |
notation Omega_Words_Fun.conc (infixr "conc" 65)
|
wenzelm@62017
|
2330 |
|
wenzelm@62017
|
2331 |
notation Preorder.equiv ("op ~~")
|
wenzelm@62017
|
2332 |
and Preorder.equiv ("(_/ ~~ _)" [51, 51] 50)
|
wenzelm@62017
|
2333 |
|
wenzelm@62017
|
2334 |
notation (in topological_space) tendsto (infixr "--->" 55)
|
wenzelm@62017
|
2335 |
notation (in topological_space) LIMSEQ ("((_)/ ----> (_))" [60, 60] 60)
|
wenzelm@62017
|
2336 |
notation LIM ("((_)/ -- (_)/ --> (_))" [60, 0, 60] 60)
|
wenzelm@62017
|
2337 |
|
wenzelm@62017
|
2338 |
notation NSA.approx (infixl "@=" 50)
|
wenzelm@62017
|
2339 |
notation NSLIMSEQ ("((_)/ ----NS> (_))" [60, 60] 60)
|
wenzelm@62017
|
2340 |
notation NSLIM ("((_)/ -- (_)/ --NS> (_))" [60, 0, 60] 60)
|
wenzelm@62017
|
2341 |
|
wenzelm@62017
|
2342 |
* The alternative notation "\<Colon>" for type and sort constraints has been
|
wenzelm@62017
|
2343 |
removed: in LaTeX document output it looks the same as "::".
|
wenzelm@62017
|
2344 |
INCOMPATIBILITY, use plain "::" instead.
|
wenzelm@62017
|
2345 |
|
wenzelm@62017
|
2346 |
* Commands 'inductive' and 'inductive_set' work better when names for
|
wenzelm@62017
|
2347 |
intro rules are omitted: the "cases" and "induct" rules no longer
|
wenzelm@62017
|
2348 |
declare empty case_names, but no case_names at all. This allows to use
|
wenzelm@62017
|
2349 |
numbered cases in proofs, without requiring method "goal_cases".
|
wenzelm@62017
|
2350 |
|
wenzelm@62017
|
2351 |
* Inductive definitions ('inductive', 'coinductive', etc.) expose
|
wenzelm@62017
|
2352 |
low-level facts of the internal construction only if the option
|
wenzelm@62093
|
2353 |
"inductive_internals" is enabled. This refers to the internal predicate
|
wenzelm@62017
|
2354 |
definition and its monotonicity result. Rare INCOMPATIBILITY.
|
wenzelm@62017
|
2355 |
|
wenzelm@62017
|
2356 |
* Recursive function definitions ('fun', 'function', 'partial_function')
|
wenzelm@62017
|
2357 |
expose low-level facts of the internal construction only if the option
|
wenzelm@62205
|
2358 |
"function_internals" is enabled. Its internal inductive definition is
|
wenzelm@62205
|
2359 |
also subject to "inductive_internals". Rare INCOMPATIBILITY.
|
wenzelm@62093
|
2360 |
|
wenzelm@62093
|
2361 |
* BNF datatypes ('datatype', 'codatatype', etc.) expose low-level facts
|
wenzelm@62093
|
2362 |
of the internal construction only if the option "bnf_internals" is
|
wenzelm@62093
|
2363 |
enabled. This supersedes the former option "bnf_note_all". Rare
|
wenzelm@62093
|
2364 |
INCOMPATIBILITY.
|
wenzelm@62017
|
2365 |
|
wenzelm@62017
|
2366 |
* Combinator to represent case distinction on products is named
|
wenzelm@62017
|
2367 |
"case_prod", uniformly, discontinuing any input aliasses. Very popular
|
wenzelm@62017
|
2368 |
theorem aliasses have been retained.
|
wenzelm@62017
|
2369 |
|
haftmann@61424
|
2370 |
Consolidated facts:
|
haftmann@61424
|
2371 |
PairE ~> prod.exhaust
|
haftmann@61424
|
2372 |
Pair_eq ~> prod.inject
|
haftmann@61424
|
2373 |
pair_collapse ~> prod.collapse
|
haftmann@61424
|
2374 |
Pair_fst_snd_eq ~> prod_eq_iff
|
haftmann@61424
|
2375 |
split_twice ~> prod.case_distrib
|
haftmann@61424
|
2376 |
split_weak_cong ~> prod.case_cong_weak
|
haftmann@61424
|
2377 |
split_split ~> prod.split
|
haftmann@61424
|
2378 |
split_split_asm ~> prod.split_asm
|
haftmann@61424
|
2379 |
splitI ~> case_prodI
|
haftmann@61424
|
2380 |
splitD ~> case_prodD
|
haftmann@61424
|
2381 |
splitI2 ~> case_prodI2
|
haftmann@61424
|
2382 |
splitI2' ~> case_prodI2'
|
haftmann@61424
|
2383 |
splitE ~> case_prodE
|
haftmann@61424
|
2384 |
splitE' ~> case_prodE'
|
haftmann@61424
|
2385 |
split_pair ~> case_prod_Pair
|
haftmann@61424
|
2386 |
split_eta ~> case_prod_eta
|
haftmann@61424
|
2387 |
split_comp ~> case_prod_comp
|
haftmann@61424
|
2388 |
mem_splitI ~> mem_case_prodI
|
haftmann@61424
|
2389 |
mem_splitI2 ~> mem_case_prodI2
|
haftmann@61424
|
2390 |
mem_splitE ~> mem_case_prodE
|
haftmann@61424
|
2391 |
The_split ~> The_case_prod
|
haftmann@61424
|
2392 |
cond_split_eta ~> cond_case_prod_eta
|
haftmann@61424
|
2393 |
Collect_split_in_rel_leE ~> Collect_case_prod_in_rel_leE
|
haftmann@61424
|
2394 |
Collect_split_in_rel_leI ~> Collect_case_prod_in_rel_leI
|
haftmann@61424
|
2395 |
in_rel_Collect_split_eq ~> in_rel_Collect_case_prod_eq
|
haftmann@61424
|
2396 |
Collect_split_Grp_eqD ~> Collect_case_prod_Grp_eqD
|
haftmann@61424
|
2397 |
Collect_split_Grp_inD ~> Collect_case_prod_Grp_in
|
haftmann@61424
|
2398 |
Domain_Collect_split ~> Domain_Collect_case_prod
|
haftmann@61424
|
2399 |
Image_Collect_split ~> Image_Collect_case_prod
|
haftmann@61424
|
2400 |
Range_Collect_split ~> Range_Collect_case_prod
|
haftmann@61424
|
2401 |
Eps_split ~> Eps_case_prod
|
haftmann@61424
|
2402 |
Eps_split_eq ~> Eps_case_prod_eq
|
haftmann@61424
|
2403 |
split_rsp ~> case_prod_rsp
|
haftmann@61424
|
2404 |
curry_split ~> curry_case_prod
|
haftmann@61424
|
2405 |
split_curry ~> case_prod_curry
|
wenzelm@62017
|
2406 |
|
haftmann@61424
|
2407 |
Changes in structure HOLogic:
|
haftmann@61424
|
2408 |
split_const ~> case_prod_const
|
haftmann@61424
|
2409 |
mk_split ~> mk_case_prod
|
haftmann@61424
|
2410 |
mk_psplits ~> mk_ptupleabs
|
haftmann@61424
|
2411 |
strip_psplits ~> strip_ptupleabs
|
wenzelm@62017
|
2412 |
|
wenzelm@62017
|
2413 |
INCOMPATIBILITY.
|
wenzelm@62017
|
2414 |
|
wenzelm@62017
|
2415 |
* The coercions to type 'real' have been reorganised. The function
|
wenzelm@62017
|
2416 |
'real' is no longer overloaded, but has type 'nat => real' and
|
wenzelm@62017
|
2417 |
abbreviates of_nat for that type. Also 'real_of_int :: int => real'
|
wenzelm@62017
|
2418 |
abbreviates of_int for that type. Other overloaded instances of 'real'
|
wenzelm@62017
|
2419 |
have been replaced by 'real_of_ereal' and 'real_of_float'.
|
wenzelm@62017
|
2420 |
|
lp15@61694
|
2421 |
Consolidated facts (among others):
|
lp15@61694
|
2422 |
real_of_nat_le_iff -> of_nat_le_iff
|
lp15@61694
|
2423 |
real_of_nat_numeral of_nat_numeral
|
lp15@61694
|
2424 |
real_of_int_zero of_int_0
|
lp15@61694
|
2425 |
real_of_nat_zero of_nat_0
|
lp15@61694
|
2426 |
real_of_one of_int_1
|
lp15@61694
|
2427 |
real_of_int_add of_int_add
|
lp15@61694
|
2428 |
real_of_nat_add of_nat_add
|
lp15@61694
|
2429 |
real_of_int_diff of_int_diff
|
lp15@61694
|
2430 |
real_of_nat_diff of_nat_diff
|
lp15@61694
|
2431 |
floor_subtract floor_diff_of_int
|
lp15@61694
|
2432 |
real_of_int_inject of_int_eq_iff
|
lp15@61694
|
2433 |
real_of_int_gt_zero_cancel_iff of_int_0_less_iff
|
lp15@61694
|
2434 |
real_of_int_ge_zero_cancel_iff of_int_0_le_iff
|
lp15@61694
|
2435 |
real_of_nat_ge_zero of_nat_0_le_iff
|
lp15@61694
|
2436 |
real_of_int_ceiling_ge le_of_int_ceiling
|
lp15@61694
|
2437 |
ceiling_less_eq ceiling_less_iff
|
lp15@61694
|
2438 |
ceiling_le_eq ceiling_le_iff
|
lp15@61694
|
2439 |
less_floor_eq less_floor_iff
|
lp15@61694
|
2440 |
floor_less_eq floor_less_iff
|
lp15@61694
|
2441 |
floor_divide_eq_div floor_divide_of_int_eq
|
lp15@61694
|
2442 |
real_of_int_zero_cancel of_nat_eq_0_iff
|
lp15@61694
|
2443 |
ceiling_real_of_int ceiling_of_int
|
wenzelm@62017
|
2444 |
|
wenzelm@62017
|
2445 |
INCOMPATIBILITY.
|
wenzelm@61143
|
2446 |
|
wenzelm@60841
|
2447 |
* Theory Map: lemma map_of_is_SomeD was a clone of map_of_SomeD and has
|
wenzelm@60841
|
2448 |
been removed. INCOMPATIBILITY.
|
wenzelm@60841
|
2449 |
|
lars@60712
|
2450 |
* Quickcheck setup for finite sets.
|
lars@60712
|
2451 |
|
nipkow@60171
|
2452 |
* Discontinued simp_legacy_precond. Potential INCOMPATIBILITY.
|
wenzelm@60138
|
2453 |
|
blanchet@60306
|
2454 |
* Sledgehammer:
|
blanchet@61318
|
2455 |
- The MaSh relevance filter has been sped up.
|
blanchet@60306
|
2456 |
- Proof reconstruction has been improved, to minimize the incidence of
|
blanchet@60306
|
2457 |
cases where Sledgehammer gives a proof that does not work.
|
blanchet@60306
|
2458 |
- Auto Sledgehammer now minimizes and preplays the results.
|
blanchet@61030
|
2459 |
- Handle Vampire 4.0 proof output without raising exception.
|
blanchet@61043
|
2460 |
- Eliminated "MASH" environment variable. Use the "MaSh" option in
|
blanchet@61043
|
2461 |
Isabelle/jEdit instead. INCOMPATIBILITY.
|
blanchet@61317
|
2462 |
- Eliminated obsolete "blocking" option and related subcommands.
|
blanchet@60306
|
2463 |
|
blanchet@60310
|
2464 |
* Nitpick:
|
blanchet@61325
|
2465 |
- Fixed soundness bug in translation of "finite" predicate.
|
blanchet@61324
|
2466 |
- Fixed soundness bug in "destroy_constrs" optimization.
|
blanchet@62080
|
2467 |
- Fixed soundness bug in translation of "rat" type.
|
blanchet@60310
|
2468 |
- Removed "check_potential" and "check_genuine" options.
|
blanchet@61317
|
2469 |
- Eliminated obsolete "blocking" option.
|
blanchet@60310
|
2470 |
|
wenzelm@62027
|
2471 |
* (Co)datatype package:
|
blanchet@61345
|
2472 |
- New commands "lift_bnf" and "copy_bnf" for lifting (copying) a BNF
|
blanchet@61345
|
2473 |
structure on the raw type to an abstract type defined using typedef.
|
blanchet@61345
|
2474 |
- Always generate "case_transfer" theorem.
|
wenzelm@62235
|
2475 |
- For mutual types, generate slightly stronger "rel_induct",
|
haftmann@63946
|
2476 |
"rel_coinduct", and "coinduct" theorems. INCOMPATIBILITY.
|
blanchet@61551
|
2477 |
- Allow discriminators and selectors with the same name as the type
|
blanchet@61551
|
2478 |
being defined.
|
blanchet@61551
|
2479 |
- Avoid various internal name clashes (e.g., 'datatype f = f').
|
traytel@60920
|
2480 |
|
wenzelm@62098
|
2481 |
* Transfer: new methods for interactive debugging of 'transfer' and
|
wenzelm@62098
|
2482 |
'transfer_prover': 'transfer_start', 'transfer_step', 'transfer_end',
|
wenzelm@62098
|
2483 |
'transfer_prover_start' and 'transfer_prover_end'.
|
kuncar@61370
|
2484 |
|
kleing@62118
|
2485 |
* New diagnostic command print_record for displaying record definitions.
|
kleing@62118
|
2486 |
|
haftmann@60868
|
2487 |
* Division on integers is bootstrapped directly from division on
|
wenzelm@62017
|
2488 |
naturals and uses generic numeral algorithm for computations. Slight
|
wenzelm@62017
|
2489 |
INCOMPATIBILITY, simproc numeral_divmod replaces and generalizes former
|
wenzelm@62017
|
2490 |
simprocs binary_int_div and binary_int_mod
|
wenzelm@62017
|
2491 |
|
wenzelm@62017
|
2492 |
* Tightened specification of class semiring_no_zero_divisors. Minor
|
haftmann@60516
|
2493 |
INCOMPATIBILITY.
|
haftmann@60516
|
2494 |
|
haftmann@60688
|
2495 |
* Class algebraic_semidom introduces common algebraic notions of
|
wenzelm@62017
|
2496 |
integral (semi)domains, particularly units. Although logically subsumed
|
wenzelm@62017
|
2497 |
by fields, is is not a super class of these in order not to burden
|
wenzelm@62017
|
2498 |
fields with notions that are trivial there.
|
wenzelm@62017
|
2499 |
|
wenzelm@62017
|
2500 |
* Class normalization_semidom specifies canonical representants for
|
wenzelm@62017
|
2501 |
equivalence classes of associated elements in an integral (semi)domain.
|
wenzelm@62017
|
2502 |
This formalizes associated elements as well.
|
haftmann@60688
|
2503 |
|
haftmann@60688
|
2504 |
* Abstract specification of gcd/lcm operations in classes semiring_gcd,
|
wenzelm@62017
|
2505 |
semiring_Gcd, semiring_Lcd. Minor INCOMPATIBILITY: facts gcd_nat.commute
|
wenzelm@62017
|
2506 |
and gcd_int.commute are subsumed by gcd.commute, as well as
|
wenzelm@62017
|
2507 |
gcd_nat.assoc and gcd_int.assoc by gcd.assoc.
|
wenzelm@62017
|
2508 |
|
wenzelm@62017
|
2509 |
* Former constants Fields.divide (_ / _) and Divides.div (_ div _) are
|
wenzelm@62017
|
2510 |
logically unified to Rings.divide in syntactic type class Rings.divide,
|
wenzelm@62017
|
2511 |
with infix syntax (_ div _). Infix syntax (_ / _) for field division is
|
wenzelm@62017
|
2512 |
added later as abbreviation in class Fields.inverse. INCOMPATIBILITY,
|
wenzelm@62017
|
2513 |
instantiations must refer to Rings.divide rather than the former
|
wenzelm@62017
|
2514 |
separate constants, hence infix syntax (_ / _) is usually not available
|
wenzelm@62017
|
2515 |
during instantiation.
|
wenzelm@62017
|
2516 |
|
wenzelm@62017
|
2517 |
* New cancellation simprocs for boolean algebras to cancel complementary
|
wenzelm@62017
|
2518 |
terms for sup and inf. For example, "sup x (sup y (- x))" simplifies to
|
wenzelm@62017
|
2519 |
"top". INCOMPATIBILITY.
|
Andreas@61629
|
2520 |
|
hoelzl@62101
|
2521 |
* Class uniform_space introduces uniform spaces btw topological spaces
|
hoelzl@62101
|
2522 |
and metric spaces. Minor INCOMPATIBILITY: open_<type>_def needs to be
|
wenzelm@62205
|
2523 |
introduced in the form of an uniformity. Some constants are more general
|
wenzelm@62205
|
2524 |
now, it may be necessary to add type class constraints.
|
hoelzl@62101
|
2525 |
|
hoelzl@62101
|
2526 |
open_real_def \<leadsto> open_dist
|
hoelzl@62101
|
2527 |
open_complex_def \<leadsto> open_dist
|
hoelzl@62101
|
2528 |
|
wenzelm@62026
|
2529 |
* Library/Monad_Syntax: notation uses symbols \<bind> and \<then>. INCOMPATIBILITY.
|
wenzelm@62026
|
2530 |
|
Mathias@60397
|
2531 |
* Library/Multiset:
|
Mathias@60397
|
2532 |
- Renamed multiset inclusion operators:
|
Mathias@60397
|
2533 |
< ~> <#
|
blanchet@62208
|
2534 |
> ~> >#
|
Mathias@60397
|
2535 |
<= ~> <=#
|
blanchet@62208
|
2536 |
>= ~> >=#
|
Mathias@60397
|
2537 |
\<le> ~> \<le>#
|
blanchet@62208
|
2538 |
\<ge> ~> \<ge>#
|
Mathias@60397
|
2539 |
INCOMPATIBILITY.
|
blanchet@62209
|
2540 |
- Added multiset inclusion operator syntax:
|
blanchet@62209
|
2541 |
\<subset>#
|
blanchet@62209
|
2542 |
\<subseteq>#
|
blanchet@62209
|
2543 |
\<supset>#
|
blanchet@62209
|
2544 |
\<supseteq>#
|
Mathias@60397
|
2545 |
- "'a multiset" is no longer an instance of the "order",
|
Mathias@60397
|
2546 |
"ordered_ab_semigroup_add_imp_le", "ordered_cancel_comm_monoid_diff",
|
Mathias@60397
|
2547 |
"semilattice_inf", and "semilattice_sup" type classes. The theorems
|
Mathias@60397
|
2548 |
previously provided by these type classes (directly or indirectly)
|
Mathias@60397
|
2549 |
are now available through the "subset_mset" interpretation
|
Mathias@60397
|
2550 |
(e.g. add_mono ~> subset_mset.add_mono).
|
Mathias@60397
|
2551 |
INCOMPATIBILITY.
|
nipkow@60497
|
2552 |
- Renamed conversions:
|
nipkow@60515
|
2553 |
multiset_of ~> mset
|
nipkow@60515
|
2554 |
multiset_of_set ~> mset_set
|
nipkow@60497
|
2555 |
set_of ~> set_mset
|
nipkow@60497
|
2556 |
INCOMPATIBILITY
|
Mathias@60398
|
2557 |
- Renamed lemmas:
|
Mathias@60398
|
2558 |
mset_le_def ~> subseteq_mset_def
|
Mathias@60398
|
2559 |
mset_less_def ~> subset_mset_def
|
Mathias@60400
|
2560 |
less_eq_multiset.rep_eq ~> subseteq_mset_def
|
Mathias@60400
|
2561 |
INCOMPATIBILITY
|
Mathias@60400
|
2562 |
- Removed lemmas generated by lift_definition:
|
wenzelm@62235
|
2563 |
less_eq_multiset.abs_eq, less_eq_multiset.rsp,
|
wenzelm@62235
|
2564 |
less_eq_multiset.transfer, less_eq_multiset_def
|
Mathias@60400
|
2565 |
INCOMPATIBILITY
|
wenzelm@60006
|
2566 |
|
wenzelm@62017
|
2567 |
* Library/Omega_Words_Fun: Infinite words modeled as functions nat \<Rightarrow> 'a.
|
wenzelm@62017
|
2568 |
|
wenzelm@62017
|
2569 |
* Library/Bourbaki_Witt_Fixpoint: Added formalisation of the
|
wenzelm@62017
|
2570 |
Bourbaki-Witt fixpoint theorem for increasing functions in
|
wenzelm@62017
|
2571 |
chain-complete partial orders.
|
wenzelm@62017
|
2572 |
|
wenzelm@62017
|
2573 |
* Library/Old_Recdef: discontinued obsolete 'defer_recdef' command.
|
wenzelm@62017
|
2574 |
Minor INCOMPATIBILITY, use 'function' instead.
|
wenzelm@62017
|
2575 |
|
wenzelm@62064
|
2576 |
* Library/Periodic_Fun: a locale that provides convenient lemmas for
|
wenzelm@62064
|
2577 |
periodic functions.
|
eberlm@62060
|
2578 |
|
wenzelm@62098
|
2579 |
* Library/Formal_Power_Series: proper definition of division (with
|
wenzelm@62098
|
2580 |
remainder) for formal power series; instances for Euclidean Ring and
|
wenzelm@62098
|
2581 |
GCD.
|
eberlm@62086
|
2582 |
|
wenzelm@62084
|
2583 |
* HOL-Imperative_HOL: obsolete theory Legacy_Mrec has been removed.
|
wenzelm@62084
|
2584 |
|
wenzelm@62084
|
2585 |
* HOL-Statespace: command 'statespace' uses mandatory qualifier for
|
wenzelm@62084
|
2586 |
import of parent, as for general 'locale' expressions. INCOMPATIBILITY,
|
wenzelm@62084
|
2587 |
remove '!' and add '?' as required.
|
wenzelm@62084
|
2588 |
|
wenzelm@62237
|
2589 |
* HOL-Decision_Procs: The "approximation" method works with "powr"
|
wenzelm@62237
|
2590 |
(exponentiation on real numbers) again.
|
wenzelm@62237
|
2591 |
|
wenzelm@62084
|
2592 |
* HOL-Multivariate_Analysis: theory Cauchy_Integral_Thm with Contour
|
wenzelm@62084
|
2593 |
integrals (= complex path integrals), Cauchy's integral theorem, winding
|
wenzelm@62084
|
2594 |
numbers and Cauchy's integral formula, Liouville theorem, Fundamental
|
wenzelm@62084
|
2595 |
Theorem of Algebra. Ported from HOL Light.
|
wenzelm@62084
|
2596 |
|
wenzelm@62084
|
2597 |
* HOL-Multivariate_Analysis: topological concepts such as connected
|
wenzelm@62017
|
2598 |
components, homotopic paths and the inside or outside of a set.
|
wenzelm@61121
|
2599 |
|
wenzelm@62084
|
2600 |
* HOL-Multivariate_Analysis: radius of convergence of power series and
|
wenzelm@62064
|
2601 |
various summability tests; Harmonic numbers and the Euler–Mascheroni
|
wenzelm@62064
|
2602 |
constant; the Generalised Binomial Theorem; the complex and real
|
wenzelm@62064
|
2603 |
Gamma/log-Gamma/Digamma/ Polygamma functions and their most important
|
wenzelm@62064
|
2604 |
properties.
|
eberlm@62060
|
2605 |
|
wenzelm@62084
|
2606 |
* HOL-Probability: The central limit theorem based on Levy's uniqueness
|
wenzelm@62084
|
2607 |
and continuity theorems, weak convergence, and characterisitc functions.
|
wenzelm@62084
|
2608 |
|
wenzelm@62084
|
2609 |
* HOL-Data_Structures: new and growing session of standard data
|
wenzelm@62084
|
2610 |
structures.
|
lammich@61178
|
2611 |
|
wenzelm@60479
|
2612 |
|
wenzelm@60793
|
2613 |
*** ML ***
|
wenzelm@60793
|
2614 |
|
wenzelm@62017
|
2615 |
* The following combinators for low-level profiling of the ML runtime
|
wenzelm@62017
|
2616 |
system are available:
|
wenzelm@62017
|
2617 |
|
wenzelm@62017
|
2618 |
profile_time (*CPU time*)
|
wenzelm@62017
|
2619 |
profile_time_thread (*CPU time on this thread*)
|
wenzelm@62017
|
2620 |
profile_allocations (*overall heap allocations*)
|
wenzelm@62017
|
2621 |
|
wenzelm@62017
|
2622 |
* Antiquotation @{undefined} or \<^undefined> inlines (raise Match).
|
wenzelm@62017
|
2623 |
|
wenzelm@62075
|
2624 |
* Antiquotation @{method NAME} inlines the (checked) name of the given
|
wenzelm@62075
|
2625 |
Isar proof method.
|
wenzelm@62075
|
2626 |
|
wenzelm@61922
|
2627 |
* Pretty printing of Poly/ML compiler output in Isabelle has been
|
wenzelm@61922
|
2628 |
improved: proper treatment of break offsets and blocks with consistent
|
wenzelm@61922
|
2629 |
breaks.
|
wenzelm@61922
|
2630 |
|
wenzelm@61268
|
2631 |
* The auxiliary module Pure/display.ML has been eliminated. Its
|
wenzelm@61268
|
2632 |
elementary thm print operations are now in Pure/more_thm.ML and thus
|
wenzelm@61268
|
2633 |
called Thm.pretty_thm, Thm.string_of_thm etc. INCOMPATIBILITY.
|
wenzelm@61268
|
2634 |
|
wenzelm@61144
|
2635 |
* Simproc programming interfaces have been simplified:
|
wenzelm@61144
|
2636 |
Simplifier.make_simproc and Simplifier.define_simproc supersede various
|
wenzelm@61144
|
2637 |
forms of Simplifier.mk_simproc, Simplifier.simproc_global etc. Note that
|
wenzelm@61144
|
2638 |
term patterns for the left-hand sides are specified with implicitly
|
wenzelm@61144
|
2639 |
fixed variables, like top-level theorem statements. INCOMPATIBILITY.
|
wenzelm@61144
|
2640 |
|
wenzelm@60802
|
2641 |
* Instantiation rules have been re-organized as follows:
|
wenzelm@60802
|
2642 |
|
wenzelm@60802
|
2643 |
Thm.instantiate (*low-level instantiation with named arguments*)
|
wenzelm@60802
|
2644 |
Thm.instantiate' (*version with positional arguments*)
|
wenzelm@60802
|
2645 |
|
wenzelm@60802
|
2646 |
Drule.infer_instantiate (*instantiation with type inference*)
|
wenzelm@60802
|
2647 |
Drule.infer_instantiate' (*version with positional arguments*)
|
wenzelm@60802
|
2648 |
|
wenzelm@60802
|
2649 |
The LHS only requires variable specifications, instead of full terms.
|
wenzelm@60802
|
2650 |
Old cterm_instantiate is superseded by infer_instantiate.
|
wenzelm@60802
|
2651 |
INCOMPATIBILITY, need to re-adjust some ML names and types accordingly.
|
wenzelm@60802
|
2652 |
|
wenzelm@60793
|
2653 |
* Old tactic shorthands atac, rtac, etac, dtac, ftac have been
|
wenzelm@60793
|
2654 |
discontinued. INCOMPATIBILITY, use regular assume_tac, resolve_tac etc.
|
wenzelm@60793
|
2655 |
instead (with proper context).
|
wenzelm@60642
|
2656 |
|
wenzelm@60642
|
2657 |
* Thm.instantiate (and derivatives) no longer require the LHS of the
|
wenzelm@60642
|
2658 |
instantiation to be certified: plain variables are given directly.
|
wenzelm@60642
|
2659 |
|
wenzelm@60707
|
2660 |
* Subgoal.SUBPROOF and Subgoal.FOCUS combinators use anonymous
|
wenzelm@60707
|
2661 |
quasi-bound variables (like the Simplifier), instead of accidentally
|
wenzelm@60707
|
2662 |
named local fixes. This has the potential to improve stability of proof
|
wenzelm@60707
|
2663 |
tools, but can also cause INCOMPATIBILITY for tools that don't observe
|
wenzelm@60707
|
2664 |
the proof context discipline.
|
wenzelm@60707
|
2665 |
|
wenzelm@62017
|
2666 |
* Isar proof methods are based on a slightly more general type
|
wenzelm@62017
|
2667 |
context_tactic, which allows to change the proof context dynamically
|
wenzelm@62017
|
2668 |
(e.g. to update cases) and indicate explicit Seq.Error results. Former
|
wenzelm@62017
|
2669 |
METHOD_CASES is superseded by CONTEXT_METHOD; further combinators are
|
wenzelm@62017
|
2670 |
provided in src/Pure/Isar/method.ML for convenience. INCOMPATIBILITY.
|
wenzelm@61885
|
2671 |
|
wenzelm@60642
|
2672 |
|
wenzelm@60983
|
2673 |
*** System ***
|
wenzelm@60983
|
2674 |
|
wenzelm@62525
|
2675 |
* Command-line tool "isabelle console" enables print mode "ASCII".
|
wenzelm@61958
|
2676 |
|
wenzelm@62017
|
2677 |
* Command-line tool "isabelle update_then" expands old Isar command
|
wenzelm@62017
|
2678 |
conflations:
|
wenzelm@62017
|
2679 |
|
wenzelm@62017
|
2680 |
hence ~> then have
|
wenzelm@62017
|
2681 |
thus ~> then show
|
wenzelm@62017
|
2682 |
|
wenzelm@62017
|
2683 |
This syntax is more orthogonal and improves readability and
|
wenzelm@62017
|
2684 |
maintainability of proofs.
|
wenzelm@62017
|
2685 |
|
wenzelm@61602
|
2686 |
* Global session timeout is multiplied by timeout_scale factor. This
|
wenzelm@61602
|
2687 |
allows to adjust large-scale tests (e.g. AFP) to overall hardware
|
wenzelm@61602
|
2688 |
performance.
|
wenzelm@61602
|
2689 |
|
wenzelm@61174
|
2690 |
* Property values in etc/symbols may contain spaces, if written with the
|
wenzelm@62671
|
2691 |
replacement character "␣" (Unicode point 0x2324). For example:
|
wenzelm@62671
|
2692 |
|
wenzelm@62671
|
2693 |
\<star> code: 0x0022c6 group: operator font: Deja␣Vu␣Sans␣Mono
|
wenzelm@61174
|
2694 |
|
wenzelm@60995
|
2695 |
* Java runtime environment for x86_64-windows allows to use larger heap
|
wenzelm@60995
|
2696 |
space.
|
wenzelm@60995
|
2697 |
|
wenzelm@61135
|
2698 |
* Java runtime options are determined separately for 32bit vs. 64bit
|
wenzelm@61135
|
2699 |
platforms as follows.
|
wenzelm@61135
|
2700 |
|
wenzelm@61135
|
2701 |
- Isabelle desktop application: platform-specific files that are
|
wenzelm@61135
|
2702 |
associated with the main app bundle
|
wenzelm@61135
|
2703 |
|
wenzelm@61135
|
2704 |
- isabelle jedit: settings
|
wenzelm@61135
|
2705 |
JEDIT_JAVA_SYSTEM_OPTIONS
|
wenzelm@61135
|
2706 |
JEDIT_JAVA_OPTIONS32 vs. JEDIT_JAVA_OPTIONS64
|
wenzelm@61135
|
2707 |
|
wenzelm@61135
|
2708 |
- isabelle build: settings
|
wenzelm@61135
|
2709 |
ISABELLE_BUILD_JAVA_OPTIONS32 vs. ISABELLE_BUILD_JAVA_OPTIONS64
|
wenzelm@61135
|
2710 |
|
wenzelm@61294
|
2711 |
* Bash shell function "jvmpath" has been renamed to "platform_path": it
|
wenzelm@61294
|
2712 |
is relevant both for Poly/ML and JVM processes.
|
wenzelm@61294
|
2713 |
|
wenzelm@62017
|
2714 |
* Poly/ML default platform architecture may be changed from 32bit to
|
wenzelm@62205
|
2715 |
64bit via system option ML_system_64. A system restart (and rebuild) is
|
wenzelm@62205
|
2716 |
required after change.
|
wenzelm@62017
|
2717 |
|
wenzelm@62017
|
2718 |
* Poly/ML 5.6 runs natively on x86-windows and x86_64-windows, which
|
wenzelm@62017
|
2719 |
both allow larger heap space than former x86-cygwin.
|
wenzelm@62017
|
2720 |
|
wenzelm@62157
|
2721 |
* Heap images are 10-15% smaller due to less wasteful persistent theory
|
wenzelm@62157
|
2722 |
content (using ML type theory_id instead of theory);
|
wenzelm@62157
|
2723 |
|
wenzelm@60983
|
2724 |
|
wenzelm@60479
|
2725 |
|
wenzelm@60009
|
2726 |
New in Isabelle2015 (May 2015)
|
wenzelm@60009
|
2727 |
------------------------------
|
wenzelm@57695
|
2728 |
|
wenzelm@57941
|
2729 |
*** General ***
|
wenzelm@57941
|
2730 |
|
wenzelm@59939
|
2731 |
* Local theory specification commands may have a 'private' or
|
wenzelm@59990
|
2732 |
'qualified' modifier to restrict name space accesses to the local scope,
|
wenzelm@59939
|
2733 |
as provided by some "context begin ... end" block. For example:
|
wenzelm@59926
|
2734 |
|
wenzelm@59926
|
2735 |
context
|
wenzelm@59926
|
2736 |
begin
|
wenzelm@59926
|
2737 |
|
wenzelm@59926
|
2738 |
private definition ...
|
wenzelm@59926
|
2739 |
private lemma ...
|
wenzelm@59926
|
2740 |
|
wenzelm@59990
|
2741 |
qualified definition ...
|
wenzelm@59990
|
2742 |
qualified lemma ...
|
|