31 |
31 |
32 |
32 |
33 *** Isar *** |
33 *** Isar *** |
34 |
34 |
35 * improved proof by cases and induction: |
35 * improved proof by cases and induction: |
|
36 - 'case' command admits impromptu naming of parameters (such as |
|
37 "case (Suc n)"); |
|
38 - 'induct' method divinates rule instantiation from the inductive |
|
39 claim; no longer requires excessive ?P bindings for proper |
|
40 instantiation of cases; |
|
41 - 'induct' method properly enumerates all possibilities of set/type |
|
42 rules; as a consequence facts may be also passed through *type* |
|
43 rules without further ado; |
|
44 - 'induct' method now derives symbolic cases from the *rulified* |
|
45 rule (before it used to rulify cases stemming from the internal |
|
46 atomized version); this means that the context of a non-atomic |
|
47 statement becomes is included in the hypothesis, avoiding the |
|
48 slightly cumbersome show "PROP ?case" form; |
|
49 - 'induct' may now use elim-style induction rules without chaining |
|
50 facts, using ``missing'' premises from the goal state; this allows |
|
51 rules stemming from inductive sets to be applied in unstructured |
|
52 scripts, while still benefitting from proper handling of non-atomic |
|
53 statements; NB: major inductive premises need to be put first, all |
|
54 the rest of the goal is passed through the induction; |
|
55 - 'induct' proper support for mutual induction involving non-atomic |
|
56 rule statements (uses the new concept of simultaneous goals, see |
|
57 below); |
36 - removed obsolete "(simplified)" and "(stripped)" options of methods; |
58 - removed obsolete "(simplified)" and "(stripped)" options of methods; |
37 - added 'print_induct_rules' (covered by help item in Proof General > 3.3); |
59 - added 'print_induct_rules' (covered by help item in Proof General > 3.3); |
38 - moved induct/cases attributes to Pure, methods to Provers; |
60 - moved induct/cases attributes to Pure, methods to Provers; |
39 - generic method setup instantiated for FOL and HOL; |
61 - generic method setup instantiated for FOL and HOL; |
40 |
|
41 - 'case' command admits impromptu naming of parameters (such as |
|
42 "case (Suc n)"); |
|
43 |
|
44 - 'induct' method divinates rule instantiation from the inductive |
|
45 claim; no longer requires excessive ?P bindings for proper |
|
46 instantiation of cases; |
|
47 |
|
48 - 'induct' method properly enumerates all possibilities of set/type |
|
49 rules; as a consequence facts may be also passed through *type* rules |
|
50 without further ado; |
|
51 |
|
52 - 'induct' method now derives symbolic cases from the *rulified* |
|
53 rule (before it used to rulify cases stemming from the internal |
|
54 atomized version); this means that the context of a non-atomic |
|
55 statement becomes is included in the hypothesis, avoiding the slightly |
|
56 cumbersome show "PROP ?case" form; |
|
57 |
|
58 - 'induct' may now use elim-style induction rules without chaining |
|
59 facts, using ``missing'' premises from the goal state; this allows |
|
60 rules stemming from inductive sets to be applied in unstructured |
|
61 scripts, while still benefitting from proper handling of non-atomic |
|
62 statements; NB: major inductive premises need to be put first, all the |
|
63 rest of the goal is passed through the induction; |
|
64 |
|
65 - 'induct' proper support for mutual induction involving non-atomic |
|
66 rule statements (uses the new concept of simultaneous goals, see |
|
67 below); |
|
68 |
62 |
69 * Pure: support multiple simultaneous goal statements, for example |
63 * Pure: support multiple simultaneous goal statements, for example |
70 "have a: A and b: B" (same for 'theorem' etc.); being a pure |
64 "have a: A and b: B" (same for 'theorem' etc.); being a pure |
71 meta-level mechanism, this acts as if several individual goals had |
65 meta-level mechanism, this acts as if several individual goals had |
72 been stated separately; in particular common proof methods need to be |
66 been stated separately; in particular common proof methods need to be |
80 multi-step methods like 'auto', 'simp_all', 'blast+' etc.; |
74 multi-step methods like 'auto', 'simp_all', 'blast+' etc.; |
81 |
75 |
82 * Pure: proper integration with ``locales''; unlike the original |
76 * Pure: proper integration with ``locales''; unlike the original |
83 version by Florian Kammüller, Isar locales package high-level proof |
77 version by Florian Kammüller, Isar locales package high-level proof |
84 contexts rather than raw logical ones (e.g. we admit to include |
78 contexts rather than raw logical ones (e.g. we admit to include |
85 attributes everywhere); |
79 attributes everywhere); operations on locales include merge and |
|
80 rename; e.g. see HOL/ex/Locales.thy; |
86 |
81 |
87 * Pure: theory goals now support ad-hoc contexts, which are discharged |
82 * Pure: theory goals now support ad-hoc contexts, which are discharged |
88 in the result, as in ``lemma (assumes A and B) K: A .''; syntax |
83 in the result, as in ``lemma (assumes A and B) K: A .''; syntax |
89 coincides with that of a locale body; |
84 coincides with that of a locale body; |
90 |
85 |
150 |
153 |
151 - replace "#nnn" by "nnn", and "#-nnn" by "-nnn"; |
154 - replace "#nnn" by "nnn", and "#-nnn" by "-nnn"; |
152 |
155 |
153 - remove all special provisions on numerals in proofs; |
156 - remove all special provisions on numerals in proofs; |
154 |
157 |
155 * HOL/record: |
158 * HOL/record package improvements: |
156 - removed old "make" and "make_scheme" operations -- INCOMPATIBILITY; |
159 - new derived operations "fields" to build a partial record section, |
|
160 "extend" to promote a fixed record to a record scheme, and |
|
161 "truncate" for the reverse; cf. theorems "xxx.defs", which are *not* |
|
162 declared as simp by default; |
|
163 - removed "make_scheme" operations (use "make" with "extend") -- |
|
164 INCOMPATIBILITY; |
157 - removed "more" class (simply use "term") -- INCOMPATIBILITY; |
165 - removed "more" class (simply use "term") -- INCOMPATIBILITY; |
158 - provides cases/induct rules for use with corresponding Isar |
166 - provides cases/induct rules for use with corresponding Isar |
159 methods (for concrete records, record schemes, concrete more |
167 methods (for concrete records, record schemes, concrete more |
160 parts, schematic more parts -- in that order); |
168 parts, and schematic more parts -- in that order); |
161 - new derived operations "make" (for adding fields of current |
|
162 record), "extend" to promote fixed record to record scheme, and |
|
163 "truncate" for the reverse; cf. theorems "derived_defs", which are |
|
164 *not* declared as simp by default; |
|
165 - internal definitions directly based on a light-weight abstract |
169 - internal definitions directly based on a light-weight abstract |
166 theory of product types over typedef rather than datatype; |
170 theory of product types over typedef rather than datatype; |
167 |
171 |
168 * HOL: canonical cases/induct rules for n-tuples (n = 3..7); |
172 * HOL: canonical cases/induct rules for n-tuples (n = 3..7); |
169 |
173 |
200 renamed "Product_Type.unit"; |
204 renamed "Product_Type.unit"; |
201 |
205 |
202 |
206 |
203 *** HOLCF *** |
207 *** HOLCF *** |
204 |
208 |
205 * proper rep_datatype lift (see theory Lift); use plain induct_tac |
209 * proper rep_datatype lift (see theory Lift) instead of ML hacks -- |
206 instead of former lift.induct_tac; always use UU instead of Undef; |
210 potential INCOMPATIBILITY; now use plain induct_tac instead of former |
207 |
211 lift.induct_tac, always use UU instead of Undef; |
208 * 'domain' package adapted to new-style theories, e.g. see |
|
209 HOLCF/ex/Dnat.thy; |
|
210 |
212 |
211 |
213 |
212 *** ZF *** |
214 *** ZF *** |
213 |
215 |
214 * ZF: new-style theory commands '(co)inductive', '(co)datatype', |
216 * ZF/UNITY: Chandy and Misra's UNITY is now available in ZF, giving a |
215 'rep_datatype', 'inductive_cases'; also methods 'ind_cases', |
217 typeless version of the formalism; |
216 'induct_tac', 'case_tac', and 'typecheck' (with attribute 'TC'); |
218 |
|
219 * ZF/Induct: new directory for examples of inductive definitions, |
|
220 including theory Multiset for multiset orderings; |
217 |
221 |
218 * ZF: the integer library now covers quotients and remainders, with |
222 * ZF: the integer library now covers quotients and remainders, with |
219 many laws relating division to addition, multiplication, etc.; |
223 many laws relating division to addition, multiplication, etc.; |
220 |
224 |
221 * ZF/Induct: new directory for examples of inductive definitions, |
|
222 including theory Multiset for multiset orderings; |
|
223 |
|
224 * ZF/UNITY: Chandy and Misra's UNITY is now available in ZF, giving a |
|
225 typeless version of the formalism; |
|
226 |
|
227 |
225 |
228 *** General *** |
226 *** General *** |
229 |
227 |
230 * kernel: meta-level proof terms (by Stefan Berghofer), see also ref |
228 * Pure/kernel: meta-level proof terms (by Stefan Berghofer); reference |
231 manual; |
229 variable proof controls level of detail: 0 = no proofs (only oracle |
232 |
230 dependencies), 1 = lemma dependencies, 2 = compact proof terms; see |
233 * Pure/axclass: removed obsolete ML interface goal_subclass/goal_arity; |
231 also ref manual for further ML interfaces; |
234 |
232 |
235 * classical: renamed addaltern to addafter, addSaltern to addSafter; |
233 * Pure/axclass: removed obsolete ML interface |
236 |
234 goal_subclass/goal_arity; |
237 * clasimp: ``iff'' declarations now handle conditional rules as well; |
235 |
238 |
236 * Pure/syntax: new token syntax "num" for plain numerals (without "#" |
239 * syntax: new token syntax "num" for plain numerals (without "#" of |
237 of "xnum"); potential INCOMPATIBILITY, since -0, -1 etc. are now |
240 "xnum"); potential INCOMPATIBILITY, since -0, -1 etc. are now separate |
238 separate tokens, so expressions involving minus need to be spaced |
241 tokens, so expressions involving minus need to be spaced properly; |
239 properly; |
242 |
240 |
243 * syntax: support non-oriented infixes; |
241 * Pure/syntax: support non-oriented infixes; |
244 |
242 |
245 * syntax: print modes "type_brackets" and "no_type_brackets" control |
243 * Pure/syntax: print modes "type_brackets" and "no_type_brackets" |
246 output of nested => (types); the default behavior is "type_brackets"; |
244 control output of nested => (types); the default behavior is |
247 |
245 "type_brackets"; |
248 * syntax: builtin parse translation for "_constify" turns valued |
246 |
|
247 * Pure/syntax: builtin parse translation for "_constify" turns valued |
249 tokens into AST constants; |
248 tokens into AST constants; |
250 |
249 |
251 * syntax: prefer later print_translation functions; potential |
250 * Pure/syntax: prefer later declarations of translations and print |
252 INCOMPATIBILITY: need to reverse declarations of multiple translation |
251 translation functions; potential INCOMPATIBILITY: need to reverse |
253 functions for same constant; |
252 multiple declarations for same syntax element constant; |
|
253 |
|
254 * Provers/classical: renamed addaltern to addafter, addSaltern to |
|
255 addSafter; |
|
256 |
|
257 * Provers/clasimp: ``iff'' declarations now handle conditional rules |
|
258 as well; |
254 |
259 |
255 * system: refrain from any attempt at filtering input streams; no |
260 * system: refrain from any attempt at filtering input streams; no |
256 longer support ``8bit'' encoding of old isabelle font, instead proper |
261 longer support ``8bit'' encoding of old isabelle font, instead proper |
257 iso-latin characters may now be used; |
262 iso-latin characters may now be used; |
258 |
263 |
259 * system: support Poly/ML 4.1.1 (now able to manage large heaps); |
264 * system: support Poly/ML 4.1.1 (able to manage larger heaps); |
260 |
265 |
261 * system: Proof General keywords specification is now part of the |
266 * system: Proof General keywords specification is now part of the |
262 Isabelle distribution (see etc/isar-keywords.el); |
267 Isabelle distribution (see etc/isar-keywords.el); |
263 |
268 |
264 * system: smart selection of Isabelle process versus Isabelle |
269 * system: smart selection of Isabelle process versus Isabelle |