NEWS
changeset 12280 fc7e3f01bc40
parent 12253 1886dc96b7e9
child 12312 f0f06950820d
equal deleted inserted replaced
12279:dc3020e938e2 12280:fc7e3f01bc40
    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 
   120 "(permissive)" option to recover old behavior;
   115 "(permissive)" option to recover old behavior;
   121 
   116 
   122 * HOL: 'inductive' no longer features separate (collective) attributes
   117 * HOL: 'inductive' no longer features separate (collective) attributes
   123 for 'intros' (was found too confusing);
   118 for 'intros' (was found too confusing);
   124 
   119 
       
   120 * HOLCF: domain package adapted to new-style theories, e.g. see
       
   121 HOLCF/ex/Dnat.thy;
       
   122 
       
   123 * ZF: proper integration of logic-specific tools and packages,
       
   124 including theory commands '(co)inductive', '(co)datatype',
       
   125 'rep_datatype', 'inductive_cases', as well as methods 'ind_cases',
       
   126 'induct_tac', 'case_tac', and 'typecheck' (with attribute 'TC');
       
   127 
   125 
   128 
   126 
   129 
   127 *** HOL ***
   130 *** HOL ***
   128 
   131 
   129 * HOL: moved over to sane numeral syntax; the new policy is as
   132 * HOL: moved over to sane numeral syntax; the new policy is as
   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