| author | wenzelm | 
| Fri, 15 Oct 2010 20:36:52 +0100 | |
| changeset 39853 | a5a731dec31c | 
| parent 39771 | 553f9b9aed28 | 
| child 39910 | 10097e0a9dbd | 
| permissions | -rw-r--r-- | 
| 5363 | 1 | Isabelle NEWS -- history user-relevant changes | 
| 2 | ============================================== | |
| 2553 | 3 | |
| 37383 | 4 | New in this Isabelle version | 
| 5 | ---------------------------- | |
| 6 | ||
| 37536 
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
 wenzelm parents: 
37484diff
changeset | 7 | *** General *** | 
| 
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
 wenzelm parents: 
37484diff
changeset | 8 | |
| 
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
 wenzelm parents: 
37484diff
changeset | 9 | * Explicit treatment of UTF8 sequences as Isabelle symbols, such that | 
| 
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
 wenzelm parents: 
37484diff
changeset | 10 | a Unicode character is treated as a single symbol, not a sequence of | 
| 
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
 wenzelm parents: 
37484diff
changeset | 11 | non-ASCII bytes as before. Since Isabelle/ML string literals may | 
| 
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
 wenzelm parents: 
37484diff
changeset | 12 | contain symbols without further backslash escapes, Unicode can now be | 
| 
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
 wenzelm parents: 
37484diff
changeset | 13 | used here as well. Recall that Symbol.explode in ML provides a | 
| 
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
 wenzelm parents: 
37484diff
changeset | 14 | consistent view on symbols, while raw explode (or String.explode) | 
| 
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
 wenzelm parents: 
37484diff
changeset | 15 | merely give a byte-oriented representation. | 
| 
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
 wenzelm parents: 
37484diff
changeset | 16 | |
| 38135 
2b9bfa0b44f1
theory loading: only the master source file is looked-up in the implicit load path;
 wenzelm parents: 
38110diff
changeset | 17 | * Theory loading: only the master source file is looked-up in the | 
| 
2b9bfa0b44f1
theory loading: only the master source file is looked-up in the implicit load path;
 wenzelm parents: 
38110diff
changeset | 18 | implicit load path, all other files are addressed relatively to its | 
| 
2b9bfa0b44f1
theory loading: only the master source file is looked-up in the implicit load path;
 wenzelm parents: 
38110diff
changeset | 19 | directory. Minor INCOMPATIBILITY, subtle change in semantics. | 
| 
2b9bfa0b44f1
theory loading: only the master source file is looked-up in the implicit load path;
 wenzelm parents: 
38110diff
changeset | 20 | |
| 37939 
965537d86fcc
discontinued special treatment of ML files -- no longer complete extensions on demand;
 wenzelm parents: 
37868diff
changeset | 21 | * Special treatment of ML file names has been discontinued. | 
| 
965537d86fcc
discontinued special treatment of ML files -- no longer complete extensions on demand;
 wenzelm parents: 
37868diff
changeset | 22 | Historically, optional extensions .ML or .sml were added on demand -- | 
| 
965537d86fcc
discontinued special treatment of ML files -- no longer complete extensions on demand;
 wenzelm parents: 
37868diff
changeset | 23 | at the cost of clarity of file dependencies. Recall that Isabelle/ML | 
| 
965537d86fcc
discontinued special treatment of ML files -- no longer complete extensions on demand;
 wenzelm parents: 
37868diff
changeset | 24 | files exclusively use the .ML extension. Minor INCOMPATIBILTY. | 
| 
965537d86fcc
discontinued special treatment of ML files -- no longer complete extensions on demand;
 wenzelm parents: 
37868diff
changeset | 25 | |
| 38980 
af73cf0dc31f
turned show_question_marks into proper configuration option;
 wenzelm parents: 
38864diff
changeset | 26 | * Various options that affect pretty printing etc. are now properly | 
| 38767 
d8da44a8dd25
proper context for various Thy_Output options, via official configuration options in ML and Isar;
 wenzelm parents: 
38708diff
changeset | 27 | handled within the context via configuration options, instead of | 
| 
d8da44a8dd25
proper context for various Thy_Output options, via official configuration options in ML and Isar;
 wenzelm parents: 
38708diff
changeset | 28 | unsynchronized references. There are both ML Config.T entities and | 
| 
d8da44a8dd25
proper context for various Thy_Output options, via official configuration options in ML and Isar;
 wenzelm parents: 
38708diff
changeset | 29 | Isar declaration attributes to access these. | 
| 
d8da44a8dd25
proper context for various Thy_Output options, via official configuration options in ML and Isar;
 wenzelm parents: 
38708diff
changeset | 30 | |
| 39125 
f45d332a90e3
pretty_goals: turned some global references and function arguments into configuration options (goals_limit = 10, goals_total = true, show_main_goal = false) depending on the context;
 wenzelm parents: 
39105diff
changeset | 31 | ML (Config.T) Isar (attribute) | 
| 
f45d332a90e3
pretty_goals: turned some global references and function arguments into configuration options (goals_limit = 10, goals_total = true, show_main_goal = false) depending on the context;
 wenzelm parents: 
39105diff
changeset | 32 | |
| 39128 
93a7365fb4ee
turned eta_contract into proper configuration option;
 wenzelm parents: 
39126diff
changeset | 33 | eta_contract eta_contract | 
| 39137 
ccb53edd59f0
turned show_brackets into proper configuration option;
 wenzelm parents: 
39134diff
changeset | 34 | show_brackets show_brackets | 
| 39134 
917b4b6ba3d2
turned show_sorts/show_types into proper configuration options;
 wenzelm parents: 
39128diff
changeset | 35 | show_sorts show_sorts | 
| 
917b4b6ba3d2
turned show_sorts/show_types into proper configuration options;
 wenzelm parents: 
39128diff
changeset | 36 | show_types show_types | 
| 39126 
ee117c5b3b75
configuration options Syntax.ambiguity_enabled (inverse of former Syntax.ambiguity_is_error), Syntax.ambiguity_level (with Isar attribute "syntax_ambiguity_level"), Syntax.ambiguity_limit;
 wenzelm parents: 
39125diff
changeset | 37 | show_question_marks show_question_marks | 
| 
ee117c5b3b75
configuration options Syntax.ambiguity_enabled (inverse of former Syntax.ambiguity_is_error), Syntax.ambiguity_level (with Isar attribute "syntax_ambiguity_level"), Syntax.ambiguity_limit;
 wenzelm parents: 
39125diff
changeset | 38 | show_consts show_consts | 
| 
ee117c5b3b75
configuration options Syntax.ambiguity_enabled (inverse of former Syntax.ambiguity_is_error), Syntax.ambiguity_level (with Isar attribute "syntax_ambiguity_level"), Syntax.ambiguity_limit;
 wenzelm parents: 
39125diff
changeset | 39 | |
| 
ee117c5b3b75
configuration options Syntax.ambiguity_enabled (inverse of former Syntax.ambiguity_is_error), Syntax.ambiguity_level (with Isar attribute "syntax_ambiguity_level"), Syntax.ambiguity_limit;
 wenzelm parents: 
39125diff
changeset | 40 | Syntax.ambiguity_level syntax_ambiguity_level | 
| 
ee117c5b3b75
configuration options Syntax.ambiguity_enabled (inverse of former Syntax.ambiguity_is_error), Syntax.ambiguity_level (with Isar attribute "syntax_ambiguity_level"), Syntax.ambiguity_limit;
 wenzelm parents: 
39125diff
changeset | 41 | |
| 
ee117c5b3b75
configuration options Syntax.ambiguity_enabled (inverse of former Syntax.ambiguity_is_error), Syntax.ambiguity_level (with Isar attribute "syntax_ambiguity_level"), Syntax.ambiguity_limit;
 wenzelm parents: 
39125diff
changeset | 42 | Goal_Display.goals_limit goals_limit | 
| 
ee117c5b3b75
configuration options Syntax.ambiguity_enabled (inverse of former Syntax.ambiguity_is_error), Syntax.ambiguity_level (with Isar attribute "syntax_ambiguity_level"), Syntax.ambiguity_limit;
 wenzelm parents: 
39125diff
changeset | 43 | Goal_Display.show_main_goal show_main_goal | 
| 
ee117c5b3b75
configuration options Syntax.ambiguity_enabled (inverse of former Syntax.ambiguity_is_error), Syntax.ambiguity_level (with Isar attribute "syntax_ambiguity_level"), Syntax.ambiguity_limit;
 wenzelm parents: 
39125diff
changeset | 44 | |
| 39125 
f45d332a90e3
pretty_goals: turned some global references and function arguments into configuration options (goals_limit = 10, goals_total = true, show_main_goal = false) depending on the context;
 wenzelm parents: 
39105diff
changeset | 45 | Thy_Output.display thy_output_display | 
| 
f45d332a90e3
pretty_goals: turned some global references and function arguments into configuration options (goals_limit = 10, goals_total = true, show_main_goal = false) depending on the context;
 wenzelm parents: 
39105diff
changeset | 46 | Thy_Output.quotes thy_output_quotes | 
| 
f45d332a90e3
pretty_goals: turned some global references and function arguments into configuration options (goals_limit = 10, goals_total = true, show_main_goal = false) depending on the context;
 wenzelm parents: 
39105diff
changeset | 47 | Thy_Output.indent thy_output_indent | 
| 
f45d332a90e3
pretty_goals: turned some global references and function arguments into configuration options (goals_limit = 10, goals_total = true, show_main_goal = false) depending on the context;
 wenzelm parents: 
39105diff
changeset | 48 | Thy_Output.source thy_output_source | 
| 
f45d332a90e3
pretty_goals: turned some global references and function arguments into configuration options (goals_limit = 10, goals_total = true, show_main_goal = false) depending on the context;
 wenzelm parents: 
39105diff
changeset | 49 | Thy_Output.break thy_output_break | 
| 
f45d332a90e3
pretty_goals: turned some global references and function arguments into configuration options (goals_limit = 10, goals_total = true, show_main_goal = false) depending on the context;
 wenzelm parents: 
39105diff
changeset | 50 | |
| 
f45d332a90e3
pretty_goals: turned some global references and function arguments into configuration options (goals_limit = 10, goals_total = true, show_main_goal = false) depending on the context;
 wenzelm parents: 
39105diff
changeset | 51 | Note that corresponding "..._default" references in ML may be only | 
| 38767 
d8da44a8dd25
proper context for various Thy_Output options, via official configuration options in ML and Isar;
 wenzelm parents: 
38708diff
changeset | 52 | changed globally at the ROOT session setup, but *not* within a theory. | 
| 
d8da44a8dd25
proper context for various Thy_Output options, via official configuration options in ML and Isar;
 wenzelm parents: 
38708diff
changeset | 53 | |
| 37536 
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
 wenzelm parents: 
37484diff
changeset | 54 | |
| 38110 | 55 | *** Pure *** | 
| 56 | ||
| 57 | * Interpretation command 'interpret' accepts a list of equations like | |
| 58 | 'interpretation' does. | |
| 59 | ||
| 60 | * Diagnostic command 'print_interps' prints interpretations in proofs | |
| 61 | in addition to interpretations in theories. | |
| 62 | ||
| 38708 
8915e3ce8655
discontinued obsolete 'global' and 'local' commands;
 wenzelm parents: 
38656diff
changeset | 63 | * Discontinued obsolete 'global' and 'local' commands to manipulate | 
| 
8915e3ce8655
discontinued obsolete 'global' and 'local' commands;
 wenzelm parents: 
38656diff
changeset | 64 | the theory name space. Rare INCOMPATIBILITY. The ML functions | 
| 
8915e3ce8655
discontinued obsolete 'global' and 'local' commands;
 wenzelm parents: 
38656diff
changeset | 65 | Sign.root_path and Sign.local_path may be applied directly where this | 
| 
8915e3ce8655
discontinued obsolete 'global' and 'local' commands;
 wenzelm parents: 
38656diff
changeset | 66 | feature is still required for historical reasons. | 
| 
8915e3ce8655
discontinued obsolete 'global' and 'local' commands;
 wenzelm parents: 
38656diff
changeset | 67 | |
| 39215 | 68 | * Discontinued ancient 'constdefs' command. INCOMPATIBILITY, use | 
| 69 | 'definition' instead. | |
| 70 | ||
| 39689 
78b185bf7660
clarified @{type} antiquotation: abbreviations and nonterminals count as "syntactic", disallow TFrees;
 wenzelm parents: 
39644diff
changeset | 71 | * Document antiquotations @{class} and @{type} for printing classes
 | 
| 39305 
d4fa19eb0822
'class' and 'type' are now antiquoations by default
 haftmann parents: 
39277diff
changeset | 72 | and type constructors. | 
| 
d4fa19eb0822
'class' and 'type' are now antiquoations by default
 haftmann parents: 
39277diff
changeset | 73 | |
| 38110 | 74 | |
| 37387 
3581483cca6c
qualified types "+" and nat; qualified constants Ball, Bex, Suc, curry; modernized some specifications
 haftmann parents: 
37383diff
changeset | 75 | *** HOL *** | 
| 
3581483cca6c
qualified types "+" and nat; qualified constants Ball, Bex, Suc, curry; modernized some specifications
 haftmann parents: 
37383diff
changeset | 76 | |
| 39771 | 77 | * Dropped old primrec package. INCOMPATIBILITY. | 
| 78 | ||
| 39644 | 79 | * Improved infrastructure for term evaluation using code generator | 
| 80 | techniques, in particular static evaluation conversions. | |
| 81 | ||
| 39771 | 82 | * String.literal is a type, but not a datatype. INCOMPATIBILITY. | 
| 39250 
548a3e5521ab
changing String.literal to a type instead of a datatype
 bulwahn parents: 
39215diff
changeset | 83 | |
| 39302 
d7728f65b353
renamed lemmas: ext_iff -> fun_eq_iff, set_ext_iff -> set_eq_iff, set_ext -> set_eqI
 nipkow parents: 
39301diff
changeset | 84 | * Renamed lemmas: | 
| 
d7728f65b353
renamed lemmas: ext_iff -> fun_eq_iff, set_ext_iff -> set_eq_iff, set_ext -> set_eqI
 nipkow parents: 
39301diff
changeset | 85 | expand_fun_eq -> fun_eq_iff | 
| 
d7728f65b353
renamed lemmas: ext_iff -> fun_eq_iff, set_ext_iff -> set_eq_iff, set_ext -> set_eqI
 nipkow parents: 
39301diff
changeset | 86 | expand_set_eq -> set_eq_iff | 
| 
d7728f65b353
renamed lemmas: ext_iff -> fun_eq_iff, set_ext_iff -> set_eq_iff, set_ext -> set_eqI
 nipkow parents: 
39301diff
changeset | 87 | set_ext -> set_eqI | 
| 39644 | 88 | INCOMPATIBILITY. | 
| 39199 | 89 | |
| 38857 
97775f3e8722
renamed class/constant eq to equal; tuned some instantiations
 haftmann parents: 
38815diff
changeset | 90 | * Renamed class eq and constant eq (for code generation) to class equal | 
| 
97775f3e8722
renamed class/constant eq to equal; tuned some instantiations
 haftmann parents: 
38815diff
changeset | 91 | and constant equal, plus renaming of related facts and various tuning. | 
| 
97775f3e8722
renamed class/constant eq to equal; tuned some instantiations
 haftmann parents: 
38815diff
changeset | 92 | INCOMPATIBILITY. | 
| 
97775f3e8722
renamed class/constant eq to equal; tuned some instantiations
 haftmann parents: 
38815diff
changeset | 93 | |
| 38814 | 94 | * Scala (2.8 or higher) has been added to the target languages of | 
| 95 | the code generator. | |
| 96 | ||
| 38642 
8fa437809c67
dropped type classes mult_mono and mult_mono1; tuned names of technical rule duplicates
 haftmann parents: 
38622diff
changeset | 97 | * Dropped type classes mult_mono and mult_mono1. INCOMPATIBILITY. | 
| 
8fa437809c67
dropped type classes mult_mono and mult_mono1; tuned names of technical rule duplicates
 haftmann parents: 
38622diff
changeset | 98 | |
| 38622 | 99 | * Theory SetsAndFunctions has been split into Function_Algebras and Set_Algebras; | 
| 100 | canonical names for instance definitions for functions; various improvements. | |
| 101 | INCOMPATIBILITY. | |
| 102 | ||
| 38545 | 103 | * Records: logical foundation type for records do not carry a '_type' suffix | 
| 104 | any longer. INCOMPATIBILITY. | |
| 105 | ||
| 38535 | 106 | * Code generation for records: more idiomatic representation of record types. | 
| 107 | Warning: records are not covered by ancient SML code generation any longer. | |
| 38537 | 108 | INCOMPATIBILITY. In cases of need, a suitable rep_datatype declaration | 
| 109 | helps to succeed then: | |
| 110 | ||
| 111 | record 'a foo = ... | |
| 112 | ... | |
| 113 | rep_datatype foo_ext ... | |
| 38535 | 114 | |
| 38461 | 115 | * Session Imperative_HOL: revamped, corrected dozens of inadequacies. | 
| 116 | INCOMPATIBILITY. | |
| 117 | ||
| 118 | * Quickcheck in locales considers interpretations of that locale for | |
| 119 | counter example search. | |
| 120 | ||
| 38347 | 121 | * Theory Library/Monad_Syntax provides do-syntax for monad types. Syntax | 
| 122 | in Library/State_Monad has been changed to avoid ambiguities. | |
| 123 | INCOMPATIBILITY. | |
| 124 | ||
| 38461 | 125 | * Code generator: export_code without explicit file declaration prints | 
| 37820 
ffaca9167c16
export_code without file prints to standard output
 haftmann parents: 
37735diff
changeset | 126 | to standard output. INCOMPATIBILITY. | 
| 
ffaca9167c16
export_code without file prints to standard output
 haftmann parents: 
37735diff
changeset | 127 | |
| 37679 
03217132b792
"prod" and "sum" replace "*" and "+" respectively; qualified constants Set.member and Set.Collect
 haftmann parents: 
37666diff
changeset | 128 | * Abolished symbol type names: "prod" and "sum" replace "*" and "+" | 
| 37681 | 129 | respectively. INCOMPATIBILITY. | 
| 37679 
03217132b792
"prod" and "sum" replace "*" and "+" respectively; qualified constants Set.member and Set.Collect
 haftmann parents: 
37666diff
changeset | 130 | |
| 37591 | 131 | * Constant "split" has been merged with constant "prod_case"; names | 
| 132 | of ML functions, facts etc. involving split have been retained so far, | |
| 133 | though. INCOMPATIBILITY. | |
| 134 | ||
| 37595 
9591362629e3
dropped ancient infix mem; refined code generation operations in List.thy
 haftmann parents: 
37484diff
changeset | 135 | * Dropped old infix syntax "mem" for List.member; use "in set" | 
| 
9591362629e3
dropped ancient infix mem; refined code generation operations in List.thy
 haftmann parents: 
37484diff
changeset | 136 | instead. INCOMPATIBILITY. | 
| 
9591362629e3
dropped ancient infix mem; refined code generation operations in List.thy
 haftmann parents: 
37484diff
changeset | 137 | |
| 
9591362629e3
dropped ancient infix mem; refined code generation operations in List.thy
 haftmann parents: 
37484diff
changeset | 138 | * Refactoring of code-generation specific operations in List.thy | 
| 
9591362629e3
dropped ancient infix mem; refined code generation operations in List.thy
 haftmann parents: 
37484diff
changeset | 139 | |
| 
9591362629e3
dropped ancient infix mem; refined code generation operations in List.thy
 haftmann parents: 
37484diff
changeset | 140 | constants | 
| 
9591362629e3
dropped ancient infix mem; refined code generation operations in List.thy
 haftmann parents: 
37484diff
changeset | 141 | null ~> List.null | 
| 
9591362629e3
dropped ancient infix mem; refined code generation operations in List.thy
 haftmann parents: 
37484diff
changeset | 142 | |
| 
9591362629e3
dropped ancient infix mem; refined code generation operations in List.thy
 haftmann parents: 
37484diff
changeset | 143 | facts | 
| 
9591362629e3
dropped ancient infix mem; refined code generation operations in List.thy
 haftmann parents: 
37484diff
changeset | 144 | mem_iff ~> member_def | 
| 
9591362629e3
dropped ancient infix mem; refined code generation operations in List.thy
 haftmann parents: 
37484diff
changeset | 145 | null_empty ~> null_def | 
| 
9591362629e3
dropped ancient infix mem; refined code generation operations in List.thy
 haftmann parents: 
37484diff
changeset | 146 | |
| 
9591362629e3
dropped ancient infix mem; refined code generation operations in List.thy
 haftmann parents: 
37484diff
changeset | 147 | INCOMPATIBILITY. Note that these were not suppossed to be used | 
| 
9591362629e3
dropped ancient infix mem; refined code generation operations in List.thy
 haftmann parents: 
37484diff
changeset | 148 | regularly unless for striking reasons; their main purpose was code | 
| 
9591362629e3
dropped ancient infix mem; refined code generation operations in List.thy
 haftmann parents: 
37484diff
changeset | 149 | generation. | 
| 
9591362629e3
dropped ancient infix mem; refined code generation operations in List.thy
 haftmann parents: 
37484diff
changeset | 150 | |
| 37387 
3581483cca6c
qualified types "+" and nat; qualified constants Ball, Bex, Suc, curry; modernized some specifications
 haftmann parents: 
37383diff
changeset | 151 | * Some previously unqualified names have been qualified: | 
| 
3581483cca6c
qualified types "+" and nat; qualified constants Ball, Bex, Suc, curry; modernized some specifications
 haftmann parents: 
37383diff
changeset | 152 | |
| 
3581483cca6c
qualified types "+" and nat; qualified constants Ball, Bex, Suc, curry; modernized some specifications
 haftmann parents: 
37383diff
changeset | 153 | types | 
| 38556 | 154 | bool ~> HOL.bool | 
| 37387 
3581483cca6c
qualified types "+" and nat; qualified constants Ball, Bex, Suc, curry; modernized some specifications
 haftmann parents: 
37383diff
changeset | 155 | nat ~> Nat.nat | 
| 
3581483cca6c
qualified types "+" and nat; qualified constants Ball, Bex, Suc, curry; modernized some specifications
 haftmann parents: 
37383diff
changeset | 156 | |
| 
3581483cca6c
qualified types "+" and nat; qualified constants Ball, Bex, Suc, curry; modernized some specifications
 haftmann parents: 
37383diff
changeset | 157 | constants | 
| 38556 | 158 | Trueprop ~> HOL.Trueprop | 
| 159 | True ~> HOL.True | |
| 160 | False ~> HOL.False | |
| 38795 
848be46708dc
formerly unnamed infix conjunction and disjunction now named HOL.conj and HOL.disj
 haftmann parents: 
38788diff
changeset | 161 | op & ~> HOL.conj | 
| 
848be46708dc
formerly unnamed infix conjunction and disjunction now named HOL.conj and HOL.disj
 haftmann parents: 
38788diff
changeset | 162 | op | ~> HOL.disj | 
| 38788 | 163 | op --> ~> HOL.implies | 
| 38864 
4abe644fcea5
formerly unnamed infix equality now named HOL.eq
 haftmann parents: 
38858diff
changeset | 164 | op = ~> HOL.eq | 
| 38556 | 165 | Not ~> HOL.Not | 
| 166 | The ~> HOL.The | |
| 167 | All ~> HOL.All | |
| 168 | Ex ~> HOL.Ex | |
| 169 | Ex1 ~> HOL.Ex1 | |
| 38524 | 170 | Let ~> HOL.Let | 
| 171 | If ~> HOL.If | |
| 37387 
3581483cca6c
qualified types "+" and nat; qualified constants Ball, Bex, Suc, curry; modernized some specifications
 haftmann parents: 
37383diff
changeset | 172 | Ball ~> Set.Ball | 
| 
3581483cca6c
qualified types "+" and nat; qualified constants Ball, Bex, Suc, curry; modernized some specifications
 haftmann parents: 
37383diff
changeset | 173 | Bex ~> Set.Bex | 
| 
3581483cca6c
qualified types "+" and nat; qualified constants Ball, Bex, Suc, curry; modernized some specifications
 haftmann parents: 
37383diff
changeset | 174 | Suc ~> Nat.Suc | 
| 37389 
09467cdfa198
qualified type "*"; qualified constants Pair, fst, snd, split
 haftmann parents: 
37387diff
changeset | 175 | Pair ~> Product_Type.Pair | 
| 
09467cdfa198
qualified type "*"; qualified constants Pair, fst, snd, split
 haftmann parents: 
37387diff
changeset | 176 | fst ~> Product_Type.fst | 
| 
09467cdfa198
qualified type "*"; qualified constants Pair, fst, snd, split
 haftmann parents: 
37387diff
changeset | 177 | snd ~> Product_Type.snd | 
| 37387 
3581483cca6c
qualified types "+" and nat; qualified constants Ball, Bex, Suc, curry; modernized some specifications
 haftmann parents: 
37383diff
changeset | 178 | curry ~> Product_Type.curry | 
| 37679 
03217132b792
"prod" and "sum" replace "*" and "+" respectively; qualified constants Set.member and Set.Collect
 haftmann parents: 
37666diff
changeset | 179 | op : ~> Set.member | 
| 
03217132b792
"prod" and "sum" replace "*" and "+" respectively; qualified constants Set.member and Set.Collect
 haftmann parents: 
37666diff
changeset | 180 | Collect ~> Set.Collect | 
| 37387 
3581483cca6c
qualified types "+" and nat; qualified constants Ball, Bex, Suc, curry; modernized some specifications
 haftmann parents: 
37383diff
changeset | 181 | |
| 
3581483cca6c
qualified types "+" and nat; qualified constants Ball, Bex, Suc, curry; modernized some specifications
 haftmann parents: 
37383diff
changeset | 182 | INCOMPATIBILITY. | 
| 37383 | 183 | |
| 37411 
c88c44156083
removed simplifier congruence rule of "prod_case"
 haftmann parents: 
37389diff
changeset | 184 | * Removed simplifier congruence rule of "prod_case", as has for long | 
| 38524 | 185 | been the case with "split". INCOMPATIBILITY. | 
| 37411 
c88c44156083
removed simplifier congruence rule of "prod_case"
 haftmann parents: 
37389diff
changeset | 186 | |
| 37423 | 187 | * Datatype package: theorems generated for executable equality | 
| 188 | (class eq) carry proper names and are treated as default code | |
| 189 | equations. | |
| 190 | ||
| 39150 | 191 | * Removed lemma Option.is_none_none (Duplicate of is_none_def). | 
| 192 | INCOMPATIBILITY. | |
| 193 | ||
| 37423 | 194 | * List.thy: use various operations from the Haskell prelude when | 
| 195 | generating Haskell code. | |
| 196 | ||
| 39301 | 197 | * Multiset.thy: renamed empty_idemp -> empty_neutral | 
| 198 | ||
| 38524 | 199 | * code_simp.ML and method code_simp: simplification with rules determined | 
| 200 | by code generator. | |
| 37442 | 201 | |
| 202 | * code generator: do not print function definitions for case | |
| 203 | combinators any longer. | |
| 204 | ||
| 37666 | 205 | * Multivariate Analysis: Introduced a type class for euclidean space. Most | 
| 206 | theorems are now stated in terms of euclidean spaces instead of finite | |
| 207 | cartesian products. | |
| 208 | ||
| 209 | types | |
| 210 | real ^ 'n ~> 'a::real_vector | |
| 211 | ~> 'a::euclidean_space | |
| 212 | ~> 'a::ordered_euclidean_space | |
| 213 | (depends on your needs) | |
| 214 | ||
| 215 | constants | |
| 216 | _ $ _ ~> _ $$ _ | |
| 217 | \<chi> x. _ ~> \<chi>\<chi> x. _ | |
| 218 |      CARD('n)     ~> DIM('a)
 | |
| 219 | ||
| 220 | Also note that the indices are now natural numbers and not from some finite | |
| 221 | type. Finite cartesian products of euclidean spaces, products of euclidean | |
| 222 | spaces the real and complex numbers are instantiated to be euclidean_spaces. | |
| 223 | ||
| 224 | INCOMPATIBILITY. | |
| 37383 | 225 | |
| 38656 | 226 | * Probability: Introduced pinfreal as real numbers with infinity. Use pinfreal | 
| 227 | as value for measures. Introduces Lebesgue Measure based on the integral in | |
| 228 | Multivariate Analysis. Proved Radon Nikodym for arbitrary sigma finite measure | |
| 229 | spaces. | |
| 230 | ||
| 231 | INCOMPATIBILITY. | |
| 232 | ||
| 37735 | 233 | * Inductive package: offers new command "inductive_simps" to automatically | 
| 38461 | 234 | derive instantiated and simplified equations for inductive predicates, | 
| 235 | similar to inductive_cases. | |
| 37735 | 236 | |
| 39077 | 237 | * "bij f" is now an abbreviation of "bij_betw f UNIV UNIV". surj_on is a | 
| 238 | generalization of surj, and "surj f" is now a abbreviation of "surj_on f UNIV". | |
| 239 | The theorems bij_def and surj_def are unchanged. | |
| 37383 | 240 | |
| 39754 | 241 | * Function package: .psimps rules are no longer implicitly declared [simp]. | 
| 242 | INCOMPATIBILITY. | |
| 243 | ||
| 38522 | 244 | *** FOL *** | 
| 245 | ||
| 246 | * All constant names are now qualified. INCOMPATIBILITY. | |
| 247 | ||
| 248 | ||
| 249 | *** ZF *** | |
| 250 | ||
| 251 | * All constant names are now qualified. INCOMPATIBILITY. | |
| 252 | ||
| 253 | ||
| 37868 
59eed00bfd8e
ML antiquotations @{theory} and @{theory_ref} refer to the theory ancestry, not any accidental theory loader state;
 wenzelm parents: 
37820diff
changeset | 254 | *** ML *** | 
| 
59eed00bfd8e
ML antiquotations @{theory} and @{theory_ref} refer to the theory ancestry, not any accidental theory loader state;
 wenzelm parents: 
37820diff
changeset | 255 | |
| 39616 
8052101883c3
renamed setmp_noncritical to Unsynchronized.setmp to emphasize its meaning;
 wenzelm parents: 
39557diff
changeset | 256 | * Renamed setmp_noncritical to Unsynchronized.setmp to emphasize its | 
| 
8052101883c3
renamed setmp_noncritical to Unsynchronized.setmp to emphasize its meaning;
 wenzelm parents: 
39557diff
changeset | 257 | meaning. | 
| 
8052101883c3
renamed setmp_noncritical to Unsynchronized.setmp to emphasize its meaning;
 wenzelm parents: 
39557diff
changeset | 258 | |
| 39557 
fe5722fce758
renamed structure PureThy to Pure_Thy and moved most content to Global_Theory, to emphasize that this is global-only;
 wenzelm parents: 
39513diff
changeset | 259 | * Renamed structure PureThy to Pure_Thy and moved most of its | 
| 
fe5722fce758
renamed structure PureThy to Pure_Thy and moved most content to Global_Theory, to emphasize that this is global-only;
 wenzelm parents: 
39513diff
changeset | 260 | operations to structure Global_Theory, to emphasize that this is | 
| 
fe5722fce758
renamed structure PureThy to Pure_Thy and moved most content to Global_Theory, to emphasize that this is global-only;
 wenzelm parents: 
39513diff
changeset | 261 | rarely-used global-only stuff. | 
| 
fe5722fce758
renamed structure PureThy to Pure_Thy and moved most content to Global_Theory, to emphasize that this is global-only;
 wenzelm parents: 
39513diff
changeset | 262 | |
| 39513 
fce2202892c4
discontinued Output.debug, which belongs to early PGIP experiments (b6788dbd2ef9) and causes just too many problems (like spamming the message channel if it is used by more than one module);
 wenzelm parents: 
39308diff
changeset | 263 | * Discontinued Output.debug. Minor INCOMPATIBILITY, use plain writeln | 
| 
fce2202892c4
discontinued Output.debug, which belongs to early PGIP experiments (b6788dbd2ef9) and causes just too many problems (like spamming the message channel if it is used by more than one module);
 wenzelm parents: 
39308diff
changeset | 264 | instead (or tracing for high-volume output). | 
| 
fce2202892c4
discontinued Output.debug, which belongs to early PGIP experiments (b6788dbd2ef9) and causes just too many problems (like spamming the message channel if it is used by more than one module);
 wenzelm parents: 
39308diff
changeset | 265 | |
| 38980 
af73cf0dc31f
turned show_question_marks into proper configuration option;
 wenzelm parents: 
38864diff
changeset | 266 | * Configuration option show_question_marks only affects regular pretty | 
| 
af73cf0dc31f
turned show_question_marks into proper configuration option;
 wenzelm parents: 
38864diff
changeset | 267 | printing of types and terms, not raw Term.string_of_vname. | 
| 
af73cf0dc31f
turned show_question_marks into proper configuration option;
 wenzelm parents: 
38864diff
changeset | 268 | |
| 39164 
e7e12555e763
ML_Context.thm and ML_Context.thms no longer pervasive;
 wenzelm parents: 
39154diff
changeset | 269 | * ML_Context.thm and ML_Context.thms are no longer pervasive. Rare | 
| 
e7e12555e763
ML_Context.thm and ML_Context.thms no longer pervasive;
 wenzelm parents: 
39154diff
changeset | 270 | INCOMPATIBILITY, superseded by static antiquotations @{thm} and
 | 
| 
e7e12555e763
ML_Context.thm and ML_Context.thms no longer pervasive;
 wenzelm parents: 
39154diff
changeset | 271 | @{thms} for most purposes.
 | 
| 
e7e12555e763
ML_Context.thm and ML_Context.thms no longer pervasive;
 wenzelm parents: 
39154diff
changeset | 272 | |
| 38980 
af73cf0dc31f
turned show_question_marks into proper configuration option;
 wenzelm parents: 
38864diff
changeset | 273 | * ML structure Unsynchronized never opened, not even in Isar | 
| 
af73cf0dc31f
turned show_question_marks into proper configuration option;
 wenzelm parents: 
38864diff
changeset | 274 | interaction mode as before. Old Unsynchronized.set etc. have been | 
| 
af73cf0dc31f
turned show_question_marks into proper configuration option;
 wenzelm parents: 
38864diff
changeset | 275 | discontinued -- use plain := instead. This should be *rare* anyway, | 
| 
af73cf0dc31f
turned show_question_marks into proper configuration option;
 wenzelm parents: 
38864diff
changeset | 276 | since modern tools always work via official context data, notably | 
| 
af73cf0dc31f
turned show_question_marks into proper configuration option;
 wenzelm parents: 
38864diff
changeset | 277 | configuration options. | 
| 
af73cf0dc31f
turned show_question_marks into proper configuration option;
 wenzelm parents: 
38864diff
changeset | 278 | |
| 37868 
59eed00bfd8e
ML antiquotations @{theory} and @{theory_ref} refer to the theory ancestry, not any accidental theory loader state;
 wenzelm parents: 
37820diff
changeset | 279 | * ML antiquotations @{theory} and @{theory_ref} refer to named
 | 
| 
59eed00bfd8e
ML antiquotations @{theory} and @{theory_ref} refer to the theory ancestry, not any accidental theory loader state;
 wenzelm parents: 
37820diff
changeset | 280 | theories from the ancestry of the current context, not any accidental | 
| 
59eed00bfd8e
ML antiquotations @{theory} and @{theory_ref} refer to the theory ancestry, not any accidental theory loader state;
 wenzelm parents: 
37820diff
changeset | 281 | theory loader state as before. Potential INCOMPATIBILITY, subtle | 
| 
59eed00bfd8e
ML antiquotations @{theory} and @{theory_ref} refer to the theory ancestry, not any accidental theory loader state;
 wenzelm parents: 
37820diff
changeset | 282 | change in semantics. | 
| 
59eed00bfd8e
ML antiquotations @{theory} and @{theory_ref} refer to the theory ancestry, not any accidental theory loader state;
 wenzelm parents: 
37820diff
changeset | 283 | |
| 39239 | 284 | * Parallel and asynchronous execution requires special care concerning | 
| 285 | interrupts. Structure Exn provides some convenience functions that | |
| 286 | avoid working directly with raw Interrupt. User code must not absorb | |
| 287 | interrupts -- intermediate handling (for cleanup etc.) needs to be | |
| 288 | followed by re-raising of the original exception. Another common | |
| 289 | source of mistakes are "handle _" patterns, which make the meaning of | |
| 290 | the program subject to physical effects of the environment. | |
| 291 | ||
| 37868 
59eed00bfd8e
ML antiquotations @{theory} and @{theory_ref} refer to the theory ancestry, not any accidental theory loader state;
 wenzelm parents: 
37820diff
changeset | 292 | |
| 38470 
484e483eb606
discontinued support for Poly/ML 5.0 and 5.1 versions;
 wenzelm parents: 
38461diff
changeset | 293 | *** System *** | 
| 
484e483eb606
discontinued support for Poly/ML 5.0 and 5.1 versions;
 wenzelm parents: 
38461diff
changeset | 294 | |
| 
484e483eb606
discontinued support for Poly/ML 5.0 and 5.1 versions;
 wenzelm parents: 
38461diff
changeset | 295 | * Discontinued support for Poly/ML 5.0 and 5.1 versions. | 
| 
484e483eb606
discontinued support for Poly/ML 5.0 and 5.1 versions;
 wenzelm parents: 
38461diff
changeset | 296 | |
| 
484e483eb606
discontinued support for Poly/ML 5.0 and 5.1 versions;
 wenzelm parents: 
38461diff
changeset | 297 | |
| 37868 
59eed00bfd8e
ML antiquotations @{theory} and @{theory_ref} refer to the theory ancestry, not any accidental theory loader state;
 wenzelm parents: 
37820diff
changeset | 298 | |
| 37144 | 299 | New in Isabelle2009-2 (June 2010) | 
| 300 | --------------------------------- | |
| 33993 | 301 | |
| 35260 | 302 | *** General *** | 
| 303 | ||
| 35436 | 304 | * Authentic syntax for *all* logical entities (type classes, type | 
| 305 | constructors, term constants): provides simple and robust | |
| 306 | correspondence between formal entities and concrete syntax. Within | |
| 307 | the parse tree / AST representations, "constants" are decorated by | |
| 308 | their category (class, type, const) and spelled out explicitly with | |
| 309 | their full internal name. | |
| 310 | ||
| 311 | Substantial INCOMPATIBILITY concerning low-level syntax declarations | |
| 312 | and translations (translation rules and translation functions in ML). | |
| 313 | Some hints on upgrading: | |
| 35260 | 314 | |
| 315 | - Many existing uses of 'syntax' and 'translations' can be replaced | |
| 35436 | 316 | by more modern 'type_notation', 'notation' and 'abbreviation', | 
| 317 | which are independent of this issue. | |
| 35260 | 318 | |
| 319 | - 'translations' require markup within the AST; the term syntax | |
| 320 | provides the following special forms: | |
| 321 | ||
| 322 | CONST c -- produces syntax version of constant c from context | |
| 35261 | 323 | XCONST c -- literally c, checked as constant from context | 
| 324 | c -- literally c, if declared by 'syntax' | |
| 325 | ||
| 326 | Plain identifiers are treated as AST variables -- occasionally the | |
| 327 | system indicates accidental variables via the error "rhs contains | |
| 328 | extra variables". | |
| 35260 | 329 | |
| 35436 | 330 | Type classes and type constructors are marked according to their | 
| 331 | concrete syntax. Some old translations rules need to be written | |
| 332 | for the "type" category, using type constructor application | |
| 333 | instead of pseudo-term application of the default category | |
| 334 | "logic". | |
| 335 | ||
| 35260 | 336 | - 'parse_translation' etc. in ML may use the following | 
| 337 | antiquotations: | |
| 338 | ||
| 35436 | 339 |       @{class_syntax c}   -- type class c within parse tree / AST
 | 
| 340 |       @{term_syntax c}    -- type constructor c within parse tree / AST
 | |
| 35260 | 341 |       @{const_syntax c}   -- ML version of "CONST c" above
 | 
| 342 |       @{syntax_const c}   -- literally c (checked wrt. 'syntax' declarations)
 | |
| 343 | ||
| 35436 | 344 | - Literal types within 'typed_print_translations', i.e. those *not* | 
| 345 |     represented as pseudo-terms are represented verbatim.  Use @{class
 | |
| 346 |     c} or @{type_name c} here instead of the above syntax
 | |
| 347 | antiquotations. | |
| 348 | ||
| 35260 | 349 | Note that old non-authentic syntax was based on unqualified base | 
| 35436 | 350 | names, so all of the above "constant" names would coincide. Recall | 
| 351 | that 'print_syntax' and ML_command "set Syntax.trace_ast" help to | |
| 352 | diagnose syntax problems. | |
| 35260 | 353 | |
| 35351 
7425aece4ee3
allow general mixfix syntax for type constructors;
 wenzelm parents: 
35306diff
changeset | 354 | * Type constructors admit general mixfix syntax, not just infix. | 
| 
7425aece4ee3
allow general mixfix syntax for type constructors;
 wenzelm parents: 
35306diff
changeset | 355 | |
| 36508 
03d2a2d0ee4a
allow concrete syntax for local entities within a proof body, either via regular mixfix annotations to 'fix' etc. or the separate 'write' command;
 wenzelm parents: 
36461diff
changeset | 356 | * Concrete syntax may be attached to local entities without a proof | 
| 
03d2a2d0ee4a
allow concrete syntax for local entities within a proof body, either via regular mixfix annotations to 'fix' etc. or the separate 'write' command;
 wenzelm parents: 
36461diff
changeset | 357 | body, too. This works via regular mixfix annotations for 'fix', | 
| 
03d2a2d0ee4a
allow concrete syntax for local entities within a proof body, either via regular mixfix annotations to 'fix' etc. or the separate 'write' command;
 wenzelm parents: 
36461diff
changeset | 358 | 'def', 'obtain' etc. or via the explicit 'write' command, which is | 
| 
03d2a2d0ee4a
allow concrete syntax for local entities within a proof body, either via regular mixfix annotations to 'fix' etc. or the separate 'write' command;
 wenzelm parents: 
36461diff
changeset | 359 | similar to the 'notation' command in theory specifications. | 
| 
03d2a2d0ee4a
allow concrete syntax for local entities within a proof body, either via regular mixfix annotations to 'fix' etc. or the separate 'write' command;
 wenzelm parents: 
36461diff
changeset | 360 | |
| 37351 | 361 | * Discontinued unnamed infix syntax (legacy feature for many years) -- | 
| 362 | need to specify constant name and syntax separately. Internal ML | |
| 363 | datatype constructors have been renamed from InfixName to Infix etc. | |
| 364 | Minor INCOMPATIBILITY. | |
| 365 | ||
| 366 | * Schematic theorem statements need to be explicitly markup as such, | |
| 367 | via commands 'schematic_lemma', 'schematic_theorem', | |
| 368 | 'schematic_corollary'. Thus the relevance of the proof is made | |
| 369 | syntactically clear, which impacts performance in a parallel or | |
| 370 | asynchronous interactive environment. Minor INCOMPATIBILITY. | |
| 371 | ||
| 35613 | 372 | * Use of cumulative prems via "!" in some proof methods has been | 
| 37351 | 373 | discontinued (old legacy feature). | 
| 35613 | 374 | |
| 35979 
12bb31230550
replaced references 'trace_simp' and 'debug_simp' by configuration options stored in the context
 boehmes parents: 
35845diff
changeset | 375 | * References 'trace_simp' and 'debug_simp' have been replaced by | 
| 36857 | 376 | configuration options stored in the context. Enabling tracing (the | 
| 377 | case of debugging is similar) in proofs works via | |
| 378 | ||
| 379 | using [[trace_simp = true]] | |
| 380 | ||
| 381 | Tracing is then active for all invocations of the simplifier in | |
| 382 | subsequent goal refinement steps. Tracing may also still be enabled or | |
| 383 | disabled via the ProofGeneral settings menu. | |
| 35979 
12bb31230550
replaced references 'trace_simp' and 'debug_simp' by configuration options stored in the context
 boehmes parents: 
35845diff
changeset | 384 | |
| 36177 
8e0770d2e499
separate commands 'hide_class', 'hide_type', 'hide_const', 'hide_fact';
 wenzelm parents: 
36162diff
changeset | 385 | * Separate commands 'hide_class', 'hide_type', 'hide_const', | 
| 
8e0770d2e499
separate commands 'hide_class', 'hide_type', 'hide_const', 'hide_fact';
 wenzelm parents: 
36162diff
changeset | 386 | 'hide_fact' replace the former 'hide' KIND command. Minor | 
| 
8e0770d2e499
separate commands 'hide_class', 'hide_type', 'hide_const', 'hide_fact';
 wenzelm parents: 
36162diff
changeset | 387 | INCOMPATIBILITY. | 
| 
8e0770d2e499
separate commands 'hide_class', 'hide_type', 'hide_const', 'hide_fact';
 wenzelm parents: 
36162diff
changeset | 388 | |
| 37298 
1f3ca94ccb84
improved parallelism of proof term normalization;
 wenzelm parents: 
37273diff
changeset | 389 | * Improved parallelism of proof term normalization: usedir -p2 -q0 is | 
| 
1f3ca94ccb84
improved parallelism of proof term normalization;
 wenzelm parents: 
37273diff
changeset | 390 | more efficient than combinations with -q1 or -q2. | 
| 
1f3ca94ccb84
improved parallelism of proof term normalization;
 wenzelm parents: 
37273diff
changeset | 391 | |
| 35260 | 392 | |
| 34170 
254ac75e4c38
reduced code generator cache to the baremost minimum; corrected spelling
 haftmann parents: 
34076diff
changeset | 393 | *** Pure *** | 
| 
254ac75e4c38
reduced code generator cache to the baremost minimum; corrected spelling
 haftmann parents: 
34076diff
changeset | 394 | |
| 37351 | 395 | * Proofterms record type-class reasoning explicitly, using the | 
| 396 | "unconstrain" operation internally. This eliminates all sort | |
| 397 | constraints from a theorem and proof, introducing explicit | |
| 398 | OFCLASS-premises. On the proof term level, this operation is | |
| 399 | automatically applied at theorem boundaries, such that closed proofs | |
| 400 | are always free of sort constraints. INCOMPATIBILITY for tools that | |
| 401 | inspect proof terms. | |
| 36147 
b43b22f63665
theory RBT with abstract type of red-black trees backed by implementation RBT_Impl
 haftmann parents: 
36096diff
changeset | 402 | |
| 35765 
09e238561460
local theory specifications handle hidden polymorphism implicitly;
 wenzelm parents: 
35763diff
changeset | 403 | * Local theory specifications may depend on extra type variables that | 
| 
09e238561460
local theory specifications handle hidden polymorphism implicitly;
 wenzelm parents: 
35763diff
changeset | 404 | are not present in the result type -- arguments TYPE('a) :: 'a itself
 | 
| 
09e238561460
local theory specifications handle hidden polymorphism implicitly;
 wenzelm parents: 
35763diff
changeset | 405 | are added internally. For example: | 
| 
09e238561460
local theory specifications handle hidden polymorphism implicitly;
 wenzelm parents: 
35763diff
changeset | 406 | |
| 
09e238561460
local theory specifications handle hidden polymorphism implicitly;
 wenzelm parents: 
35763diff
changeset | 407 | definition unitary :: bool where "unitary = (ALL (x::'a) y. x = y)" | 
| 
09e238561460
local theory specifications handle hidden polymorphism implicitly;
 wenzelm parents: 
35763diff
changeset | 408 | |
| 37351 | 409 | * Predicates of locales introduced by classes carry a mandatory | 
| 410 | "class" prefix. INCOMPATIBILITY. | |
| 411 | ||
| 412 | * Vacuous class specifications observe default sort. INCOMPATIBILITY. | |
| 413 | ||
| 414 | * Old 'axclass' command has been discontinued. INCOMPATIBILITY, use | |
| 415 | 'class' instead. | |
| 416 | ||
| 417 | * Command 'code_reflect' allows to incorporate generated ML code into | |
| 418 | runtime environment; replaces immature code_datatype antiquotation. | |
| 419 | INCOMPATIBILITY. | |
| 420 | ||
| 421 | * Code generator: simple concept for abstract datatypes obeying | |
| 422 | invariants. | |
| 423 | ||
| 36857 | 424 | * Code generator: details of internal data cache have no impact on the | 
| 425 | user space functionality any longer. | |
| 426 | ||
| 37351 | 427 | * Methods "unfold_locales" and "intro_locales" ignore non-locale | 
| 428 | subgoals. This is more appropriate for interpretations with 'where'. | |
| 36857 | 429 | INCOMPATIBILITY. | 
| 34170 
254ac75e4c38
reduced code generator cache to the baremost minimum; corrected spelling
 haftmann parents: 
34076diff
changeset | 430 | |
| 36356 
5ab0f8859f9f
command 'example_proof' opens an empty proof body;
 wenzelm parents: 
36348diff
changeset | 431 | * Command 'example_proof' opens an empty proof body. This allows to | 
| 
5ab0f8859f9f
command 'example_proof' opens an empty proof body;
 wenzelm parents: 
36348diff
changeset | 432 | experiment with Isar, without producing any persistent result. | 
| 
5ab0f8859f9f
command 'example_proof' opens an empty proof body;
 wenzelm parents: 
36348diff
changeset | 433 | |
| 35413 | 434 | * Commands 'type_notation' and 'no_type_notation' declare type syntax | 
| 435 | within a local theory context, with explicit checking of the | |
| 436 | constructors involved (in contrast to the raw 'syntax' versions). | |
| 437 | ||
| 36178 
0e5c133b48b6
keep localized 'types' as regular non-old-style version -- 'type_abbrev' as 'type' just causes too many problems, e.g. clash with "type" in translations or "type:" argument syntax;
 wenzelm parents: 
36177diff
changeset | 438 | * Commands 'types' and 'typedecl' now work within a local theory | 
| 
0e5c133b48b6
keep localized 'types' as regular non-old-style version -- 'type_abbrev' as 'type' just causes too many problems, e.g. clash with "type" in translations or "type:" argument syntax;
 wenzelm parents: 
36177diff
changeset | 439 | context -- without introducing dependencies on parameters or | 
| 
0e5c133b48b6
keep localized 'types' as regular non-old-style version -- 'type_abbrev' as 'type' just causes too many problems, e.g. clash with "type" in translations or "type:" argument syntax;
 wenzelm parents: 
36177diff
changeset | 440 | assumptions, which is not possible in Isabelle/Pure. | 
| 35681 | 441 | |
| 36857 | 442 | * Command 'defaultsort' has been renamed to 'default_sort', it works | 
| 443 | within a local theory context. Minor INCOMPATIBILITY. | |
| 36454 
f2b5bcc61a8c
command 'defaultsort' is renamed to 'default_sort', it works within a local theory context;
 wenzelm parents: 
36446diff
changeset | 444 | |
| 34170 
254ac75e4c38
reduced code generator cache to the baremost minimum; corrected spelling
 haftmann parents: 
34076diff
changeset | 445 | |
| 33993 | 446 | *** HOL *** | 
| 447 | ||
| 37351 | 448 | * Command 'typedef' now works within a local theory context -- without | 
| 449 | introducing dependencies on parameters or assumptions, which is not | |
| 450 | possible in Isabelle/Pure/HOL. Note that the logical environment may | |
| 451 | contain multiple interpretations of local typedefs (with different | |
| 452 | non-emptiness proofs), even in a global theory context. | |
| 453 | ||
| 454 | * New package for quotient types. Commands 'quotient_type' and | |
| 455 | 'quotient_definition' may be used for defining types and constants by | |
| 456 | quotient constructions. An example is the type of integers created by | |
| 457 | quotienting pairs of natural numbers: | |
| 37380 | 458 | |
| 37351 | 459 | fun | 
| 37380 | 460 | intrel :: "(nat * nat) => (nat * nat) => bool" | 
| 37351 | 461 | where | 
| 462 | "intrel (x, y) (u, v) = (x + v = u + y)" | |
| 463 | ||
| 37380 | 464 | quotient_type int = "nat * nat" / intrel | 
| 37351 | 465 | by (auto simp add: equivp_def expand_fun_eq) | 
| 37380 | 466 | |
| 37351 | 467 | quotient_definition | 
| 468 | "0::int" is "(0::nat, 0::nat)" | |
| 469 | ||
| 470 | The method "lifting" can be used to lift of theorems from the | |
| 471 | underlying "raw" type to the quotient type. The example | |
| 472 | src/HOL/Quotient_Examples/FSet.thy includes such a quotient | |
| 473 | construction and provides a reasoning infrastructure for finite sets. | |
| 474 | ||
| 475 | * Renamed Library/Quotient.thy to Library/Quotient_Type.thy to avoid | |
| 476 | clash with new theory Quotient in Main HOL. | |
| 477 | ||
| 478 | * Moved the SMT binding into the main HOL session, eliminating | |
| 479 | separate HOL-SMT session. | |
| 480 | ||
| 37020 | 481 | * List membership infix mem operation is only an input abbreviation. | 
| 482 | INCOMPATIBILITY. | |
| 483 | ||
| 37144 | 484 | * Theory Library/Word.thy has been removed. Use library Word/Word.thy | 
| 485 | for future developements; former Library/Word.thy is still present in | |
| 486 | the AFP entry RSAPPS. | |
| 36963 
9a017146675f
dropped old Library/Word.thy and toy example ex/Adder.thy
 haftmann parents: 
36953diff
changeset | 487 | |
| 36857 | 488 | * Theorem Int.int_induct renamed to Int.int_of_nat_induct and is no | 
| 489 | longer shadowed. INCOMPATIBILITY. | |
| 36808 
cbeb3484fa07
theorem Presburger.int_induct has been renamed to Int.int_bidirectional_induct
 haftmann parents: 
36714diff
changeset | 490 | |
| 36836 
49156805321c
removed lemma real_sq_order; use power2_le_imp_le instead
 huffman parents: 
36830diff
changeset | 491 | * Dropped theorem duplicate comp_arith; use semiring_norm instead. | 
| 
49156805321c
removed lemma real_sq_order; use power2_le_imp_le instead
 huffman parents: 
36830diff
changeset | 492 | INCOMPATIBILITY. | 
| 
49156805321c
removed lemma real_sq_order; use power2_le_imp_le instead
 huffman parents: 
36830diff
changeset | 493 | |
| 
49156805321c
removed lemma real_sq_order; use power2_le_imp_le instead
 huffman parents: 
36830diff
changeset | 494 | * Dropped theorem RealPow.real_sq_order; use power2_le_imp_le instead. | 
| 
49156805321c
removed lemma real_sq_order; use power2_le_imp_le instead
 huffman parents: 
36830diff
changeset | 495 | INCOMPATIBILITY. | 
| 36714 | 496 | |
| 36857 | 497 | * Dropped normalizing_semiring etc; use the facts in semiring classes | 
| 498 | instead. INCOMPATIBILITY. | |
| 499 | ||
| 36979 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 500 | * Dropped several real-specific versions of lemmas about floor and | 
| 37351 | 501 | ceiling; use the generic lemmas from theory "Archimedean_Field" | 
| 502 | instead. INCOMPATIBILITY. | |
| 36979 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 503 | |
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 504 | floor_number_of_eq ~> floor_number_of | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 505 | le_floor_eq_number_of ~> number_of_le_floor | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 506 | le_floor_eq_zero ~> zero_le_floor | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 507 | le_floor_eq_one ~> one_le_floor | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 508 | floor_less_eq_number_of ~> floor_less_number_of | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 509 | floor_less_eq_zero ~> floor_less_zero | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 510 | floor_less_eq_one ~> floor_less_one | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 511 | less_floor_eq_number_of ~> number_of_less_floor | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 512 | less_floor_eq_zero ~> zero_less_floor | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 513 | less_floor_eq_one ~> one_less_floor | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 514 | floor_le_eq_number_of ~> floor_le_number_of | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 515 | floor_le_eq_zero ~> floor_le_zero | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 516 | floor_le_eq_one ~> floor_le_one | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 517 | floor_subtract_number_of ~> floor_diff_number_of | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 518 | floor_subtract_one ~> floor_diff_one | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 519 | ceiling_number_of_eq ~> ceiling_number_of | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 520 | ceiling_le_eq_number_of ~> ceiling_le_number_of | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 521 | ceiling_le_zero_eq ~> ceiling_le_zero | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 522 | ceiling_le_eq_one ~> ceiling_le_one | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 523 | less_ceiling_eq_number_of ~> number_of_less_ceiling | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 524 | less_ceiling_eq_zero ~> zero_less_ceiling | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 525 | less_ceiling_eq_one ~> one_less_ceiling | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 526 | ceiling_less_eq_number_of ~> ceiling_less_number_of | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 527 | ceiling_less_eq_zero ~> ceiling_less_zero | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 528 | ceiling_less_eq_one ~> ceiling_less_one | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 529 | le_ceiling_eq_number_of ~> number_of_le_ceiling | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 530 | le_ceiling_eq_zero ~> zero_le_ceiling | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 531 | le_ceiling_eq_one ~> one_le_ceiling | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 532 | ceiling_subtract_number_of ~> ceiling_diff_number_of | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 533 | ceiling_subtract_one ~> ceiling_diff_one | 
| 
da7c06ab3169
remove several redundant lemmas about floor and ceiling
 huffman parents: 
36972diff
changeset | 534 | |
| 37144 | 535 | * Theory "Finite_Set": various folding_XXX locales facilitate the | 
| 36857 | 536 | application of the various fold combinators on finite sets. | 
| 537 | ||
| 538 | * Library theory "RBT" renamed to "RBT_Impl"; new library theory "RBT" | |
| 539 | provides abstract red-black tree type which is backed by "RBT_Impl" as | |
| 540 | implementation. INCOMPATIBILTY. | |
| 36147 
b43b22f63665
theory RBT with abstract type of red-black trees backed by implementation RBT_Impl
 haftmann parents: 
36096diff
changeset | 541 | |
| 36830 | 542 | * Theory Library/Coinductive_List has been removed -- superseded by | 
| 35763 
765f8adf10f9
removed obsolete HOL/Library/Coinductive_List.thy, superceded by thys/Coinductive/Coinductive_List.thy in AFP/f2f5727b77d0;
 wenzelm parents: 
35745diff
changeset | 543 | AFP/thys/Coinductive. | 
| 
765f8adf10f9
removed obsolete HOL/Library/Coinductive_List.thy, superceded by thys/Coinductive/Coinductive_List.thy in AFP/f2f5727b77d0;
 wenzelm parents: 
35745diff
changeset | 544 | |
| 36829 | 545 | * Theory PReal, including the type "preal" and related operations, has | 
| 546 | been removed. INCOMPATIBILITY. | |
| 547 | ||
| 37380 | 548 | * Real: new development using Cauchy Sequences. | 
| 549 | ||
| 37351 | 550 | * Split off theory "Big_Operators" containing setsum, setprod, | 
| 551 | Inf_fin, Sup_fin, Min, Max from theory Finite_Set. INCOMPATIBILITY. | |
| 36857 | 552 | |
| 553 | * Theory "Rational" renamed to "Rat", for consistency with "Nat", | |
| 554 | "Int" etc. INCOMPATIBILITY. | |
| 555 | ||
| 37351 | 556 | * Constant Rat.normalize needs to be qualified. INCOMPATIBILITY. | 
| 37143 | 557 | |
| 36857 | 558 | * New set of rules "ac_simps" provides combined assoc / commute | 
| 559 | rewrites for all interpretations of the appropriate generic locales. | |
| 560 | ||
| 561 | * Renamed theory "OrderedGroup" to "Groups" and split theory | |
| 562 | "Ring_and_Field" into theories "Rings" and "Fields"; for more | |
| 563 | appropriate and more consistent names suitable for name prefixes | |
| 564 | within the HOL theories. INCOMPATIBILITY. | |
| 35050 
9f841f20dca6
renamed OrderedGroup to Groups; split theory Ring_and_Field into Rings Fields
 haftmann parents: 
35042diff
changeset | 565 | |
| 35084 | 566 | * Some generic constants have been put to appropriate theories: | 
| 36857 | 567 | - less_eq, less: Orderings | 
| 568 | - zero, one, plus, minus, uminus, times, abs, sgn: Groups | |
| 569 | - inverse, divide: Rings | |
| 35084 | 570 | INCOMPATIBILITY. | 
| 571 | ||
| 36857 | 572 | * More consistent naming of type classes involving orderings (and | 
| 573 | lattices): | |
| 35027 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 574 | |
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 575 | lower_semilattice ~> semilattice_inf | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 576 | upper_semilattice ~> semilattice_sup | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 577 | |
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 578 | dense_linear_order ~> dense_linorder | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 579 | |
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 580 | pordered_ab_group_add ~> ordered_ab_group_add | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 581 | pordered_ab_group_add_abs ~> ordered_ab_group_add_abs | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 582 | pordered_ab_semigroup_add ~> ordered_ab_semigroup_add | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 583 | pordered_ab_semigroup_add_imp_le ~> ordered_ab_semigroup_add_imp_le | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 584 | pordered_cancel_ab_semigroup_add ~> ordered_cancel_ab_semigroup_add | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 585 | pordered_cancel_comm_semiring ~> ordered_cancel_comm_semiring | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 586 | pordered_cancel_semiring ~> ordered_cancel_semiring | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 587 | pordered_comm_monoid_add ~> ordered_comm_monoid_add | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 588 | pordered_comm_ring ~> ordered_comm_ring | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 589 | pordered_comm_semiring ~> ordered_comm_semiring | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 590 | pordered_ring ~> ordered_ring | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 591 | pordered_ring_abs ~> ordered_ring_abs | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 592 | pordered_semiring ~> ordered_semiring | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 593 | |
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 594 | ordered_ab_group_add ~> linordered_ab_group_add | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 595 | ordered_ab_semigroup_add ~> linordered_ab_semigroup_add | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 596 | ordered_cancel_ab_semigroup_add ~> linordered_cancel_ab_semigroup_add | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 597 | ordered_comm_semiring_strict ~> linordered_comm_semiring_strict | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 598 | ordered_field ~> linordered_field | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 599 | ordered_field_no_lb ~> linordered_field_no_lb | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 600 | ordered_field_no_ub ~> linordered_field_no_ub | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 601 | ordered_field_dense_linear_order ~> dense_linordered_field | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 602 | ordered_idom ~> linordered_idom | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 603 | ordered_ring ~> linordered_ring | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 604 | ordered_ring_le_cancel_factor ~> linordered_ring_le_cancel_factor | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 605 | ordered_ring_less_cancel_factor ~> linordered_ring_less_cancel_factor | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 606 | ordered_ring_strict ~> linordered_ring_strict | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 607 | ordered_semidom ~> linordered_semidom | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 608 | ordered_semiring ~> linordered_semiring | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 609 | ordered_semiring_1 ~> linordered_semiring_1 | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 610 | ordered_semiring_1_strict ~> linordered_semiring_1_strict | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 611 | ordered_semiring_strict ~> linordered_semiring_strict | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 612 | |
| 36857 | 613 | The following slightly odd type classes have been moved to a | 
| 37351 | 614 | separate theory Library/Lattice_Algebras: | 
| 35032 
7efe662e41b4
separate library theory for type classes combining lattices with various algebraic structures
 haftmann parents: 
35027diff
changeset | 615 | |
| 
7efe662e41b4
separate library theory for type classes combining lattices with various algebraic structures
 haftmann parents: 
35027diff
changeset | 616 | lordered_ab_group_add ~> lattice_ab_group_add | 
| 
7efe662e41b4
separate library theory for type classes combining lattices with various algebraic structures
 haftmann parents: 
35027diff
changeset | 617 | lordered_ab_group_add_abs ~> lattice_ab_group_add_abs | 
| 
7efe662e41b4
separate library theory for type classes combining lattices with various algebraic structures
 haftmann parents: 
35027diff
changeset | 618 | lordered_ab_group_add_meet ~> semilattice_inf_ab_group_add | 
| 
7efe662e41b4
separate library theory for type classes combining lattices with various algebraic structures
 haftmann parents: 
35027diff
changeset | 619 | lordered_ab_group_add_join ~> semilattice_sup_ab_group_add | 
| 
7efe662e41b4
separate library theory for type classes combining lattices with various algebraic structures
 haftmann parents: 
35027diff
changeset | 620 | lordered_ring ~> lattice_ring | 
| 
7efe662e41b4
separate library theory for type classes combining lattices with various algebraic structures
 haftmann parents: 
35027diff
changeset | 621 | |
| 35027 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 622 | INCOMPATIBILITY. | 
| 
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
 haftmann parents: 
34974diff
changeset | 623 | |
| 36416 | 624 | * Refined field classes: | 
| 36857 | 625 | - classes division_ring_inverse_zero, field_inverse_zero, | 
| 626 | linordered_field_inverse_zero include rule inverse 0 = 0 -- | |
| 627 | subsumes former division_by_zero class; | |
| 628 | - numerous lemmas have been ported from field to division_ring. | |
| 629 | INCOMPATIBILITY. | |
| 36416 | 630 | |
| 631 | * Refined algebra theorem collections: | |
| 36857 | 632 | - dropped theorem group group_simps, use algebra_simps instead; | 
| 633 | - dropped theorem group ring_simps, use field_simps instead; | |
| 634 | - proper theorem collection field_simps subsumes former theorem | |
| 635 | groups field_eq_simps and field_simps; | |
| 636 | - dropped lemma eq_minus_self_iff which is a duplicate for | |
| 637 | equal_neg_zero. | |
| 638 | INCOMPATIBILITY. | |
| 35009 | 639 | |
| 640 | * Theory Finite_Set and List: some lemmas have been generalized from | |
| 34076 
e3daf3c07381
Subgoal.FOCUS (and variants): resulting goal state is normalized as usual for resolution;
 wenzelm parents: 
34062diff
changeset | 641 | sets to lattices: | 
| 
e3daf3c07381
Subgoal.FOCUS (and variants): resulting goal state is normalized as usual for resolution;
 wenzelm parents: 
34062diff
changeset | 642 | |
| 34007 
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
 haftmann parents: 
33994diff
changeset | 643 | fun_left_comm_idem_inter ~> fun_left_comm_idem_inf | 
| 
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
 haftmann parents: 
33994diff
changeset | 644 | fun_left_comm_idem_union ~> fun_left_comm_idem_sup | 
| 
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
 haftmann parents: 
33994diff
changeset | 645 | inter_Inter_fold_inter ~> inf_Inf_fold_inf | 
| 
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
 haftmann parents: 
33994diff
changeset | 646 | union_Union_fold_union ~> sup_Sup_fold_sup | 
| 
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
 haftmann parents: 
33994diff
changeset | 647 | Inter_fold_inter ~> Inf_fold_inf | 
| 
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
 haftmann parents: 
33994diff
changeset | 648 | Union_fold_union ~> Sup_fold_sup | 
| 
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
 haftmann parents: 
33994diff
changeset | 649 | inter_INTER_fold_inter ~> inf_INFI_fold_inf | 
| 
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
 haftmann parents: 
33994diff
changeset | 650 | union_UNION_fold_union ~> sup_SUPR_fold_sup | 
| 
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
 haftmann parents: 
33994diff
changeset | 651 | INTER_fold_inter ~> INFI_fold_inf | 
| 
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
 haftmann parents: 
33994diff
changeset | 652 | UNION_fold_union ~> SUPR_fold_sup | 
| 
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
 haftmann parents: 
33994diff
changeset | 653 | |
| 37351 | 654 | * Theory "Complete_Lattice": lemmas top_def and bot_def have been | 
| 36416 | 655 | replaced by the more convenient lemmas Inf_empty and Sup_empty. | 
| 656 | Dropped lemmas Inf_insert_simp and Sup_insert_simp, which are subsumed | |
| 657 | by Inf_insert and Sup_insert. Lemmas Inf_UNIV and Sup_UNIV replace | |
| 658 | former Inf_Univ and Sup_Univ. Lemmas inf_top_right and sup_bot_right | |
| 659 | subsume inf_top and sup_bot respectively. INCOMPATIBILITY. | |
| 660 | ||
| 36857 | 661 | * Reorganized theory Multiset: swapped notation of pointwise and | 
| 662 | multiset order: | |
| 37351 | 663 | |
| 36857 | 664 | - pointwise ordering is instance of class order with standard syntax | 
| 665 | <= and <; | |
| 666 | - multiset ordering has syntax <=# and <#; partial order properties | |
| 667 | are provided by means of interpretation with prefix | |
| 668 | multiset_order; | |
| 669 | - less duplication, less historical organization of sections, | |
| 670 | conversion from associations lists to multisets, rudimentary code | |
| 671 | generation; | |
| 672 | - use insert_DiffM2 [symmetric] instead of elem_imp_eq_diff_union, | |
| 673 | if needed. | |
| 37351 | 674 | |
| 36903 | 675 | Renamed: | 
| 37351 | 676 | |
| 677 | multiset_eq_conv_count_eq ~> multiset_ext_iff | |
| 678 | multi_count_ext ~> multiset_ext | |
| 679 | diff_union_inverse2 ~> diff_union_cancelR | |
| 680 | ||
| 36857 | 681 | INCOMPATIBILITY. | 
| 36416 | 682 | |
| 36903 | 683 | * Theory Permutation: replaced local "remove" by List.remove1. | 
| 684 | ||
| 36416 | 685 | * Code generation: ML and OCaml code is decorated with signatures. | 
| 686 | ||
| 35009 | 687 | * Theory List: added transpose. | 
| 688 | ||
| 35810 | 689 | * Library/Nat_Bijection.thy is a collection of bijective functions | 
| 690 | between nat and other types, which supersedes the older libraries | |
| 691 | Library/Nat_Int_Bij.thy and HOLCF/NatIso.thy. INCOMPATIBILITY. | |
| 692 | ||
| 693 | Constants: | |
| 694 | Nat_Int_Bij.nat2_to_nat ~> prod_encode | |
| 695 | Nat_Int_Bij.nat_to_nat2 ~> prod_decode | |
| 696 | Nat_Int_Bij.int_to_nat_bij ~> int_encode | |
| 697 | Nat_Int_Bij.nat_to_int_bij ~> int_decode | |
| 698 | Countable.pair_encode ~> prod_encode | |
| 699 | NatIso.prod2nat ~> prod_encode | |
| 700 | NatIso.nat2prod ~> prod_decode | |
| 701 | NatIso.sum2nat ~> sum_encode | |
| 702 | NatIso.nat2sum ~> sum_decode | |
| 703 | NatIso.list2nat ~> list_encode | |
| 704 | NatIso.nat2list ~> list_decode | |
| 705 | NatIso.set2nat ~> set_encode | |
| 706 | NatIso.nat2set ~> set_decode | |
| 707 | ||
| 708 | Lemmas: | |
| 709 | Nat_Int_Bij.bij_nat_to_int_bij ~> bij_int_decode | |
| 710 | Nat_Int_Bij.nat2_to_nat_inj ~> inj_prod_encode | |
| 711 | Nat_Int_Bij.nat2_to_nat_surj ~> surj_prod_encode | |
| 712 | Nat_Int_Bij.nat_to_nat2_inj ~> inj_prod_decode | |
| 713 | Nat_Int_Bij.nat_to_nat2_surj ~> surj_prod_decode | |
| 714 | Nat_Int_Bij.i2n_n2i_id ~> int_encode_inverse | |
| 715 | Nat_Int_Bij.n2i_i2n_id ~> int_decode_inverse | |
| 716 | Nat_Int_Bij.surj_nat_to_int_bij ~> surj_int_encode | |
| 717 | Nat_Int_Bij.surj_int_to_nat_bij ~> surj_int_decode | |
| 718 | Nat_Int_Bij.inj_nat_to_int_bij ~> inj_int_encode | |
| 719 | Nat_Int_Bij.inj_int_to_nat_bij ~> inj_int_decode | |
| 720 | Nat_Int_Bij.bij_nat_to_int_bij ~> bij_int_encode | |
| 721 | Nat_Int_Bij.bij_int_to_nat_bij ~> bij_int_decode | |
| 722 | ||
| 36929 | 723 | * Sledgehammer: | 
| 724 | - Renamed ATP commands: | |
| 725 | atp_info ~> sledgehammer running_atps | |
| 726 | atp_kill ~> sledgehammer kill_atps | |
| 727 | atp_messages ~> sledgehammer messages | |
| 728 | atp_minimize ~> sledgehammer minimize | |
| 729 | print_atps ~> sledgehammer available_atps | |
| 730 | INCOMPATIBILITY. | |
| 731 |   - Added user's manual ("isabelle doc sledgehammer").
 | |
| 732 | - Added option syntax and "sledgehammer_params" to customize | |
| 733 | Sledgehammer's behavior. See the manual for details. | |
| 734 | - Modified the Isar proof reconstruction code so that it produces | |
| 735 | direct proofs rather than proofs by contradiction. (This feature | |
| 736 | is still experimental.) | |
| 737 | - Made Isar proof reconstruction work for SPASS, remote ATPs, and in | |
| 738 | full-typed mode. | |
| 739 | - Added support for TPTP syntax for SPASS via the "spass_tptp" ATP. | |
| 740 | ||
| 36928 | 741 | * Nitpick: | 
| 742 | - Added and implemented "binary_ints" and "bits" options. | |
| 743 | - Added "std" option and implemented support for nonstandard models. | |
| 744 | - Added and implemented "finitize" option to improve the precision | |
| 745 | of infinite datatypes based on a monotonicity analysis. | |
| 746 | - Added support for quotient types. | |
| 747 | - Added support for "specification" and "ax_specification" | |
| 748 | constructs. | |
| 749 | - Added support for local definitions (for "function" and | |
| 750 | "termination" proofs). | |
| 751 | - Added support for term postprocessors. | |
| 752 | - Optimized "Multiset.multiset" and "FinFun.finfun". | |
| 753 | - Improved efficiency of "destroy_constrs" optimization. | |
| 754 | - Fixed soundness bugs related to "destroy_constrs" optimization and | |
| 755 | record getters. | |
| 37272 | 756 | - Fixed soundness bug related to higher-order constructors. | 
| 757 | - Fixed soundness bug when "full_descrs" is enabled. | |
| 36928 | 758 | - Improved precision of set constructs. | 
| 37260 
dde817e6dfb1
added "atoms" option to Nitpick (request from Karlsruhe) + wrap Refute. functions to "nitpick_util.ML"
 blanchet parents: 
37158diff
changeset | 759 | - Added "atoms" option. | 
| 36928 | 760 | - Added cache to speed up repeated Kodkod invocations on the same | 
| 761 | problems. | |
| 762 | - Renamed "MiniSatJNI", "zChaffJNI", "BerkMinAlloy", and | |
| 763 | "SAT4JLight" to "MiniSat_JNI", "zChaff_JNI", "BerkMin_Alloy", and | |
| 764 | "SAT4J_Light". INCOMPATIBILITY. | |
| 765 | - Removed "skolemize", "uncurry", "sym_break", "flatten_prop", | |
| 766 | "sharing_depth", and "show_skolems" options. INCOMPATIBILITY. | |
| 37264 
8b931fb51cc6
removed "nitpick_intro" attribute -- Nitpick noew uses Spec_Rules instead
 blanchet parents: 
37260diff
changeset | 767 | - Removed "nitpick_intro" attribute. INCOMPATIBILITY. | 
| 36928 | 768 | |
| 37361 
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
 berghofe parents: 
37352diff
changeset | 769 | * Method "induct" now takes instantiations of the form t, where t is not | 
| 
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
 berghofe parents: 
37352diff
changeset | 770 | a variable, as a shorthand for "x == t", where x is a fresh variable. | 
| 
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
 berghofe parents: 
37352diff
changeset | 771 | If this is not intended, t has to be enclosed in parentheses. | 
| 
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
 berghofe parents: 
37352diff
changeset | 772 | By default, the equalities generated by definitional instantiations | 
| 
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
 berghofe parents: 
37352diff
changeset | 773 | are pre-simplified, which may cause parameters of inductive cases | 
| 
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
 berghofe parents: 
37352diff
changeset | 774 | to disappear, or may even delete some of the inductive cases. | 
| 
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
 berghofe parents: 
37352diff
changeset | 775 | Use "induct (no_simp)" instead of "induct" to restore the old | 
| 
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
 berghofe parents: 
37352diff
changeset | 776 | behaviour. The (no_simp) option is also understood by the "cases" | 
| 
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
 berghofe parents: 
37352diff
changeset | 777 | and "nominal_induct" methods, which now perform pre-simplification, too. | 
| 
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
 berghofe parents: 
37352diff
changeset | 778 | INCOMPATIBILITY. | 
| 
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
 berghofe parents: 
37352diff
changeset | 779 | |
| 33993 | 780 | |
| 36828 | 781 | *** HOLCF *** | 
| 782 | ||
| 783 | * Variable names in lemmas generated by the domain package have | |
| 784 | changed; the naming scheme is now consistent with the HOL datatype | |
| 785 | package. Some proof scripts may be affected, INCOMPATIBILITY. | |
| 786 | ||
| 787 | * The domain package no longer defines the function "foo_copy" for | |
| 788 | recursive domain "foo". The reach lemma is now stated directly in | |
| 789 | terms of "foo_take". Lemmas and proofs that mention "foo_copy" must | |
| 790 | be reformulated in terms of "foo_take", INCOMPATIBILITY. | |
| 791 | ||
| 792 | * Most definedness lemmas generated by the domain package (previously | |
| 793 | of the form "x ~= UU ==> foo$x ~= UU") now have an if-and-only-if form | |
| 794 | like "foo$x = UU <-> x = UU", which works better as a simp rule. | |
| 37351 | 795 | Proofs that used definedness lemmas as intro rules may break, | 
| 36828 | 796 | potential INCOMPATIBILITY. | 
| 797 | ||
| 798 | * Induction and casedist rules generated by the domain package now | |
| 799 | declare proper case_names (one called "bottom", and one named for each | |
| 800 | constructor). INCOMPATIBILITY. | |
| 801 | ||
| 802 | * For mutually-recursive domains, separate "reach" and "take_lemma" | |
| 803 | rules are generated for each domain, INCOMPATIBILITY. | |
| 804 | ||
| 805 | foo_bar.reach ~> foo.reach bar.reach | |
| 806 | foo_bar.take_lemmas ~> foo.take_lemma bar.take_lemma | |
| 807 | ||
| 808 | * Some lemmas generated by the domain package have been renamed for | |
| 809 | consistency with the datatype package, INCOMPATIBILITY. | |
| 810 | ||
| 811 | foo.ind ~> foo.induct | |
| 812 | foo.finite_ind ~> foo.finite_induct | |
| 813 | foo.coind ~> foo.coinduct | |
| 814 | foo.casedist ~> foo.exhaust | |
| 815 | foo.exhaust ~> foo.nchotomy | |
| 816 | ||
| 817 | * For consistency with other definition packages, the fixrec package | |
| 818 | now generates qualified theorem names, INCOMPATIBILITY. | |
| 819 | ||
| 820 | foo_simps ~> foo.simps | |
| 821 | foo_unfold ~> foo.unfold | |
| 822 | foo_induct ~> foo.induct | |
| 823 | ||
| 37087 | 824 | * The "fixrec_simp" attribute has been removed. The "fixrec_simp" | 
| 825 | method and internal fixrec proofs now use the default simpset instead. | |
| 826 | INCOMPATIBILITY. | |
| 827 | ||
| 36828 | 828 | * The "contlub" predicate has been removed. Proof scripts should use | 
| 829 | lemma contI2 in place of monocontlub2cont, INCOMPATIBILITY. | |
| 830 | ||
| 831 | * The "admw" predicate has been removed, INCOMPATIBILITY. | |
| 832 | ||
| 833 | * The constants cpair, cfst, and csnd have been removed in favor of | |
| 834 | Pair, fst, and snd from Isabelle/HOL, INCOMPATIBILITY. | |
| 835 | ||
| 836 | ||
| 33993 | 837 | *** ML *** | 
| 838 | ||
| 37351 | 839 | * Antiquotations for basic formal entities: | 
| 840 | ||
| 841 |     @{class NAME}         -- type class
 | |
| 842 |     @{class_syntax NAME}  -- syntax representation of the above
 | |
| 843 | ||
| 844 |     @{type_name NAME}     -- logical type
 | |
| 845 |     @{type_abbrev NAME}   -- type abbreviation
 | |
| 846 |     @{nonterminal NAME}   -- type of concrete syntactic category
 | |
| 847 |     @{type_syntax NAME}   -- syntax representation of any of the above
 | |
| 848 | ||
| 849 |     @{const_name NAME}    -- logical constant (INCOMPATIBILITY)
 | |
| 850 |     @{const_abbrev NAME}  -- abbreviated constant
 | |
| 851 |     @{const_syntax NAME}  -- syntax representation of any of the above
 | |
| 852 | ||
| 853 | * Antiquotation @{syntax_const NAME} ensures that NAME refers to a raw
 | |
| 854 | syntax constant (cf. 'syntax' command). | |
| 855 | ||
| 856 | * Antiquotation @{make_string} inlines a function to print arbitrary
 | |
| 857 | values similar to the ML toplevel. The result is compiler dependent | |
| 858 | and may fall back on "?" in certain situations. | |
| 859 | ||
| 860 | * Diagnostic commands 'ML_val' and 'ML_command' may refer to | |
| 861 | antiquotations @{Isar.state} and @{Isar.goal}.  This replaces impure
 | |
| 862 | Isar.state() and Isar.goal(), which belong to the old TTY loop and do | |
| 863 | not work with the asynchronous Isar document model. | |
| 864 | ||
| 865 | * Configuration options now admit dynamic default values, depending on | |
| 866 | the context or even global references. | |
| 867 | ||
| 868 | * SHA1.digest digests strings according to SHA-1 (see RFC 3174). It | |
| 869 | uses an efficient external library if available (for Poly/ML). | |
| 870 | ||
| 37144 | 871 | * Renamed some important ML structures, while keeping the old names | 
| 872 | for some time as aliases within the structure Legacy: | |
| 873 | ||
| 874 | OuterKeyword ~> Keyword | |
| 875 | OuterLex ~> Token | |
| 876 | OuterParse ~> Parse | |
| 877 | OuterSyntax ~> Outer_Syntax | |
| 37216 
3165bc303f66
modernized some structure names, keeping a few legacy aliases;
 wenzelm parents: 
37158diff
changeset | 878 | PrintMode ~> Print_Mode | 
| 37144 | 879 | SpecParse ~> Parse_Spec | 
| 37216 
3165bc303f66
modernized some structure names, keeping a few legacy aliases;
 wenzelm parents: 
37158diff
changeset | 880 | ThyInfo ~> Thy_Info | 
| 
3165bc303f66
modernized some structure names, keeping a few legacy aliases;
 wenzelm parents: 
37158diff
changeset | 881 | ThyLoad ~> Thy_Load | 
| 
3165bc303f66
modernized some structure names, keeping a few legacy aliases;
 wenzelm parents: 
37158diff
changeset | 882 | ThyOutput ~> Thy_Output | 
| 37145 
01aa36932739
renamed structure TypeInfer to Type_Infer, keeping the old name as legacy alias for some time;
 wenzelm parents: 
37144diff
changeset | 883 | TypeInfer ~> Type_Infer | 
| 37144 | 884 | |
| 885 | Note that "open Legacy" simplifies porting of sources, but forgetting | |
| 886 | to remove it again will complicate porting again in the future. | |
| 887 | ||
| 888 | * Most operations that refer to a global context are named | |
| 889 | accordingly, e.g. Simplifier.global_context or | |
| 890 | ProofContext.init_global. There are some situations where a global | |
| 891 | context actually works, but under normal circumstances one needs to | |
| 892 | pass the proper local context through the code! | |
| 893 | ||
| 894 | * Discontinued old TheoryDataFun with its copy/init operation -- data | |
| 895 | needs to be pure. Functor Theory_Data_PP retains the traditional | |
| 896 | Pretty.pp argument to merge, which is absent in the standard | |
| 897 | Theory_Data version. | |
| 36429 
9d6b3be996d4
monotonic sort certification: sorts are no longer minimized at the kernel boundary, only when reading input from the end-user;
 wenzelm parents: 
36416diff
changeset | 898 | |
| 37144 | 899 | * Sorts.certify_sort and derived "cert" operations for types and terms | 
| 900 | no longer minimize sorts. Thus certification at the boundary of the | |
| 901 | inference kernel becomes invariant under addition of class relations, | |
| 902 | which is an important monotonicity principle. Sorts are now minimized | |
| 903 | in the syntax layer only, at the boundary between the end-user and the | |
| 904 | system. Subtle INCOMPATIBILITY, may have to use Sign.minimize_sort | |
| 905 | explicitly in rare situations. | |
| 906 | ||
| 35021 
c839a4c670c6
renamed old-style Drule.standard to Drule.export_without_context, to emphasize that this is in no way a standard operation;
 wenzelm parents: 
35009diff
changeset | 907 | * Renamed old-style Drule.standard to Drule.export_without_context, to | 
| 
c839a4c670c6
renamed old-style Drule.standard to Drule.export_without_context, to emphasize that this is in no way a standard operation;
 wenzelm parents: 
35009diff
changeset | 908 | emphasize that this is in no way a standard operation. | 
| 
c839a4c670c6
renamed old-style Drule.standard to Drule.export_without_context, to emphasize that this is in no way a standard operation;
 wenzelm parents: 
35009diff
changeset | 909 | INCOMPATIBILITY. | 
| 
c839a4c670c6
renamed old-style Drule.standard to Drule.export_without_context, to emphasize that this is in no way a standard operation;
 wenzelm parents: 
35009diff
changeset | 910 | |
| 34076 
e3daf3c07381
Subgoal.FOCUS (and variants): resulting goal state is normalized as usual for resolution;
 wenzelm parents: 
34062diff
changeset | 911 | * Subgoal.FOCUS (and variants): resulting goal state is normalized as | 
| 
e3daf3c07381
Subgoal.FOCUS (and variants): resulting goal state is normalized as usual for resolution;
 wenzelm parents: 
34062diff
changeset | 912 | usual for resolution. Rare INCOMPATIBILITY. | 
| 
e3daf3c07381
Subgoal.FOCUS (and variants): resulting goal state is normalized as usual for resolution;
 wenzelm parents: 
34062diff
changeset | 913 | |
| 35845 
e5980f0ad025
renamed varify/unvarify operations to varify_global/unvarify_global to emphasize that these only work in a global situation;
 wenzelm parents: 
35810diff
changeset | 914 | * Renamed varify/unvarify operations to varify_global/unvarify_global | 
| 
e5980f0ad025
renamed varify/unvarify operations to varify_global/unvarify_global to emphasize that these only work in a global situation;
 wenzelm parents: 
35810diff
changeset | 915 | to emphasize that these only work in a global situation (which is | 
| 
e5980f0ad025
renamed varify/unvarify operations to varify_global/unvarify_global to emphasize that these only work in a global situation;
 wenzelm parents: 
35810diff
changeset | 916 | quite rare). | 
| 
e5980f0ad025
renamed varify/unvarify operations to varify_global/unvarify_global to emphasize that these only work in a global situation;
 wenzelm parents: 
35810diff
changeset | 917 | |
| 37144 | 918 | * Curried take and drop in library.ML; negative length is interpreted | 
| 919 | as infinity (as in chop). Subtle INCOMPATIBILITY. | |
| 36961 | 920 | |
| 37351 | 921 | * Proof terms: type substitutions on proof constants now use canonical | 
| 922 | order of type variables. INCOMPATIBILITY for tools working with proof | |
| 923 | terms. | |
| 924 | ||
| 925 | * Raw axioms/defs may no longer carry sort constraints, and raw defs | |
| 926 | may no longer carry premises. User-level specifications are | |
| 927 | transformed accordingly by Thm.add_axiom/add_def. | |
| 928 | ||
| 33993 | 929 | |
| 34238 | 930 | *** System *** | 
| 931 | ||
| 932 | * Discontinued special HOL_USEDIR_OPTIONS for the main HOL image; | |
| 933 | ISABELLE_USEDIR_OPTIONS applies uniformly to all sessions. Note that | |
| 934 | proof terms are enabled unconditionally in the new HOL-Proofs image. | |
| 935 | ||
| 34255 
2dd2547acb41
discontinued old ISABELLE and ISATOOL environment settings;
 wenzelm parents: 
34238diff
changeset | 936 | * Discontinued old ISABELLE and ISATOOL environment settings (legacy | 
| 
2dd2547acb41
discontinued old ISABELLE and ISATOOL environment settings;
 wenzelm parents: 
34238diff
changeset | 937 | feature since Isabelle2009). Use ISABELLE_PROCESS and ISABELLE_TOOL, | 
| 
2dd2547acb41
discontinued old ISABELLE and ISATOOL environment settings;
 wenzelm parents: 
34238diff
changeset | 938 | respectively. | 
| 
2dd2547acb41
discontinued old ISABELLE and ISATOOL environment settings;
 wenzelm parents: 
34238diff
changeset | 939 | |
| 36201 
07d4f74abd12
polyml-platform script is superseded by ISABELLE_PLATFORM;
 wenzelm parents: 
36178diff
changeset | 940 | * Old lib/scripts/polyml-platform is superseded by the | 
| 
07d4f74abd12
polyml-platform script is superseded by ISABELLE_PLATFORM;
 wenzelm parents: 
36178diff
changeset | 941 | ISABELLE_PLATFORM setting variable, which defaults to the 32 bit | 
| 
07d4f74abd12
polyml-platform script is superseded by ISABELLE_PLATFORM;
 wenzelm parents: 
36178diff
changeset | 942 | variant, even on a 64 bit machine. The following example setting | 
| 
07d4f74abd12
polyml-platform script is superseded by ISABELLE_PLATFORM;
 wenzelm parents: 
36178diff
changeset | 943 | prefers 64 bit if available: | 
| 
07d4f74abd12
polyml-platform script is superseded by ISABELLE_PLATFORM;
 wenzelm parents: 
36178diff
changeset | 944 | |
| 
07d4f74abd12
polyml-platform script is superseded by ISABELLE_PLATFORM;
 wenzelm parents: 
36178diff
changeset | 945 |   ML_PLATFORM="${ISABELLE_PLATFORM64:-$ISABELLE_PLATFORM}"
 | 
| 
07d4f74abd12
polyml-platform script is superseded by ISABELLE_PLATFORM;
 wenzelm parents: 
36178diff
changeset | 946 | |
| 37218 | 947 | * The preliminary Isabelle/jEdit application demonstrates the emerging | 
| 948 | Isabelle/Scala layer for advanced prover interaction and integration. | |
| 949 | See src/Tools/jEdit or "isabelle jedit" provided by the properly built | |
| 950 | component. | |
| 951 | ||
| 37375 | 952 | * "IsabelleText" is a Unicode font derived from Bitstream Vera Mono | 
| 953 | and Bluesky TeX fonts. It provides the usual Isabelle symbols, | |
| 954 | similar to the default assignment of the document preparation system | |
| 955 | (cf. isabellesym.sty). The Isabelle/Scala class Isabelle_System | |
| 956 | provides some operations for direct access to the font without asking | |
| 957 | the user for manual installation. | |
| 958 | ||
| 34238 | 959 | |
| 33993 | 960 | |
| 33842 | 961 | New in Isabelle2009-1 (December 2009) | 
| 962 | ------------------------------------- | |
| 30904 | 963 | |
| 31547 | 964 | *** General *** | 
| 965 | ||
| 966 | * Discontinued old form of "escaped symbols" such as \\<forall>. Only | |
| 967 | one backslash should be used, even in ML sources. | |
| 968 | ||
| 969 | ||
| 30951 
a6e26a248f03
formal declaration of undefined parameters after class instantiation
 haftmann parents: 
30949diff
changeset | 970 | *** Pure *** | 
| 
a6e26a248f03
formal declaration of undefined parameters after class instantiation
 haftmann parents: 
30949diff
changeset | 971 | |
| 32846 
29941e925c82
News entry: inheritance of mixins; print_interps.
 ballarin parents: 
32775diff
changeset | 972 | * Locale interpretation propagates mixins along the locale hierarchy. | 
| 
29941e925c82
News entry: inheritance of mixins; print_interps.
 ballarin parents: 
32775diff
changeset | 973 | The currently only available mixins are the equations used to map | 
| 
29941e925c82
News entry: inheritance of mixins; print_interps.
 ballarin parents: 
32775diff
changeset | 974 | local definitions to terms of the target domain of an interpretation. | 
| 
29941e925c82
News entry: inheritance of mixins; print_interps.
 ballarin parents: 
32775diff
changeset | 975 | |
| 33842 | 976 | * Reactivated diagnostic command 'print_interps'. Use "print_interps | 
| 977 | loc" to print all interpretations of locale "loc" in the theory. | |
| 978 | Interpretations in proofs are not shown. | |
| 32846 
29941e925c82
News entry: inheritance of mixins; print_interps.
 ballarin parents: 
32775diff
changeset | 979 | |
| 32983 | 980 | * Thoroughly revised locales tutorial. New section on conditional | 
| 981 | interpretation. | |
| 982 | ||
| 33843 | 983 | * On instantiation of classes, remaining undefined class parameters | 
| 984 | are formally declared. INCOMPATIBILITY. | |
| 985 | ||
| 30951 
a6e26a248f03
formal declaration of undefined parameters after class instantiation
 haftmann parents: 
30949diff
changeset | 986 | |
| 33842 | 987 | *** Document preparation *** | 
| 988 | ||
| 989 | * New generalized style concept for printing terms: @{foo (style) ...}
 | |
| 990 | instead of @{foo_style style ...}  (old form is still retained for
 | |
| 991 | backward compatibility). Styles can be also applied for | |
| 992 | antiquotations prop, term_type and typeof. | |
| 32891 | 993 | |
| 994 | ||
| 30930 | 995 | *** HOL *** | 
| 996 | ||
| 33842 | 997 | * New proof method "smt" for a combination of first-order logic with | 
| 998 | equality, linear and nonlinear (natural/integer/real) arithmetic, and | |
| 999 | fixed-size bitvectors; there is also basic support for higher-order | |
| 1000 | features (esp. lambda abstractions). It is an incomplete decision | |
| 1001 | procedure based on external SMT solvers using the oracle mechanism; | |
| 1002 | for the SMT solver Z3, this method is proof-producing. Certificates | |
| 1003 | are provided to avoid calling the external solvers solely for | |
| 1004 | re-checking proofs. Due to a remote SMT service there is no need for | |
| 1005 | installing SMT solvers locally. See src/HOL/SMT. | |
| 1006 | ||
| 1007 | * New commands to load and prove verification conditions generated by | |
| 1008 | the Boogie program verifier or derived systems (e.g. the Verifying C | |
| 1009 | Compiler (VCC) or Spec#). See src/HOL/Boogie. | |
| 1010 | ||
| 1011 | * New counterexample generator tool 'nitpick' based on the Kodkod | |
| 1012 | relational model finder. See src/HOL/Tools/Nitpick and | |
| 1013 | src/HOL/Nitpick_Examples. | |
| 1014 | ||
| 33860 | 1015 | * New commands 'code_pred' and 'values' to invoke the predicate | 
| 1016 | compiler and to enumerate values of inductive predicates. | |
| 1017 | ||
| 1018 | * A tabled implementation of the reflexive transitive closure. | |
| 1019 | ||
| 1020 | * New implementation of quickcheck uses generic code generator; | |
| 1021 | default generators are provided for all suitable HOL types, records | |
| 1022 | and datatypes. Old quickcheck can be re-activated importing theory | |
| 1023 | Library/SML_Quickcheck. | |
| 1024 | ||
| 33843 | 1025 | * New testing tool Mirabelle for automated proof tools. Applies | 
| 1026 | several tools and tactics like sledgehammer, metis, or quickcheck, to | |
| 1027 | every proof step in a theory. To be used in batch mode via the | |
| 1028 | "mirabelle" utility. | |
| 1029 | ||
| 1030 | * New proof method "sos" (sum of squares) for nonlinear real | |
| 1031 | arithmetic (originally due to John Harison). It requires theory | |
| 1032 | Library/Sum_Of_Squares. It is not a complete decision procedure but | |
| 1033 | works well in practice on quantifier-free real arithmetic with +, -, | |
| 1034 | *, ^, =, <= and <, i.e. boolean combinations of equalities and | |
| 1035 | inequalities between polynomials. It makes use of external | |
| 1036 | semidefinite programming solvers. Method "sos" generates a | |
| 1037 | certificate that can be pasted into the proof thus avoiding the need | |
| 1038 | to call an external tool every time the proof is checked. See | |
| 1039 | src/HOL/Library/Sum_Of_Squares. | |
| 1040 | ||
| 1041 | * New method "linarith" invokes existing linear arithmetic decision | |
| 1042 | procedure only. | |
| 1043 | ||
| 1044 | * New command 'atp_minimal' reduces result produced by Sledgehammer. | |
| 1045 | ||
| 1046 | * New Sledgehammer option "Full Types" in Proof General settings menu. | |
| 1047 | Causes full type information to be output to the ATPs. This slows | |
| 1048 | ATPs down considerably but eliminates a source of unsound "proofs" | |
| 1049 | that fail later. | |
| 1050 | ||
| 1051 | * New method "metisFT": A version of metis that uses full type | |
| 1052 | information in order to avoid failures of proof reconstruction. | |
| 1053 | ||
| 1054 | * New evaluator "approximate" approximates an real valued term using | |
| 1055 | the same method as the approximation method. | |
| 1056 | ||
| 1057 | * Method "approximate" now supports arithmetic expressions as | |
| 1058 | boundaries of intervals and implements interval splitting and Taylor | |
| 1059 | series expansion. | |
| 1060 | ||
| 1061 | * ML antiquotation @{code_datatype} inserts definition of a datatype
 | |
| 1062 | generated by the code generator; e.g. see src/HOL/Predicate.thy. | |
| 1063 | ||
| 33860 | 1064 | * New theory SupInf of the supremum and infimum operators for sets of | 
| 1065 | reals. | |
| 1066 | ||
| 1067 | * New theory Probability, which contains a development of measure | |
| 1068 | theory, eventually leading to Lebesgue integration and probability. | |
| 1069 | ||
| 1070 | * Extended Multivariate Analysis to include derivation and Brouwer's | |
| 1071 | fixpoint theorem. | |
| 33843 | 1072 | |
| 33842 | 1073 | * Reorganization of number theory, INCOMPATIBILITY: | 
| 33873 | 1074 | - new number theory development for nat and int, in theories Divides | 
| 1075 | and GCD as well as in new session Number_Theory | |
| 1076 | - some constants and facts now suffixed with _nat and _int | |
| 1077 | accordingly | |
| 1078 | - former session NumberTheory now named Old_Number_Theory, including | |
| 1079 | theories Legacy_GCD and Primes (prefer Number_Theory if possible) | |
| 33842 | 1080 | - moved theory Pocklington from src/HOL/Library to | 
| 1081 | src/HOL/Old_Number_Theory | |
| 32479 | 1082 | |
| 33873 | 1083 | * Theory GCD includes functions Gcd/GCD and Lcm/LCM for the gcd and | 
| 1084 | lcm of finite and infinite sets. It is shown that they form a complete | |
| 32600 | 1085 | lattice. | 
| 1086 | ||
| 1087 | * Class semiring_div requires superclass no_zero_divisors and proof of | |
| 1088 | div_mult_mult1; theorems div_mult_mult1, div_mult_mult2, | |
| 1089 | div_mult_mult1_if, div_mult_mult1 and div_mult_mult2 have been | |
| 1090 | generalized to class semiring_div, subsuming former theorems | |
| 1091 | zdiv_zmult_zmult1, zdiv_zmult_zmult1_if, zdiv_zmult_zmult1 and | |
| 1092 | zdiv_zmult_zmult2. div_mult_mult1 is now [simp] by default. | |
| 1093 | INCOMPATIBILITY. | |
| 1094 | ||
| 32588 
5e06a1634e55
Inter and Union are mere abbreviations for Inf and Sup; tuned
 haftmann parents: 
32485diff
changeset | 1095 | * Refinements to lattice classes and sets: | 
| 32064 | 1096 | - less default intro/elim rules in locale variant, more default | 
| 1097 | intro/elim rules in class variant: more uniformity | |
| 33842 | 1098 | - lemma ge_sup_conv renamed to le_sup_iff, in accordance with | 
| 1099 | le_inf_iff | |
| 1100 | - dropped lemma alias inf_ACI for inf_aci (same for sup_ACI and | |
| 1101 | sup_aci) | |
| 32064 | 1102 | - renamed ACI to inf_sup_aci | 
| 32600 | 1103 | - new class "boolean_algebra" | 
| 33842 | 1104 | - class "complete_lattice" moved to separate theory | 
| 33860 | 1105 | "Complete_Lattice"; corresponding constants (and abbreviations) | 
| 33842 | 1106 | renamed and with authentic syntax: | 
| 33860 | 1107 | Set.Inf ~> Complete_Lattice.Inf | 
| 1108 | Set.Sup ~> Complete_Lattice.Sup | |
| 1109 | Set.INFI ~> Complete_Lattice.INFI | |
| 1110 | Set.SUPR ~> Complete_Lattice.SUPR | |
| 1111 | Set.Inter ~> Complete_Lattice.Inter | |
| 1112 | Set.Union ~> Complete_Lattice.Union | |
| 1113 | Set.INTER ~> Complete_Lattice.INTER | |
| 1114 | Set.UNION ~> Complete_Lattice.UNION | |
| 32600 | 1115 | - authentic syntax for | 
| 1116 | Set.Pow | |
| 1117 | Set.image | |
| 32588 
5e06a1634e55
Inter and Union are mere abbreviations for Inf and Sup; tuned
 haftmann parents: 
32485diff
changeset | 1118 | - mere abbreviations: | 
| 
5e06a1634e55
Inter and Union are mere abbreviations for Inf and Sup; tuned
 haftmann parents: 
32485diff
changeset | 1119 | Set.empty (for bot) | 
| 
5e06a1634e55
Inter and Union are mere abbreviations for Inf and Sup; tuned
 haftmann parents: 
32485diff
changeset | 1120 | Set.UNIV (for top) | 
| 33860 | 1121 | Set.inter (for inf, formerly Set.Int) | 
| 1122 | Set.union (for sup, formerly Set.Un) | |
| 32588 
5e06a1634e55
Inter and Union are mere abbreviations for Inf and Sup; tuned
 haftmann parents: 
32485diff
changeset | 1123 | Complete_Lattice.Inter (for Inf) | 
| 
5e06a1634e55
Inter and Union are mere abbreviations for Inf and Sup; tuned
 haftmann parents: 
32485diff
changeset | 1124 | Complete_Lattice.Union (for Sup) | 
| 32606 
b5c3a8a75772
INTER and UNION are mere abbreviations for INFI and SUPR
 haftmann parents: 
32600diff
changeset | 1125 | Complete_Lattice.INTER (for INFI) | 
| 
b5c3a8a75772
INTER and UNION are mere abbreviations for INFI and SUPR
 haftmann parents: 
32600diff
changeset | 1126 | Complete_Lattice.UNION (for SUPR) | 
| 32600 | 1127 | - object-logic definitions as far as appropriate | 
| 32217 | 1128 | |
| 32691 | 1129 | INCOMPATIBILITY. Care is required when theorems Int_subset_iff or | 
| 33842 | 1130 | Un_subset_iff are explicitly deleted as default simp rules; then also | 
| 1131 | their lattice counterparts le_inf_iff and le_sup_iff have to be | |
| 32691 | 1132 | deleted to achieve the desired effect. | 
| 32064 | 1133 | |
| 33842 | 1134 | * Rules inf_absorb1, inf_absorb2, sup_absorb1, sup_absorb2 are no simp | 
| 1135 | rules by default any longer; the same applies to min_max.inf_absorb1 | |
| 1136 | etc. INCOMPATIBILITY. | |
| 1137 | ||
| 1138 | * Rules sup_Int_eq and sup_Un_eq are no longer declared as | |
| 1139 | pred_set_conv by default. INCOMPATIBILITY. | |
| 1140 | ||
| 1141 | * Power operations on relations and functions are now one dedicated | |
| 32706 | 1142 | constant "compow" with infix syntax "^^". Power operation on | 
| 31547 | 1143 | multiplicative monoids retains syntax "^" and is now defined generic | 
| 1144 | in class power. INCOMPATIBILITY. | |
| 1145 | ||
| 33842 | 1146 | * Relation composition "R O S" now has a more standard argument order: | 
| 1147 | "R O S = {(x, z). EX y. (x, y) : R & (y, z) : S}".  INCOMPATIBILITY,
 | |
| 1148 | rewrite propositions with "S O R" --> "R O S". Proofs may occasionally | |
| 1149 | break, since the O_assoc rule was not rewritten like this. Fix using | |
| 1150 | O_assoc[symmetric]. The same applies to the curried version "R OO S". | |
| 32427 | 1151 | |
| 33057 | 1152 | * Function "Inv" is renamed to "inv_into" and function "inv" is now an | 
| 33842 | 1153 | abbreviation for "inv_into UNIV". Lemmas are renamed accordingly. | 
| 32988 | 1154 | INCOMPATIBILITY. | 
| 1155 | ||
| 33860 | 1156 | * Most rules produced by inductive and datatype package have mandatory | 
| 1157 | prefixes. INCOMPATIBILITY. | |
| 31790 | 1158 | |
| 33842 | 1159 | * Changed "DERIV_intros" to a dynamic fact, which can be augmented by | 
| 1160 | the attribute of the same name. Each of the theorems in the list | |
| 1161 | DERIV_intros assumes composition with an additional function and | |
| 1162 | matches a variable to the derivative, which has to be solved by the | |
| 1163 | Simplifier. Hence (auto intro!: DERIV_intros) computes the derivative | |
| 33873 | 1164 | of most elementary terms. Former Maclauren.DERIV_tac and | 
| 1165 | Maclauren.deriv_tac should be replaced by (auto intro!: DERIV_intros). | |
| 1166 | INCOMPATIBILITY. | |
| 33860 | 1167 | |
| 1168 | * Code generator attributes follow the usual underscore convention: | |
| 1169 | code_unfold replaces code unfold | |
| 1170 | code_post replaces code post | |
| 1171 | etc. | |
| 1172 | INCOMPATIBILITY. | |
| 31900 | 1173 | |
| 33471 | 1174 | * Renamed methods: | 
| 1175 | sizechange -> size_change | |
| 1176 | induct_scheme -> induction_schema | |
| 33860 | 1177 | INCOMPATIBILITY. | 
| 33673 | 1178 | |
| 33843 | 1179 | * Discontinued abbreviation "arbitrary" of constant "undefined". | 
| 1180 | INCOMPATIBILITY, use "undefined" directly. | |
| 1181 | ||
| 33860 | 1182 | * Renamed theorems: | 
| 1183 | Suc_eq_add_numeral_1 -> Suc_eq_plus1 | |
| 1184 | Suc_eq_add_numeral_1_left -> Suc_eq_plus1_left | |
| 1185 | Suc_plus1 -> Suc_eq_plus1 | |
| 1186 | *anti_sym -> *antisym* | |
| 1187 | vector_less_eq_def -> vector_le_def | |
| 1188 | INCOMPATIBILITY. | |
| 1189 | ||
| 1190 | * Added theorem List.map_map as [simp]. Removed List.map_compose. | |
| 1191 | INCOMPATIBILITY. | |
| 1192 | ||
| 1193 | * Removed predicate "M hassize n" (<--> card M = n & finite M). | |
| 1194 | INCOMPATIBILITY. | |
| 1195 | ||
| 31812 | 1196 | |
| 33825 | 1197 | *** HOLCF *** | 
| 1198 | ||
| 33842 | 1199 | * Theory Representable defines a class "rep" of domains that are | 
| 1200 | representable (via an ep-pair) in the universal domain type "udom". | |
| 33825 | 1201 | Instances are provided for all type constructors defined in HOLCF. | 
| 1202 | ||
| 1203 | * The 'new_domain' command is a purely definitional version of the | |
| 1204 | domain package, for representable domains. Syntax is identical to the | |
| 1205 | old domain package. The 'new_domain' package also supports indirect | |
| 1206 | recursion using previously-defined type constructors. See | |
| 33842 | 1207 | src/HOLCF/ex/New_Domain.thy for examples. | 
| 1208 | ||
| 1209 | * Method "fixrec_simp" unfolds one step of a fixrec-defined constant | |
| 33825 | 1210 | on the left-hand side of an equation, and then performs | 
| 1211 | simplification. Rewriting is done using rules declared with the | |
| 33842 | 1212 | "fixrec_simp" attribute. The "fixrec_simp" method is intended as a | 
| 1213 | replacement for "fixpat"; see src/HOLCF/ex/Fixrec_ex.thy for examples. | |
| 33825 | 1214 | |
| 1215 | * The pattern-match compiler in 'fixrec' can now handle constructors | |
| 1216 | with HOL function types. Pattern-match combinators for the Pair | |
| 1217 | constructor are pre-configured. | |
| 1218 | ||
| 1219 | * The 'fixrec' package now produces better fixed-point induction rules | |
| 1220 | for mutually-recursive definitions: Induction rules have conclusions | |
| 1221 | of the form "P foo bar" instead of "P <foo, bar>". | |
| 1222 | ||
| 1223 | * The constant "sq_le" (with infix syntax "<<" or "\<sqsubseteq>") has | |
| 1224 | been renamed to "below". The name "below" now replaces "less" in many | |
| 33842 | 1225 | theorem names. (Legacy theorem names using "less" are still supported | 
| 1226 | as well.) | |
| 33825 | 1227 | |
| 1228 | * The 'fixrec' package now supports "bottom patterns". Bottom | |
| 1229 | patterns can be used to generate strictness rules, or to make | |
| 1230 | functions more strict (much like the bang-patterns supported by the | |
| 33873 | 1231 | Glasgow Haskell Compiler). See src/HOLCF/ex/Fixrec_ex.thy for | 
| 1232 | examples. | |
| 33825 | 1233 | |
| 1234 | ||
| 31304 | 1235 | *** ML *** | 
| 1236 | ||
| 33843 | 1237 | * Support for Poly/ML 5.3.0, with improved reporting of compiler | 
| 1238 | errors and run-time exceptions, including detailed source positions. | |
| 1239 | ||
| 1240 | * Structure Name_Space (formerly NameSpace) now manages uniquely | |
| 1241 | identified entries, with some additional information such as source | |
| 1242 | position, logical grouping etc. | |
| 1243 | ||
| 33524 
a08e6c1cbc04
updated functor Theory_Data, Proof_Data, Generic_Data;
 wenzelm parents: 
33472diff
changeset | 1244 | * Theory and context data is now introduced by the simplified and | 
| 
a08e6c1cbc04
updated functor Theory_Data, Proof_Data, Generic_Data;
 wenzelm parents: 
33472diff
changeset | 1245 | modernized functors Theory_Data, Proof_Data, Generic_Data. Data needs | 
| 
a08e6c1cbc04
updated functor Theory_Data, Proof_Data, Generic_Data;
 wenzelm parents: 
33472diff
changeset | 1246 | to be pure, but the old TheoryDataFun for mutable data (with explicit | 
| 
a08e6c1cbc04
updated functor Theory_Data, Proof_Data, Generic_Data;
 wenzelm parents: 
33472diff
changeset | 1247 | copy operation) is still available for some time. | 
| 
a08e6c1cbc04
updated functor Theory_Data, Proof_Data, Generic_Data;
 wenzelm parents: 
33472diff
changeset | 1248 | |
| 32742 | 1249 | * Structure Synchronized (cf. src/Pure/Concurrent/synchronized.ML) | 
| 1250 | provides a high-level programming interface to synchronized state | |
| 1251 | variables with atomic update. This works via pure function | |
| 1252 | application within a critical section -- its runtime should be as | |
| 1253 | short as possible; beware of deadlocks if critical code is nested, | |
| 1254 | either directly or indirectly via other synchronized variables! | |
| 1255 | ||
| 1256 | * Structure Unsynchronized (cf. src/Pure/ML-Systems/unsynchronized.ML) | |
| 1257 | wraps raw ML references, explicitly indicating their non-thread-safe | |
| 1258 | behaviour. The Isar toplevel keeps this structure open, to | |
| 1259 | accommodate Proof General as well as quick and dirty interactive | |
| 1260 | experiments with references. | |
| 1261 | ||
| 32365 | 1262 | * PARALLEL_CHOICE and PARALLEL_GOALS provide basic support for | 
| 1263 | parallel tactical reasoning. | |
| 1264 | ||
| 32427 | 1265 | * Tacticals Subgoal.FOCUS, Subgoal.FOCUS_PREMS, Subgoal.FOCUS_PARAMS | 
| 1266 | are similar to SUBPROOF, but are slightly more flexible: only the | |
| 1267 | specified parts of the subgoal are imported into the context, and the | |
| 1268 | body tactic may introduce new subgoals and schematic variables. | |
| 1269 | ||
| 1270 | * Old tactical METAHYPS, which does not observe the proof context, has | |
| 1271 | been renamed to Old_Goals.METAHYPS and awaits deletion. Use SUBPROOF | |
| 1272 | or Subgoal.FOCUS etc. | |
| 32216 | 1273 | |
| 31971 
8c1b845ed105
renamed functor TableFun to Table, and GraphFun to Graph;
 wenzelm parents: 
31901diff
changeset | 1274 | * Renamed functor TableFun to Table, and GraphFun to Graph. (Since | 
| 
8c1b845ed105
renamed functor TableFun to Table, and GraphFun to Graph;
 wenzelm parents: 
31901diff
changeset | 1275 | functors have their own ML name space there is no point to mark them | 
| 
8c1b845ed105
renamed functor TableFun to Table, and GraphFun to Graph;
 wenzelm parents: 
31901diff
changeset | 1276 | separately.) Minor INCOMPATIBILITY. | 
| 
8c1b845ed105
renamed functor TableFun to Table, and GraphFun to Graph;
 wenzelm parents: 
31901diff
changeset | 1277 | |
| 31901 | 1278 | * Renamed NamedThmsFun to Named_Thms. INCOMPATIBILITY. | 
| 1279 | ||
| 33842 | 1280 | * Renamed several structures FooBar to Foo_Bar. Occasional, | 
| 1281 | INCOMPATIBILITY. | |
| 1282 | ||
| 33843 | 1283 | * Operations of structure Skip_Proof no longer require quick_and_dirty | 
| 1284 | mode, which avoids critical setmp. | |
| 1285 | ||
| 31306 
a74ee84288a0
eliminated old Attrib.add_attributes (and Attrib.syntax);
 wenzelm parents: 
31304diff
changeset | 1286 | * Eliminated old Attrib.add_attributes, Method.add_methods and related | 
| 33842 | 1287 | combinators for "args". INCOMPATIBILITY, need to use simplified | 
| 31306 
a74ee84288a0
eliminated old Attrib.add_attributes (and Attrib.syntax);
 wenzelm parents: 
31304diff
changeset | 1288 | Attrib/Method.setup introduced in Isabelle2009. | 
| 31304 | 1289 | |
| 32151 
2f65c45c2e7e
Proper context for simpset_of, claset_of, clasimpset_of.
 wenzelm parents: 
32136diff
changeset | 1290 | * Proper context for simpset_of, claset_of, clasimpset_of. May fall | 
| 
2f65c45c2e7e
Proper context for simpset_of, claset_of, clasimpset_of.
 wenzelm parents: 
32136diff
changeset | 1291 | back on global_simpset_of, global_claset_of, global_clasimpset_of as | 
| 
2f65c45c2e7e
Proper context for simpset_of, claset_of, clasimpset_of.
 wenzelm parents: 
32136diff
changeset | 1292 | last resort. INCOMPATIBILITY. | 
| 
2f65c45c2e7e
Proper context for simpset_of, claset_of, clasimpset_of.
 wenzelm parents: 
32136diff
changeset | 1293 | |
| 32092 
6a5995438266
Display.pretty_thm now requires a proper context;
 wenzelm parents: 
32079diff
changeset | 1294 | * Display.pretty_thm now requires a proper context (cf. former | 
| 
6a5995438266
Display.pretty_thm now requires a proper context;
 wenzelm parents: 
32079diff
changeset | 1295 | ProofContext.pretty_thm). May fall back on Display.pretty_thm_global | 
| 
6a5995438266
Display.pretty_thm now requires a proper context;
 wenzelm parents: 
32079diff
changeset | 1296 | or even Display.pretty_thm_without_context as last resort. | 
| 
6a5995438266
Display.pretty_thm now requires a proper context;
 wenzelm parents: 
32079diff
changeset | 1297 | INCOMPATIBILITY. | 
| 
6a5995438266
Display.pretty_thm now requires a proper context;
 wenzelm parents: 
32079diff
changeset | 1298 | |
| 32433 | 1299 | * Discontinued Display.pretty_ctyp/cterm etc. INCOMPATIBILITY, use | 
| 1300 | Syntax.pretty_typ/term directly, preferably with proper context | |
| 1301 | instead of global theory. | |
| 1302 | ||
| 31304 | 1303 | |
| 31308 | 1304 | *** System *** | 
| 1305 | ||
| 33842 | 1306 | * Further fine tuning of parallel proof checking, scales up to 8 cores | 
| 1307 | (max. speedup factor 5.0). See also Goal.parallel_proofs in ML and | |
| 1308 | usedir option -q. | |
| 1309 | ||
| 32326 | 1310 | * Support for additional "Isabelle components" via etc/components, see | 
| 1311 | also the system manual. | |
| 1312 | ||
| 1313 | * The isabelle makeall tool now operates on all components with | |
| 1314 | IsaMakefile, not just hardwired "logics". | |
| 1315 | ||
| 33842 | 1316 | * Removed "compress" option from isabelle-process and isabelle usedir; | 
| 1317 | this is always enabled. | |
| 33818 | 1318 | |
| 31308 | 1319 | * Discontinued support for Poly/ML 4.x versions. | 
| 1320 | ||
| 33842 | 1321 | * Isabelle tool "wwwfind" provides web interface for 'find_theorems' | 
| 1322 | on a given logic image. This requires the lighttpd webserver and is | |
| 1323 | currently supported on Linux only. | |
| 32061 
11f8ee55662d
parallel_proofs: more fine-grained control with optional parallel checking of nested Isar proofs;
 wenzelm parents: 
31997diff
changeset | 1324 | |
| 31308 | 1325 | |
| 31304 | 1326 | |
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1327 | New in Isabelle2009 (April 2009) | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1328 | -------------------------------- | 
| 27104 
791607529f6d
rep_datatype command now takes list of constructors as input arguments
 haftmann parents: 
27067diff
changeset | 1329 | |
| 27599 | 1330 | *** General *** | 
| 1331 | ||
| 28504 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1332 | * Simplified main Isabelle executables, with less surprises on | 
| 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1333 | case-insensitive file-systems (such as Mac OS). | 
| 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1334 | |
| 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1335 | - The main Isabelle tool wrapper is now called "isabelle" instead of | 
| 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1336 | "isatool." | 
| 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1337 | |
| 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1338 | - The former "isabelle" alias for "isabelle-process" has been | 
| 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1339 | removed (should rarely occur to regular users). | 
| 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1340 | |
| 28915 
0642cbb60c98
removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
 wenzelm parents: 
28914diff
changeset | 1341 | - The former "isabelle-interface" and its alias "Isabelle" have been | 
| 
0642cbb60c98
removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
 wenzelm parents: 
28914diff
changeset | 1342 | removed (interfaces are now regular Isabelle tools). | 
| 28504 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1343 | |
| 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1344 | Within scripts and make files, the Isabelle environment variables | 
| 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1345 | ISABELLE_TOOL and ISABELLE_PROCESS replace old ISATOOL and ISABELLE, | 
| 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1346 | respectively. (The latter are still available as legacy feature.) | 
| 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1347 | |
| 28915 
0642cbb60c98
removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
 wenzelm parents: 
28914diff
changeset | 1348 | The old isabelle-interface wrapper could react in confusing ways if | 
| 
0642cbb60c98
removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
 wenzelm parents: 
28914diff
changeset | 1349 | the interface was uninstalled or changed otherwise. Individual | 
| 
0642cbb60c98
removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
 wenzelm parents: 
28914diff
changeset | 1350 | interface tool configuration is now more explicit, see also the | 
| 
0642cbb60c98
removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
 wenzelm parents: 
28914diff
changeset | 1351 | Isabelle system manual. In particular, Proof General is now available | 
| 
0642cbb60c98
removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
 wenzelm parents: 
28914diff
changeset | 1352 | via "isabelle emacs". | 
| 28504 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1353 | |
| 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1354 | INCOMPATIBILITY, need to adapt derivative scripts. Users may need to | 
| 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1355 | purge installed copies of Isabelle executables and re-run "isabelle | 
| 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1356 | install -p ...", or use symlinks. | 
| 
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
 wenzelm parents: 
28475diff
changeset | 1357 | |
| 28914 
f993cbffc42a
default for ISABELLE_HOME_USER is now ~/.isabelle instead of ~/isabelle;
 wenzelm parents: 
28856diff
changeset | 1358 | * The default for ISABELLE_HOME_USER is now ~/.isabelle instead of the | 
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1359 | old ~/isabelle, which was slightly non-standard and apt to cause | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1360 | surprises on case-insensitive file-systems (such as Mac OS). | 
| 28914 
f993cbffc42a
default for ISABELLE_HOME_USER is now ~/.isabelle instead of ~/isabelle;
 wenzelm parents: 
28856diff
changeset | 1361 | |
| 
f993cbffc42a
default for ISABELLE_HOME_USER is now ~/.isabelle instead of ~/isabelle;
 wenzelm parents: 
28856diff
changeset | 1362 | INCOMPATIBILITY, need to move existing ~/isabelle/etc, | 
| 
f993cbffc42a
default for ISABELLE_HOME_USER is now ~/.isabelle instead of ~/isabelle;
 wenzelm parents: 
28856diff
changeset | 1363 | ~/isabelle/heaps, ~/isabelle/browser_info to the new place. Special | 
| 
f993cbffc42a
default for ISABELLE_HOME_USER is now ~/.isabelle instead of ~/isabelle;
 wenzelm parents: 
28856diff
changeset | 1364 | care is required when using older releases of Isabelle. Note that | 
| 
f993cbffc42a
default for ISABELLE_HOME_USER is now ~/.isabelle instead of ~/isabelle;
 wenzelm parents: 
28856diff
changeset | 1365 | ISABELLE_HOME_USER can be changed in Isabelle/etc/settings of any | 
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1366 | Isabelle distribution, in order to use the new ~/.isabelle uniformly. | 
| 28914 
f993cbffc42a
default for ISABELLE_HOME_USER is now ~/.isabelle instead of ~/isabelle;
 wenzelm parents: 
28856diff
changeset | 1367 | |
| 29161 
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
 wenzelm parents: 
29145diff
changeset | 1368 | * Proofs of fully specified statements are run in parallel on | 
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1369 | multi-core systems. A speedup factor of 2.5 to 3.2 can be expected on | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1370 | a regular 4-core machine, if the initial heap space is made reasonably | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1371 | large (cf. Poly/ML option -H). (Requires Poly/ML 5.2.1 or later.) | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1372 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1373 | * The main reference manuals ("isar-ref", "implementation", and
 | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1374 | "system") have been updated and extended. Formally checked references | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1375 | as hyperlinks are now available uniformly. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1376 | |
| 30163 
faf95eb3f375
* New prover for coherent logic (see src/Tools/coherent.ML).
 wenzelm parents: 
30106diff
changeset | 1377 | |
| 27599 | 1378 | *** Pure *** | 
| 1379 | ||
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1380 | * Complete re-implementation of locales. INCOMPATIBILITY in several | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1381 | respects. The most important changes are listed below. See the | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1382 | Tutorial on Locales ("locales" manual) for details.
 | 
| 29253 | 1383 | |
| 1384 | - In locale expressions, instantiation replaces renaming. Parameters | |
| 1385 | must be declared in a for clause. To aid compatibility with previous | |
| 1386 | parameter inheritance, in locale declarations, parameters that are not | |
| 1387 | 'touched' (instantiation position "_" or omitted) are implicitly added | |
| 1388 | with their syntax at the beginning of the for clause. | |
| 1389 | ||
| 1390 | - Syntax from abbreviations and definitions in locales is available in | |
| 1391 | locale expressions and context elements. The latter is particularly | |
| 1392 | useful in locale declarations. | |
| 1393 | ||
| 1394 | - More flexible mechanisms to qualify names generated by locale | |
| 1395 | expressions. Qualifiers (prefixes) may be specified in locale | |
| 30728 
f0aeca99b5d9
interpretation/interpret: prefixes are mandatory by default;
 wenzelm parents: 
30706diff
changeset | 1396 | expressions, and can be marked as mandatory (syntax: "name!:") or | 
| 
f0aeca99b5d9
interpretation/interpret: prefixes are mandatory by default;
 wenzelm parents: 
30706diff
changeset | 1397 | optional (syntax "name?:"). The default depends for plain "name:" | 
| 
f0aeca99b5d9
interpretation/interpret: prefixes are mandatory by default;
 wenzelm parents: 
30706diff
changeset | 1398 | depends on the situation where a locale expression is used: in | 
| 
f0aeca99b5d9
interpretation/interpret: prefixes are mandatory by default;
 wenzelm parents: 
30706diff
changeset | 1399 | commands 'locale' and 'sublocale' prefixes are optional, in | 
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1400 | 'interpretation' and 'interpret' prefixes are mandatory. The old | 
| 30728 
f0aeca99b5d9
interpretation/interpret: prefixes are mandatory by default;
 wenzelm parents: 
30706diff
changeset | 1401 | implicit qualifiers derived from the parameter names of a locale are | 
| 
f0aeca99b5d9
interpretation/interpret: prefixes are mandatory by default;
 wenzelm parents: 
30706diff
changeset | 1402 | no longer generated. | 
| 30106 | 1403 | |
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1404 | - Command "sublocale l < e" replaces "interpretation l < e". The | 
| 30106 | 1405 | instantiation clause in "interpretation" and "interpret" (square | 
| 1406 | brackets) is no longer available. Use locale expressions. | |
| 29253 | 1407 | |
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1408 | - When converting proof scripts, mandatory qualifiers in | 
| 30728 
f0aeca99b5d9
interpretation/interpret: prefixes are mandatory by default;
 wenzelm parents: 
30706diff
changeset | 1409 | 'interpretation' and 'interpret' should be retained by default, even | 
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1410 | if this is an INCOMPATIBILITY compared to former behavior. In the | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1411 | worst case, use the "name?:" form for non-mandatory ones. Qualifiers | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1412 | in locale expressions range over a single locale instance only. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1413 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1414 | - Dropped locale element "includes". This is a major INCOMPATIBILITY. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1415 | In existing theorem specifications replace the includes element by the | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1416 | respective context elements of the included locale, omitting those | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1417 | that are already present in the theorem specification. Multiple | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1418 | assume elements of a locale should be replaced by a single one | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1419 | involving the locale predicate. In the proof body, declarations (most | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1420 | notably theorems) may be regained by interpreting the respective | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1421 | locales in the proof context as required (command "interpret"). | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1422 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1423 | If using "includes" in replacement of a target solely because the | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1424 | parameter types in the theorem are not as general as in the target, | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1425 | consider declaring a new locale with additional type constraints on | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1426 | the parameters (context element "constrains"). | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1427 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1428 | - Discontinued "locale (open)". INCOMPATIBILITY. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1429 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1430 | - Locale interpretation commands no longer attempt to simplify goal. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1431 | INCOMPATIBILITY: in rare situations the generated goal differs. Use | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1432 | methods intro_locales and unfold_locales to clarify. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1433 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1434 | - Locale interpretation commands no longer accept interpretation | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1435 | attributes. INCOMPATIBILITY. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1436 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1437 | * Class declaration: so-called "base sort" must not be given in import | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1438 | list any longer, but is inferred from the specification. Particularly | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1439 | in HOL, write | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1440 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1441 | class foo = ... | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1442 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1443 | instead of | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1444 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1445 | class foo = type + ... | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1446 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1447 | * Class target: global versions of theorems stemming do not carry a | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1448 | parameter prefix any longer. INCOMPATIBILITY. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1449 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1450 | * Class 'instance' command no longer accepts attached definitions. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1451 | INCOMPATIBILITY, use proper 'instantiation' target instead. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1452 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1453 | * Recovered hiding of consts, which was accidentally broken in | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1454 | Isabelle2007. Potential INCOMPATIBILITY, ``hide const c'' really | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1455 | makes c inaccessible; consider using ``hide (open) const c'' instead. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1456 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1457 | * Slightly more coherent Pure syntax, with updated documentation in | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1458 | isar-ref manual. Removed locales meta_term_syntax and | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1459 | meta_conjunction_syntax: TERM and &&& (formerly &&) are now permanent, | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1460 | INCOMPATIBILITY in rare situations. Note that &&& should not be used | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1461 | directly in regular applications. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1462 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1463 | * There is a new syntactic category "float_const" for signed decimal | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1464 | fractions (e.g. 123.45 or -123.45). | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1465 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1466 | * Removed exotic 'token_translation' command. INCOMPATIBILITY, use ML | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1467 | interface with 'setup' command instead. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1468 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1469 | * Command 'local_setup' is similar to 'setup', but operates on a local | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1470 | theory context. | 
| 27104 
791607529f6d
rep_datatype command now takes list of constructors as input arguments
 haftmann parents: 
27067diff
changeset | 1471 | |
| 28114 | 1472 | * The 'axiomatization' command now only works within a global theory | 
| 1473 | context. INCOMPATIBILITY. | |
| 1474 | ||
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1475 | * Goal-directed proof now enforces strict proof irrelevance wrt. sort | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1476 | hypotheses. Sorts required in the course of reasoning need to be | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1477 | covered by the constraints in the initial statement, completed by the | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1478 | type instance information of the background theory. Non-trivial sort | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1479 | hypotheses, which rarely occur in practice, may be specified via | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1480 | vacuous propositions of the form SORT_CONSTRAINT('a::c).  For example:
 | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1481 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1482 |   lemma assumes "SORT_CONSTRAINT('a::empty)" shows False ...
 | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1483 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1484 | The result contains an implicit sort hypotheses as before -- | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1485 | SORT_CONSTRAINT premises are eliminated as part of the canonical rule | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1486 | normalization. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1487 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1488 | * Generalized Isar history, with support for linear undo, direct state | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1489 | addressing etc. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1490 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1491 | * Changed defaults for unify configuration options: | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1492 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1493 | unify_trace_bound = 50 (formerly 25) | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1494 | unify_search_bound = 60 (formerly 30) | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1495 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1496 | * Different bookkeeping for code equations (INCOMPATIBILITY): | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1497 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1498 | a) On theory merge, the last set of code equations for a particular | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1499 | constant is taken (in accordance with the policy applied by other | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1500 | parts of the code generator framework). | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1501 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1502 | b) Code equations stemming from explicit declarations (e.g. code | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1503 | attribute) gain priority over default code equations stemming | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1504 | from definition, primrec, fun etc. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1505 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1506 | * Keyword 'code_exception' now named 'code_abort'. INCOMPATIBILITY. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1507 | |
| 30965 | 1508 | * Unified theorem tables for both code generators. Thus [code | 
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1509 | func] has disappeared and only [code] remains. INCOMPATIBILITY. | 
| 30577 | 1510 | |
| 1511 | * Command 'find_consts' searches for constants based on type and name | |
| 1512 | patterns, e.g. | |
| 29883 | 1513 | |
| 1514 | find_consts "_ => bool" | |
| 1515 | ||
| 30106 | 1516 | By default, matching is against subtypes, but it may be restricted to | 
| 30728 
f0aeca99b5d9
interpretation/interpret: prefixes are mandatory by default;
 wenzelm parents: 
30706diff
changeset | 1517 | the whole type. Searching by name is possible. Multiple queries are | 
| 30106 | 1518 | conjunctive and queries may be negated by prefixing them with a | 
| 1519 | hyphen: | |
| 29883 | 1520 | |
| 1521 | find_consts strict: "_ => bool" name: "Int" -"int => int" | |
| 29861 
3c348f5873f3
updated NEWS etc with "solves" criterion and auto_solves
 kleing parents: 
29823diff
changeset | 1522 | |
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1523 | * New 'find_theorems' criterion "solves" matches theorems that | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1524 | directly solve the current goal (modulo higher-order unification). | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1525 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1526 | * Auto solve feature for main theorem statements: whenever a new goal | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1527 | is stated, "find_theorems solves" is called; any theorems that could | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1528 | solve the lemma directly are listed as part of the goal state. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1529 | Cf. associated options in Proof General Isabelle settings menu, | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1530 | enabled by default, with reasonable timeout for pathological cases of | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1531 | higher-order unification. | 
| 30415 
9501af91c4a3
Instead of giving up entirely, arith now ignores all inequalities when there are too many.
 webertj parents: 
30399diff
changeset | 1532 | |
| 27104 
791607529f6d
rep_datatype command now takes list of constructors as input arguments
 haftmann parents: 
27067diff
changeset | 1533 | |
| 27381 | 1534 | *** Document preparation *** | 
| 1535 | ||
| 1536 | * Antiquotation @{lemma} now imitates a regular terminal proof,
 | |
| 27392 | 1537 | demanding keyword 'by' and supporting the full method expression | 
| 27519 
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
 wenzelm parents: 
27485diff
changeset | 1538 | syntax just like the Isar command 'by'. | 
| 27381 | 1539 | |
| 1540 | ||
| 27104 
791607529f6d
rep_datatype command now takes list of constructors as input arguments
 haftmann parents: 
27067diff
changeset | 1541 | *** HOL *** | 
| 
791607529f6d
rep_datatype command now takes list of constructors as input arguments
 haftmann parents: 
27067diff
changeset | 1542 | |
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1543 | * Integrated main parts of former image HOL-Complex with HOL. Entry | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1544 | points Main and Complex_Main remain as before. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1545 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1546 | * Logic image HOL-Plain provides a minimal HOL with the most important | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1547 | tools available (inductive, datatype, primrec, ...). This facilitates | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1548 | experimentation and tool development. Note that user applications | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1549 | (and library theories) should never refer to anything below theory | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1550 | Main, as before. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1551 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1552 | * Logic image HOL-Main stops at theory Main, and thus facilitates | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1553 | experimentation due to shorter build times. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1554 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1555 | * Logic image HOL-NSA contains theories of nonstandard analysis which | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1556 | were previously part of former HOL-Complex. Entry point Hyperreal | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1557 | remains valid, but theories formerly using Complex_Main should now use | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1558 | new entry point Hypercomplex. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1559 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1560 | * Generic ATP manager for Sledgehammer, based on ML threads instead of | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1561 | Posix processes. Avoids potentially expensive forking of the ML | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1562 | process. New thread-based implementation also works on non-Unix | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1563 | platforms (Cygwin). Provers are no longer hardwired, but defined | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1564 | within the theory via plain ML wrapper functions. Basic Sledgehammer | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1565 | commands are covered in the isar-ref manual. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1566 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1567 | * Wrapper scripts for remote SystemOnTPTP service allows to use | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1568 | sledgehammer without local ATP installation (Vampire etc.). Other | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1569 | provers may be included via suitable ML wrappers, see also | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1570 | src/HOL/ATP_Linkup.thy. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1571 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1572 | * ATP selection (E/Vampire/Spass) is now via Proof General's settings | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1573 | menu. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1574 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1575 | * The metis method no longer fails because the theorem is too trivial | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1576 | (contains the empty clause). | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1577 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1578 | * The metis method now fails in the usual manner, rather than raising | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1579 | an exception, if it determines that it cannot prove the theorem. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1580 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1581 | * Method "coherent" implements a prover for coherent logic (see also | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1582 | src/Tools/coherent.ML). | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1583 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1584 | * Constants "undefined" and "default" replace "arbitrary". Usually | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1585 | "undefined" is the right choice to replace "arbitrary", though | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1586 | logically there is no difference. INCOMPATIBILITY. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1587 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1588 | * Command "value" now integrates different evaluation mechanisms. The | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1589 | result of the first successful evaluation mechanism is printed. In | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1590 | square brackets a particular named evaluation mechanisms may be | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1591 | specified (currently, [SML], [code] or [nbe]). See further | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1592 | src/HOL/ex/Eval_Examples.thy. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1593 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1594 | * Normalization by evaluation now allows non-leftlinear equations. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1595 | Declare with attribute [code nbe]. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1596 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1597 | * Methods "case_tac" and "induct_tac" now refer to the very same rules | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1598 | as the structured Isar versions "cases" and "induct", cf. the | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1599 | corresponding "cases" and "induct" attributes. Mutual induction rules | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1600 | are now presented as a list of individual projections | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1601 | (e.g. foo_bar.inducts for types foo and bar); the old format with | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1602 | explicit HOL conjunction is no longer supported. INCOMPATIBILITY, in | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1603 | rare situations a different rule is selected --- notably nested tuple | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1604 | elimination instead of former prod.exhaust: use explicit (case_tac t | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1605 | rule: prod.exhaust) here. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1606 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1607 | * Attributes "cases", "induct", "coinduct" support "del" option. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1608 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1609 | * Removed fact "case_split_thm", which duplicates "case_split". | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1610 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1611 | * The option datatype has been moved to a new theory Option. Renamed | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1612 | option_map to Option.map, and o2s to Option.set, INCOMPATIBILITY. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1613 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1614 | * New predicate "strict_mono" classifies strict functions on partial | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1615 | orders. With strict functions on linear orders, reasoning about | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1616 | (in)equalities is facilitated by theorems "strict_mono_eq", | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1617 | "strict_mono_less_eq" and "strict_mono_less". | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1618 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1619 | * Some set operations are now proper qualified constants with | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1620 | authentic syntax. INCOMPATIBILITY: | 
| 30304 
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
 haftmann parents: 
30085diff
changeset | 1621 | |
| 
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
 haftmann parents: 
30085diff
changeset | 1622 | op Int ~> Set.Int | 
| 
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
 haftmann parents: 
30085diff
changeset | 1623 | op Un ~> Set.Un | 
| 
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
 haftmann parents: 
30085diff
changeset | 1624 | INTER ~> Set.INTER | 
| 
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
 haftmann parents: 
30085diff
changeset | 1625 | UNION ~> Set.UNION | 
| 
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
 haftmann parents: 
30085diff
changeset | 1626 | Inter ~> Set.Inter | 
| 
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
 haftmann parents: 
30085diff
changeset | 1627 | Union ~> Set.Union | 
| 
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
 haftmann parents: 
30085diff
changeset | 1628 |     {} ~>       Set.empty
 | 
| 
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
 haftmann parents: 
30085diff
changeset | 1629 | UNIV ~> Set.UNIV | 
| 
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
 haftmann parents: 
30085diff
changeset | 1630 | |
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1631 | * Class complete_lattice with operations Inf, Sup, INFI, SUPR now in | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1632 | theory Set. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1633 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1634 | * Auxiliary class "itself" has disappeared -- classes without any | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1635 | parameter are treated as expected by the 'class' command. | 
| 29797 | 1636 | |
| 29823 
0ab754d13ccd
session Reflecion renamed to Decision_Procs, moved Dense_Linear_Order there
 haftmann parents: 
29810diff
changeset | 1637 | * Leibnitz's Series for Pi and the arcus tangens and logarithm series. | 
| 
0ab754d13ccd
session Reflecion renamed to Decision_Procs, moved Dense_Linear_Order there
 haftmann parents: 
29810diff
changeset | 1638 | |
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1639 | * Common decision procedures (Cooper, MIR, Ferrack, Approximation, | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1640 | Dense_Linear_Order) are now in directory HOL/Decision_Procs. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1641 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1642 | * Theory src/HOL/Decision_Procs/Approximation provides the new proof | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1643 | method "approximation". It proves formulas on real values by using | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1644 | interval arithmetic. In the formulas are also the transcendental | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1645 | functions sin, cos, tan, atan, ln, exp and the constant pi are | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1646 | allowed. For examples see | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1647 | src/HOL/Descision_Procs/ex/Approximation_Ex.thy. | 
| 29823 
0ab754d13ccd
session Reflecion renamed to Decision_Procs, moved Dense_Linear_Order there
 haftmann parents: 
29810diff
changeset | 1648 | |
| 
0ab754d13ccd
session Reflecion renamed to Decision_Procs, moved Dense_Linear_Order there
 haftmann parents: 
29810diff
changeset | 1649 | * Theory "Reflection" now resides in HOL/Library. | 
| 29650 | 1650 | |
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1651 | * Entry point to Word library now simply named "Word". | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1652 | INCOMPATIBILITY. | 
| 29628 | 1653 | |
| 29197 
6d4cb27ed19c
adapted HOL source structure to distribution layout
 haftmann parents: 
29182diff
changeset | 1654 | * Made source layout more coherent with logical distribution | 
| 
6d4cb27ed19c
adapted HOL source structure to distribution layout
 haftmann parents: 
29182diff
changeset | 1655 | structure: | 
| 28952 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1656 | |
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1657 | src/HOL/Library/RType.thy ~> src/HOL/Typerep.thy | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1658 | src/HOL/Library/Code_Message.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1659 | src/HOL/Library/GCD.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1660 | src/HOL/Library/Order_Relation.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1661 | src/HOL/Library/Parity.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1662 | src/HOL/Library/Univ_Poly.thy ~> src/HOL/ | 
| 30176 
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
 huffman parents: 
30163diff
changeset | 1663 | src/HOL/Real/ContNotDenum.thy ~> src/HOL/Library/ | 
| 28952 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1664 | src/HOL/Real/Lubs.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1665 | src/HOL/Real/PReal.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1666 | src/HOL/Real/Rational.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1667 | src/HOL/Real/RComplete.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1668 | src/HOL/Real/RealDef.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1669 | src/HOL/Real/RealPow.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1670 | src/HOL/Real/Real.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1671 | src/HOL/Complex/Complex_Main.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1672 | src/HOL/Complex/Complex.thy ~> src/HOL/ | 
| 30176 
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
 huffman parents: 
30163diff
changeset | 1673 | src/HOL/Complex/FrechetDeriv.thy ~> src/HOL/Library/ | 
| 
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
 huffman parents: 
30163diff
changeset | 1674 | src/HOL/Complex/Fundamental_Theorem_Algebra.thy ~> src/HOL/Library/ | 
| 28952 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1675 | src/HOL/Hyperreal/Deriv.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1676 | src/HOL/Hyperreal/Fact.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1677 | src/HOL/Hyperreal/Integration.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1678 | src/HOL/Hyperreal/Lim.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1679 | src/HOL/Hyperreal/Ln.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1680 | src/HOL/Hyperreal/Log.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1681 | src/HOL/Hyperreal/MacLaurin.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1682 | src/HOL/Hyperreal/NthRoot.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1683 | src/HOL/Hyperreal/Series.thy ~> src/HOL/ | 
| 29197 
6d4cb27ed19c
adapted HOL source structure to distribution layout
 haftmann parents: 
29182diff
changeset | 1684 | src/HOL/Hyperreal/SEQ.thy ~> src/HOL/ | 
| 28952 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1685 | src/HOL/Hyperreal/Taylor.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1686 | src/HOL/Hyperreal/Transcendental.thy ~> src/HOL/ | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1687 | src/HOL/Real/Float ~> src/HOL/Library/ | 
| 29197 
6d4cb27ed19c
adapted HOL source structure to distribution layout
 haftmann parents: 
29182diff
changeset | 1688 | src/HOL/Real/HahnBanach ~> src/HOL/HahnBanach | 
| 
6d4cb27ed19c
adapted HOL source structure to distribution layout
 haftmann parents: 
29182diff
changeset | 1689 | src/HOL/Real/RealVector.thy ~> src/HOL/ | 
| 28952 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1690 | |
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1691 | src/HOL/arith_data.ML ~> src/HOL/Tools | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1692 | src/HOL/hologic.ML ~> src/HOL/Tools | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1693 | src/HOL/simpdata.ML ~> src/HOL/Tools | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1694 | src/HOL/int_arith1.ML ~> src/HOL/Tools/int_arith.ML | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1695 | src/HOL/int_factor_simprocs.ML ~> src/HOL/Tools | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1696 | src/HOL/nat_simprocs.ML ~> src/HOL/Tools | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1697 | src/HOL/Real/float_arith.ML ~> src/HOL/Tools | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1698 | src/HOL/Real/float_syntax.ML ~> src/HOL/Tools | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1699 | src/HOL/Real/rat_arith.ML ~> src/HOL/Tools | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1700 | src/HOL/Real/real_arith.ML ~> src/HOL/Tools | 
| 
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
 haftmann parents: 
28915diff
changeset | 1701 | |
| 29398 | 1702 | src/HOL/Library/Array.thy ~> src/HOL/Imperative_HOL | 
| 1703 | src/HOL/Library/Heap_Monad.thy ~> src/HOL/Imperative_HOL | |
| 1704 | src/HOL/Library/Heap.thy ~> src/HOL/Imperative_HOL | |
| 1705 | src/HOL/Library/Imperative_HOL.thy ~> src/HOL/Imperative_HOL | |
| 1706 | src/HOL/Library/Ref.thy ~> src/HOL/Imperative_HOL | |
| 1707 | src/HOL/Library/Relational.thy ~> src/HOL/Imperative_HOL | |
| 1708 | ||
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1709 | * If methods "eval" and "evaluation" encounter a structured proof | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1710 | state with !!/==>, only the conclusion is evaluated to True (if | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1711 | possible), avoiding strange error messages. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1712 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1713 | * Method "sizechange" automates termination proofs using (a | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1714 | modification of) the size-change principle. Requires SAT solver. See | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1715 | src/HOL/ex/Termination.thy for examples. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1716 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1717 | * Simplifier: simproc for let expressions now unfolds if bound | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1718 | variable occurs at most once in let expression body. INCOMPATIBILITY. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1719 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1720 | * Method "arith": Linear arithmetic now ignores all inequalities when | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1721 | fast_arith_neq_limit is exceeded, instead of giving up entirely. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1722 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1723 | * New attribute "arith" for facts that should always be used | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1724 | automatically by arithmetic. It is intended to be used locally in | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1725 | proofs, e.g. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1726 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1727 | assumes [arith]: "x > 0" | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1728 | |
| 30706 | 1729 | Global usage is discouraged because of possible performance impact. | 
| 1730 | ||
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1731 | * New classes "top" and "bot" with corresponding operations "top" and | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1732 | "bot" in theory Orderings; instantiation of class "complete_lattice" | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1733 | requires instantiation of classes "top" and "bot". INCOMPATIBILITY. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1734 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1735 | * Changed definition lemma "less_fun_def" in order to provide an | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1736 | instance for preorders on functions; use lemma "less_le" instead. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1737 | INCOMPATIBILITY. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1738 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1739 | * Theory Orderings: class "wellorder" moved here, with explicit | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1740 | induction rule "less_induct" as assumption. For instantiation of | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1741 | "wellorder" by means of predicate "wf", use rule wf_wellorderI. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1742 | INCOMPATIBILITY. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1743 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1744 | * Theory Orderings: added class "preorder" as superclass of "order". | 
| 27793 | 1745 | INCOMPATIBILITY: Instantiation proofs for order, linorder | 
| 1746 | etc. slightly changed. Some theorems named order_class.* now named | |
| 1747 | preorder_class.*. | |
| 1748 | ||
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1749 | * Theory Relation: renamed "refl" to "refl_on", "reflexive" to "refl, | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1750 | "diag" to "Id_on". | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1751 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1752 | * Theory Finite_Set: added a new fold combinator of type | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1753 | |
| 28855 | 1754 |   ('a => 'b => 'b) => 'b => 'a set => 'b
 | 
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1755 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1756 | Occasionally this is more convenient than the old fold combinator | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1757 | which is now defined in terms of the new one and renamed to | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1758 | fold_image. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1759 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1760 | * Theories Ring_and_Field and OrderedGroup: The lemmas "group_simps" | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1761 | and "ring_simps" have been replaced by "algebra_simps" (which can be | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1762 | extended with further lemmas!). At the moment both still exist but | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1763 | the former will disappear at some point. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1764 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1765 | * Theory Power: Lemma power_Suc is now declared as a simp rule in | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1766 | class recpower. Type-specific simp rules for various recpower types | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1767 | have been removed. INCOMPATIBILITY, rename old lemmas as follows: | 
| 30273 
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
 huffman parents: 
30250diff
changeset | 1768 | |
| 
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
 huffman parents: 
30250diff
changeset | 1769 | rat_power_0 -> power_0 | 
| 
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
 huffman parents: 
30250diff
changeset | 1770 | rat_power_Suc -> power_Suc | 
| 
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
 huffman parents: 
30250diff
changeset | 1771 | realpow_0 -> power_0 | 
| 
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
 huffman parents: 
30250diff
changeset | 1772 | realpow_Suc -> power_Suc | 
| 
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
 huffman parents: 
30250diff
changeset | 1773 | complexpow_0 -> power_0 | 
| 
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
 huffman parents: 
30250diff
changeset | 1774 | complexpow_Suc -> power_Suc | 
| 
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
 huffman parents: 
30250diff
changeset | 1775 | power_poly_0 -> power_0 | 
| 
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
 huffman parents: 
30250diff
changeset | 1776 | power_poly_Suc -> power_Suc | 
| 
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
 huffman parents: 
30250diff
changeset | 1777 | |
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1778 | * Theories Ring_and_Field and Divides: Definition of "op dvd" has been | 
| 27793 | 1779 | moved to separate class dvd in Ring_and_Field; a couple of lemmas on | 
| 1780 | dvd has been generalized to class comm_semiring_1. Likewise a bunch | |
| 1781 | of lemmas from Divides has been generalized from nat to class | |
| 1782 | semiring_div. INCOMPATIBILITY. This involves the following theorem | |
| 1783 | renames resulting from duplicate elimination: | |
| 27651 
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
 haftmann parents: 
27599diff
changeset | 1784 | |
| 
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
 haftmann parents: 
27599diff
changeset | 1785 | dvd_def_mod ~> dvd_eq_mod_eq_0 | 
| 
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
 haftmann parents: 
27599diff
changeset | 1786 | zero_dvd_iff ~> dvd_0_left_iff | 
| 28559 | 1787 | dvd_0 ~> dvd_0_right | 
| 27651 
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
 haftmann parents: 
27599diff
changeset | 1788 | DIVISION_BY_ZERO_DIV ~> div_by_0 | 
| 
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
 haftmann parents: 
27599diff
changeset | 1789 | DIVISION_BY_ZERO_MOD ~> mod_by_0 | 
| 
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
 haftmann parents: 
27599diff
changeset | 1790 | mult_div ~> div_mult_self2_is_id | 
| 
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
 haftmann parents: 
27599diff
changeset | 1791 | mult_mod ~> mod_mult_self2_is_0 | 
| 
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
 haftmann parents: 
27599diff
changeset | 1792 | |
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1793 | * Theory IntDiv: removed many lemmas that are instances of class-based | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1794 | generalizations (from Divides and Ring_and_Field). INCOMPATIBILITY, | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1795 | rename old lemmas as follows: | 
| 30044 | 1796 | |
| 1797 | dvd_diff -> nat_dvd_diff | |
| 1798 | dvd_zminus_iff -> dvd_minus_iff | |
| 30224 | 1799 | mod_add1_eq -> mod_add_eq | 
| 1800 | mod_mult1_eq -> mod_mult_right_eq | |
| 1801 | mod_mult1_eq' -> mod_mult_left_eq | |
| 1802 | mod_mult_distrib_mod -> mod_mult_eq | |
| 30044 | 1803 | nat_mod_add_left_eq -> mod_add_left_eq | 
| 1804 | nat_mod_add_right_eq -> mod_add_right_eq | |
| 1805 | nat_mod_div_trivial -> mod_div_trivial | |
| 1806 | nat_mod_mod_trivial -> mod_mod_trivial | |
| 1807 | zdiv_zadd_self1 -> div_add_self1 | |
| 1808 | zdiv_zadd_self2 -> div_add_self2 | |
| 30181 | 1809 | zdiv_zmult_self1 -> div_mult_self2_is_id | 
| 30044 | 1810 | zdiv_zmult_self2 -> div_mult_self1_is_id | 
| 1811 | zdvd_triv_left -> dvd_triv_left | |
| 1812 | zdvd_triv_right -> dvd_triv_right | |
| 1813 | zdvd_zmult_cancel_disj -> dvd_mult_cancel_left | |
| 30085 | 1814 | zmod_eq0_zdvd_iff -> dvd_eq_mod_eq_0[symmetric] | 
| 30044 | 1815 | zmod_zadd_left_eq -> mod_add_left_eq | 
| 1816 | zmod_zadd_right_eq -> mod_add_right_eq | |
| 1817 | zmod_zadd_self1 -> mod_add_self1 | |
| 1818 | zmod_zadd_self2 -> mod_add_self2 | |
| 30224 | 1819 | zmod_zadd1_eq -> mod_add_eq | 
| 30044 | 1820 | zmod_zdiff1_eq -> mod_diff_eq | 
| 1821 | zmod_zdvd_zmod -> mod_mod_cancel | |
| 1822 | zmod_zmod_cancel -> mod_mod_cancel | |
| 1823 | zmod_zmult_self1 -> mod_mult_self2_is_0 | |
| 1824 | zmod_zmult_self2 -> mod_mult_self1_is_0 | |
| 1825 | zmod_1 -> mod_by_1 | |
| 1826 | zdiv_1 -> div_by_1 | |
| 1827 | zdvd_abs1 -> abs_dvd_iff | |
| 1828 | zdvd_abs2 -> dvd_abs_iff | |
| 1829 | zdvd_refl -> dvd_refl | |
| 1830 | zdvd_trans -> dvd_trans | |
| 1831 | zdvd_zadd -> dvd_add | |
| 1832 | zdvd_zdiff -> dvd_diff | |
| 1833 | zdvd_zminus_iff -> dvd_minus_iff | |
| 1834 | zdvd_zminus2_iff -> minus_dvd_iff | |
| 1835 | zdvd_zmultD -> dvd_mult_right | |
| 1836 | zdvd_zmultD2 -> dvd_mult_left | |
| 1837 | zdvd_zmult_mono -> mult_dvd_mono | |
| 1838 | zdvd_0_right -> dvd_0_right | |
| 1839 | zdvd_0_left -> dvd_0_left_iff | |
| 1840 | zdvd_1_left -> one_dvd | |
| 1841 | zminus_dvd_iff -> minus_dvd_iff | |
| 1842 | ||
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1843 | * Theory Rational: 'Fract k 0' now equals '0'. INCOMPATIBILITY. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1844 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1845 | * The real numbers offer decimal input syntax: 12.34 is translated | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1846 | into 1234/10^2. This translation is not reversed upon output. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1847 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1848 | * Theory Library/Polynomial defines an abstract type 'a poly of | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1849 | univariate polynomials with coefficients of type 'a. In addition to | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1850 | the standard ring operations, it also supports div and mod. Code | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1851 | generation is also supported, using list-style constructors. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1852 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1853 | * Theory Library/Inner_Product defines a class of real_inner for real | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1854 | inner product spaces, with an overloaded operation inner :: 'a => 'a | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1855 | => real. Class real_inner is a subclass of real_normed_vector from | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1856 | theory RealVector. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1857 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1858 | * Theory Library/Product_Vector provides instances for the product | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1859 | type 'a * 'b of several classes from RealVector and Inner_Product. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1860 | Definitions of addition, subtraction, scalar multiplication, norms, | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1861 | and inner products are included. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1862 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1863 | * Theory Library/Bit defines the field "bit" of integers modulo 2. In | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1864 | addition to the field operations, numerals and case syntax are also | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1865 | supported. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1866 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1867 | * Theory Library/Diagonalize provides constructive version of Cantor's | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1868 | first diagonalization argument. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1869 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1870 | * Theory Library/GCD: Curried operations gcd, lcm (for nat) and zgcd, | 
| 27599 | 1871 | zlcm (for int); carried together from various gcd/lcm developements in | 
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1872 | the HOL Distribution. Constants zgcd and zlcm replace former igcd and | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1873 | ilcm; corresponding theorems renamed accordingly. INCOMPATIBILITY, | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1874 | may recover tupled syntax as follows: | 
| 27556 | 1875 | |
| 1876 | hide (open) const gcd | |
| 1877 | abbreviation gcd where | |
| 1878 | "gcd == (%(a, b). GCD.gcd a b)" | |
| 1879 | notation (output) | |
| 1880 |       GCD.gcd ("gcd '(_, _')")
 | |
| 1881 | ||
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1882 | The same works for lcm, zgcd, zlcm. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1883 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1884 | * Theory Library/Nat_Infinity: added addition, numeral syntax and more | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1885 | instantiations for algebraic structures. Removed some duplicate | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1886 | theorems. Changes in simp rules. INCOMPATIBILITY. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1887 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1888 | * ML antiquotation @{code} takes a constant as argument and generates
 | 
| 27651 
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
 haftmann parents: 
27599diff
changeset | 1889 | corresponding code in background and inserts name of the corresponding | 
| 
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
 haftmann parents: 
27599diff
changeset | 1890 | resulting ML value/function/datatype constructor binding in place. | 
| 
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
 haftmann parents: 
27599diff
changeset | 1891 | All occurrences of @{code} with a single ML block are generated
 | 
| 
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
 haftmann parents: 
27599diff
changeset | 1892 | simultaneously. Provides a generic and safe interface for | 
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1893 | instrumentalizing code generation. See | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1894 | src/HOL/Decision_Procs/Ferrack.thy for a more ambitious application. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1895 | In future you ought to refrain from ad-hoc compiling generated SML | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1896 | code on the ML toplevel.  Note that (for technical reasons) @{code}
 | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1897 | cannot refer to constants for which user-defined serializations are | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1898 | set. Refer to the corresponding ML counterpart directly in that | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1899 | cases. | 
| 27122 | 1900 | |
| 1901 | * Command 'rep_datatype': instead of theorem names the command now | |
| 1902 | takes a list of terms denoting the constructors of the type to be | |
| 1903 | represented as datatype. The characteristic theorems have to be | |
| 1904 | proven. INCOMPATIBILITY. Also observe that the following theorems | |
| 1905 | have disappeared in favour of existing ones: | |
| 1906 | ||
| 27104 
791607529f6d
rep_datatype command now takes list of constructors as input arguments
 haftmann parents: 
27067diff
changeset | 1907 | unit_induct ~> unit.induct | 
| 
791607529f6d
rep_datatype command now takes list of constructors as input arguments
 haftmann parents: 
27067diff
changeset | 1908 | prod_induct ~> prod.induct | 
| 
791607529f6d
rep_datatype command now takes list of constructors as input arguments
 haftmann parents: 
27067diff
changeset | 1909 | sum_induct ~> sum.induct | 
| 
791607529f6d
rep_datatype command now takes list of constructors as input arguments
 haftmann parents: 
27067diff
changeset | 1910 | Suc_Suc_eq ~> nat.inject | 
| 
791607529f6d
rep_datatype command now takes list of constructors as input arguments
 haftmann parents: 
27067diff
changeset | 1911 | Suc_not_Zero Zero_not_Suc ~> nat.distinct | 
| 
791607529f6d
rep_datatype command now takes list of constructors as input arguments
 haftmann parents: 
27067diff
changeset | 1912 | |
| 
791607529f6d
rep_datatype command now takes list of constructors as input arguments
 haftmann parents: 
27067diff
changeset | 1913 | |
| 27696 | 1914 | *** HOL-Algebra *** | 
| 1915 | ||
| 27713 
95b36bfe7fc4
New locales for orders and lattices where the equivalence relation is not restricted to equality.
 ballarin parents: 
27704diff
changeset | 1916 | * New locales for orders and lattices where the equivalence relation | 
| 30106 | 1917 | is not restricted to equality. INCOMPATIBILITY: all order and lattice | 
| 1918 | locales use a record structure with field eq for the equivalence. | |
| 27713 
95b36bfe7fc4
New locales for orders and lattices where the equivalence relation is not restricted to equality.
 ballarin parents: 
27704diff
changeset | 1919 | |
| 
95b36bfe7fc4
New locales for orders and lattices where the equivalence relation is not restricted to equality.
 ballarin parents: 
27704diff
changeset | 1920 | * New theory of factorial domains. | 
| 
95b36bfe7fc4
New locales for orders and lattices where the equivalence relation is not restricted to equality.
 ballarin parents: 
27704diff
changeset | 1921 | |
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1922 | * Units_l_inv and Units_r_inv are now simp rules by default. | 
| 27696 | 1923 | INCOMPATIBILITY. Simplifier proof that require deletion of l_inv | 
| 1924 | and/or r_inv will now also require deletion of these lemmas. | |
| 1925 | ||
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1926 | * Renamed the following theorems, INCOMPATIBILITY: | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1927 | |
| 27696 | 1928 | UpperD ~> Upper_memD | 
| 1929 | LowerD ~> Lower_memD | |
| 1930 | least_carrier ~> least_closed | |
| 1931 | greatest_carrier ~> greatest_closed | |
| 1932 | greatest_Lower_above ~> greatest_Lower_below | |
| 27717 
21bbd410ba04
Generalised polynomial lemmas from cring to ring.
 ballarin parents: 
27713diff
changeset | 1933 | one_zero ~> carrier_one_zero | 
| 
21bbd410ba04
Generalised polynomial lemmas from cring to ring.
 ballarin parents: 
27713diff
changeset | 1934 | one_not_zero ~> carrier_one_not_zero (collision with assumption) | 
| 27696 | 1935 | |
| 27793 | 1936 | |
| 30849 | 1937 | *** HOL-Nominal *** | 
| 1938 | ||
| 30855 | 1939 | * Nominal datatypes can now contain type-variables. | 
| 1940 | ||
| 1941 | * Commands 'nominal_inductive' and 'equivariance' work with local | |
| 1942 | theory targets. | |
| 1943 | ||
| 1944 | * Nominal primrec can now works with local theory targets and its | |
| 1945 | specification syntax now conforms to the general format as seen in | |
| 1946 | 'inductive' etc. | |
| 1947 | ||
| 1948 | * Method "perm_simp" honours the standard simplifier attributes | |
| 1949 | (no_asm), (no_asm_use) etc. | |
| 1950 | ||
| 1951 | * The new predicate #* is defined like freshness, except that on the | |
| 1952 | left hand side can be a set or list of atoms. | |
| 1953 | ||
| 1954 | * Experimental command 'nominal_inductive2' derives strong induction | |
| 1955 | principles for inductive definitions. In contrast to | |
| 1956 | 'nominal_inductive', which can only deal with a fixed number of | |
| 1957 | binders, it can deal with arbitrary expressions standing for sets of | |
| 1958 | atoms to be avoided. The only inductive definition we have at the | |
| 1959 | moment that needs this generalisation is the typing rule for Lets in | |
| 1960 | the algorithm W: | |
| 1961 | ||
| 1962 | Gamma |- t1 : T1 (x,close Gamma T1)::Gamma |- t2 : T2 x#Gamma | |
| 1963 | ----------------------------------------------------------------- | |
| 1964 | Gamma |- Let x be t1 in t2 : T2 | |
| 1965 | ||
| 1966 | In this rule one wants to avoid all the binders that are introduced by | |
| 1967 | "close Gamma T1". We are looking for other examples where this | |
| 1968 | feature might be useful. Please let us know. | |
| 30849 | 1969 | |
| 1970 | ||
| 30176 
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
 huffman parents: 
30163diff
changeset | 1971 | *** HOLCF *** | 
| 
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
 huffman parents: 
30163diff
changeset | 1972 | |
| 
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
 huffman parents: 
30163diff
changeset | 1973 | * Reimplemented the simplification procedure for proving continuity | 
| 
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
 huffman parents: 
30163diff
changeset | 1974 | subgoals. The new simproc is extensible; users can declare additional | 
| 
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
 huffman parents: 
30163diff
changeset | 1975 | continuity introduction rules with the attribute [cont2cont]. | 
| 
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
 huffman parents: 
30163diff
changeset | 1976 | |
| 
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
 huffman parents: 
30163diff
changeset | 1977 | * The continuity simproc now uses a different introduction rule for | 
| 
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
 huffman parents: 
30163diff
changeset | 1978 | solving continuity subgoals on terms with lambda abstractions. In | 
| 
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
 huffman parents: 
30163diff
changeset | 1979 | some rare cases the new simproc may fail to solve subgoals that the | 
| 
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
 huffman parents: 
30163diff
changeset | 1980 | old one could solve, and "simp add: cont2cont_LAM" may be necessary. | 
| 
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
 huffman parents: 
30163diff
changeset | 1981 | Potential INCOMPATIBILITY. | 
| 
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
 huffman parents: 
30163diff
changeset | 1982 | |
| 30847 | 1983 | * Command 'fixrec': specification syntax now conforms to the general | 
| 30855 | 1984 | format as seen in 'inductive' etc. See src/HOLCF/ex/Fixrec_ex.thy for | 
| 1985 | examples. INCOMPATIBILITY. | |
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1986 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1987 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1988 | *** ZF *** | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1989 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1990 | * Proof of Zorn's Lemma for partial orders. | 
| 30176 
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
 huffman parents: 
30163diff
changeset | 1991 | |
| 
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
 huffman parents: 
30163diff
changeset | 1992 | |
| 27246 
df85326af57c
* Rules and tactics that read instantiations now demand a proper context;
 wenzelm parents: 
27200diff
changeset | 1993 | *** ML *** | 
| 28088 
723735f2d73a
* Name bindings in higher specification mechanisms;
 wenzelm parents: 
28085diff
changeset | 1994 | |
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1995 | * Multithreading for Poly/ML 5.1/5.2 is no longer supported, only for | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1996 | Poly/ML 5.2.1 or later. Important note: the TimeLimit facility | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1997 | depends on multithreading, so timouts will not work before Poly/ML | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1998 | 5.2.1! | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 1999 | |
| 29161 
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
 wenzelm parents: 
29145diff
changeset | 2000 | * High-level support for concurrent ML programming, see | 
| 
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
 wenzelm parents: 
29145diff
changeset | 2001 | src/Pure/Cuncurrent. The data-oriented model of "future values" is | 
| 
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
 wenzelm parents: 
29145diff
changeset | 2002 | particularly convenient to organize independent functional | 
| 
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
 wenzelm parents: 
29145diff
changeset | 2003 | computations. The concept of "synchronized variables" provides a | 
| 
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
 wenzelm parents: 
29145diff
changeset | 2004 | higher-order interface for components with shared state, avoiding the | 
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2005 | delicate details of mutexes and condition variables. (Requires | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2006 | Poly/ML 5.2.1 or later.) | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2007 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2008 | * ML bindings produced via Isar commands are stored within the Isar | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2009 | context (theory or proof). Consequently, commands like 'use' and 'ML' | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2010 | become thread-safe and work with undo as expected (concerning | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2011 | top-level bindings, not side-effects on global references). | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2012 | INCOMPATIBILITY, need to provide proper Isar context when invoking the | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2013 | compiler at runtime; really global bindings need to be given outside a | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2014 | theory. (Requires Poly/ML 5.2 or later.) | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2015 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2016 | * Command 'ML_prf' is analogous to 'ML' but works within a proof | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2017 | context. Top-level ML bindings are stored within the proof context in | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2018 | a purely sequential fashion, disregarding the nested proof structure. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2019 | ML bindings introduced by 'ML_prf' are discarded at the end of the | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2020 | proof. (Requires Poly/ML 5.2 or later.) | 
| 29161 
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
 wenzelm parents: 
29145diff
changeset | 2021 | |
| 30530 | 2022 | * Simplified ML attribute and method setup, cf. functions Attrib.setup | 
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2023 | and Method.setup, as well as Isar commands 'attribute_setup' and | 
| 30547 | 2024 | 'method_setup'. INCOMPATIBILITY for 'method_setup', need to simplify | 
| 2025 | existing code accordingly, or use plain 'setup' together with old | |
| 2026 | Method.add_method. | |
| 30530 | 2027 | |
| 28294 | 2028 | * Simplified ML oracle interface Thm.add_oracle promotes 'a -> cterm | 
| 2029 | to 'a -> thm, while results are always tagged with an authentic oracle | |
| 2030 | name. The Isar command 'oracle' is now polymorphic, no argument type | |
| 2031 | is specified. INCOMPATIBILITY, need to simplify existing oracle code | |
| 2032 | accordingly. Note that extra performance may be gained by producing | |
| 2033 | the cterm carefully, avoiding slow Thm.cterm_of. | |
| 2034 | ||
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2035 | * Simplified interface for defining document antiquotations via | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2036 | ThyOutput.antiquotation, ThyOutput.output, and optionally | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2037 | ThyOutput.maybe_pretty_source. INCOMPATIBILITY, need to simplify user | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2038 | antiquotations accordingly, see src/Pure/Thy/thy_output.ML for common | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2039 | examples. | 
| 28099 
fb16a07d6580
* Generic Toplevel.add_hook interface allows to analyze the result of
 wenzelm parents: 
28089diff
changeset | 2040 | |
| 30395 
f3103bd2b167
* More systematic treatment of long names, abstract name bindings, and name space operations.
 wenzelm parents: 
30326diff
changeset | 2041 | * More systematic treatment of long names, abstract name bindings, and | 
| 
f3103bd2b167
* More systematic treatment of long names, abstract name bindings, and name space operations.
 wenzelm parents: 
30326diff
changeset | 2042 | name space operations. Basic operations on qualified names have been | 
| 30399 | 2043 | move from structure NameSpace to Long_Name, e.g. Long_Name.base_name, | 
| 30395 
f3103bd2b167
* More systematic treatment of long names, abstract name bindings, and name space operations.
 wenzelm parents: 
30326diff
changeset | 2044 | Long_Name.append. Old type bstring has been mostly replaced by | 
| 
f3103bd2b167
* More systematic treatment of long names, abstract name bindings, and name space operations.
 wenzelm parents: 
30326diff
changeset | 2045 | abstract type binding (see structure Binding), which supports precise | 
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2046 | qualification by packages and local theory targets, as well as proper | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2047 | tracking of source positions. INCOMPATIBILITY, need to wrap old | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2048 | bstring values into Binding.name, or better pass through abstract | 
| 30399 | 2049 | bindings everywhere. See further src/Pure/General/long_name.ML, | 
| 30395 
f3103bd2b167
* More systematic treatment of long names, abstract name bindings, and name space operations.
 wenzelm parents: 
30326diff
changeset | 2050 | src/Pure/General/binding.ML and src/Pure/General/name_space.ML | 
| 
f3103bd2b167
* More systematic treatment of long names, abstract name bindings, and name space operations.
 wenzelm parents: 
30326diff
changeset | 2051 | |
| 28089 
66ae1926482a
* Result facts now refer to the *full* internal name;
 wenzelm parents: 
28088diff
changeset | 2052 | * Result facts (from PureThy.note_thms, ProofContext.note_thms, | 
| 
66ae1926482a
* Result facts now refer to the *full* internal name;
 wenzelm parents: 
28088diff
changeset | 2053 | LocalTheory.note etc.) now refer to the *full* internal name, not the | 
| 
66ae1926482a
* Result facts now refer to the *full* internal name;
 wenzelm parents: 
28088diff
changeset | 2054 | bstring as before. INCOMPATIBILITY, not detected by ML type-checking! | 
| 
66ae1926482a
* Result facts now refer to the *full* internal name;
 wenzelm parents: 
28088diff
changeset | 2055 | |
| 27287 | 2056 | * Disposed old type and term read functions (Sign.read_def_typ, | 
| 2057 | Sign.read_typ, Sign.read_def_terms, Sign.read_term, | |
| 2058 | Thm.read_def_cterms, Thm.read_cterm etc.). INCOMPATIBILITY, should | |
| 2059 | use regular Syntax.read_typ, Syntax.read_term, Syntax.read_typ_global, | |
| 27269 | 2060 | Syntax.read_term_global etc.; see also OldGoals.read_term as last | 
| 2061 | resort for legacy applications. | |
| 2062 | ||
| 30609 
983e8b6e4e69
Disposed old declarations, tactics, tactic combinators that refer to the simpset or claset of an implicit theory;
 wenzelm parents: 
30577diff
changeset | 2063 | * Disposed old declarations, tactics, tactic combinators that refer to | 
| 
983e8b6e4e69
Disposed old declarations, tactics, tactic combinators that refer to the simpset or claset of an implicit theory;
 wenzelm parents: 
30577diff
changeset | 2064 | the simpset or claset of an implicit theory (such as Addsimps, | 
| 
983e8b6e4e69
Disposed old declarations, tactics, tactic combinators that refer to the simpset or claset of an implicit theory;
 wenzelm parents: 
30577diff
changeset | 2065 | Simp_tac, SIMPSET).  INCOMPATIBILITY, should use @{simpset} etc. in
 | 
| 
983e8b6e4e69
Disposed old declarations, tactics, tactic combinators that refer to the simpset or claset of an implicit theory;
 wenzelm parents: 
30577diff
changeset | 2066 | embedded ML text, or local_simpset_of with a proper context passed as | 
| 
983e8b6e4e69
Disposed old declarations, tactics, tactic combinators that refer to the simpset or claset of an implicit theory;
 wenzelm parents: 
30577diff
changeset | 2067 | explicit runtime argument. | 
| 
983e8b6e4e69
Disposed old declarations, tactics, tactic combinators that refer to the simpset or claset of an implicit theory;
 wenzelm parents: 
30577diff
changeset | 2068 | |
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2069 | * Rules and tactics that read instantiations (read_instantiate, | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2070 | res_inst_tac, thin_tac, subgoal_tac etc.) now demand a proper proof | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2071 | context, which is required for parsing and type-checking. Moreover, | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2072 | the variables are specified as plain indexnames, not string encodings | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2073 | thereof. INCOMPATIBILITY. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2074 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2075 | * Generic Toplevel.add_hook interface allows to analyze the result of | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2076 | transactions. E.g. see src/Pure/ProofGeneral/proof_general_pgip.ML | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2077 | for theorem dependency output of transactions resulting in a new | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2078 | theory state. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2079 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2080 | * ML antiquotations: block-structured compilation context indicated by | 
| 27391 | 2081 | \<lbrace> ... \<rbrace>; additional antiquotation forms: | 
| 2082 | ||
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2083 |   @{binding name}                         - basic name binding
 | 
| 27519 
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
 wenzelm parents: 
27485diff
changeset | 2084 |   @{let ?pat = term}                      - term abbreviation (HO matching)
 | 
| 
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
 wenzelm parents: 
27485diff
changeset | 2085 |   @{note name = fact}                     - fact abbreviation
 | 
| 
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
 wenzelm parents: 
27485diff
changeset | 2086 |   @{thm fact}                             - singleton fact (with attributes)
 | 
| 
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
 wenzelm parents: 
27485diff
changeset | 2087 |   @{thms fact}                            - general fact (with attributes)
 | 
| 
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
 wenzelm parents: 
27485diff
changeset | 2088 |   @{lemma prop by method}                 - singleton goal
 | 
| 
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
 wenzelm parents: 
27485diff
changeset | 2089 |   @{lemma prop by meth1 meth2}            - singleton goal
 | 
| 
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
 wenzelm parents: 
27485diff
changeset | 2090 |   @{lemma prop1 ... propN by method}      - general goal
 | 
| 
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
 wenzelm parents: 
27485diff
changeset | 2091 |   @{lemma prop1 ... propN by meth1 meth2} - general goal
 | 
| 
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
 wenzelm parents: 
27485diff
changeset | 2092 |   @{lemma (open) ...}                     - open derivation
 | 
| 27380 | 2093 | |
| 27246 
df85326af57c
* Rules and tactics that read instantiations now demand a proper context;
 wenzelm parents: 
27200diff
changeset | 2094 | |
| 27979 | 2095 | *** System *** | 
| 2096 | ||
| 28248 | 2097 | * The Isabelle "emacs" tool provides a specific interface to invoke | 
| 2098 | Proof General / Emacs, with more explicit failure if that is not | |
| 2099 | installed (the old isabelle-interface script silently falls back on | |
| 2100 | isabelle-process). The PROOFGENERAL_HOME setting determines the | |
| 2101 | installation location of the Proof General distribution. | |
| 2102 | ||
| 27979 | 2103 | * Isabelle/lib/classes/Pure.jar provides basic support to integrate | 
| 2104 | the Isabelle process into a JVM/Scala application. See | |
| 2105 | Isabelle/lib/jedit/plugin for a minimal example. (The obsolete Java | |
| 2106 | process wrapper has been discontinued.) | |
| 2107 | ||
| 30845 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2108 | * Added homegrown Isabelle font with unicode layout, see lib/fonts. | 
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2109 | |
| 
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
 wenzelm parents: 
30741diff
changeset | 2110 | * Various status messages (with exact source position information) are | 
| 27979 | 2111 | emitted, if proper markup print mode is enabled. This allows | 
| 2112 | user-interface components to provide detailed feedback on internal | |
| 2113 | prover operations. | |
| 2114 | ||
| 2115 | ||
| 27143 | 2116 | |
| 27008 | 2117 | New in Isabelle2008 (June 2008) | 
| 2118 | ------------------------------- | |
| 25464 
0ca80ce89001
moved new NEWS from Isabelle2007 to this Isabelle version'';
 wenzelm parents: 
25459diff
changeset | 2119 | |
| 25522 | 2120 | *** General *** | 
| 2121 | ||
| 27061 | 2122 | * The Isabelle/Isar Reference Manual (isar-ref) has been reorganized | 
| 2123 | and updated, with formally checked references as hyperlinks. | |
| 2124 | ||
| 25994 | 2125 | * Theory loader: use_thy (and similar operations) no longer set the | 
| 2126 | implicit ML context, which was occasionally hard to predict and in | |
| 2127 | conflict with concurrency. INCOMPATIBILITY, use ML within Isar which | |
| 2128 | provides a proper context already. | |
| 2129 | ||
| 26323 
73efc70edeef
theory loader: discontinued *attached* ML scripts;
 wenzelm parents: 
26315diff
changeset | 2130 | * Theory loader: old-style ML proof scripts being *attached* to a thy | 
| 
73efc70edeef
theory loader: discontinued *attached* ML scripts;
 wenzelm parents: 
26315diff
changeset | 2131 | file are no longer supported. INCOMPATIBILITY, regular 'uses' and | 
| 
73efc70edeef
theory loader: discontinued *attached* ML scripts;
 wenzelm parents: 
26315diff
changeset | 2132 | 'use' within a theory file will do the job. | 
| 
73efc70edeef
theory loader: discontinued *attached* ML scripts;
 wenzelm parents: 
26315diff
changeset | 2133 | |
| 26650 | 2134 | * Name space merge now observes canonical order, i.e. the second space | 
| 2135 | is inserted into the first one, while existing entries in the first | |
| 26659 | 2136 | space take precedence. INCOMPATIBILITY in rare situations, may try to | 
| 26650 | 2137 | swap theory imports. | 
| 2138 | ||
| 27067 | 2139 | * Syntax: symbol \<chi> is now considered a letter. Potential | 
| 2140 | INCOMPATIBILITY in identifier syntax etc. | |
| 2141 | ||
| 2142 | * Outer syntax: string tokens no longer admit escaped white space, | |
| 2143 | which was an accidental (undocumented) feature. INCOMPATIBILITY, use | |
| 2144 | white space without escapes. | |
| 2145 | ||
| 2146 | * Outer syntax: string tokens may contain arbitrary character codes | |
| 2147 | specified via 3 decimal digits (as in SML). E.g. "foo\095bar" for | |
| 2148 | "foo_bar". | |
| 2149 | ||
| 25522 | 2150 | |
| 25502 | 2151 | *** Pure *** | 
| 2152 | ||
| 26718 | 2153 | * Context-dependent token translations. Default setup reverts locally | 
| 2154 | fixed variables, and adds hilite markup for undeclared frees. | |
| 2155 | ||
| 26681 | 2156 | * Unused theorems can be found using the new command 'unused_thms'. | 
| 2157 | There are three ways of invoking it: | |
| 2158 | ||
| 2159 | (1) unused_thms | |
| 2160 | Only finds unused theorems in the current theory. | |
| 2161 | ||
| 2162 | (2) unused_thms thy_1 ... thy_n - | |
| 2163 | Finds unused theorems in the current theory and all of its ancestors, | |
| 2164 | excluding the theories thy_1 ... thy_n and all of their ancestors. | |
| 2165 | ||
| 2166 | (3) unused_thms thy_1 ... thy_n - thy'_1 ... thy'_m | |
| 2167 | Finds unused theorems in the theories thy'_1 ... thy'_m and all of | |
| 2168 | their ancestors, excluding the theories thy_1 ... thy_n and all of | |
| 2169 | their ancestors. | |
| 2170 | ||
| 26718 | 2171 | In order to increase the readability of the list produced by | 
| 2172 | unused_thms, theorems that have been created by a particular instance | |
| 26874 | 2173 | of a theory command such as 'inductive' or 'function' are considered | 
| 2174 | to belong to the same "group", meaning that if at least one theorem in | |
| 26718 | 2175 | this group is used, the other theorems in the same group are no longer | 
| 2176 | reported as unused. Moreover, if all theorems in the group are | |
| 2177 | unused, only one theorem in the group is displayed. | |
| 2178 | ||
| 2179 | Note that proof objects have to be switched on in order for | |
| 2180 | unused_thms to work properly (i.e. !proofs must be >= 1, which is | |
| 26874 | 2181 | usually the case when using Proof General with the default settings). | 
| 26681 | 2182 | |
| 26650 | 2183 | * Authentic naming of facts disallows ad-hoc overwriting of previous | 
| 2184 | theorems within the same name space. INCOMPATIBILITY, need to remove | |
| 2185 | duplicate fact bindings, or even accidental fact duplications. Note | |
| 2186 | that tools may maintain dynamically scoped facts systematically, using | |
| 2187 | PureThy.add_thms_dynamic. | |
| 2188 | ||
| 26660 | 2189 | * Command 'hide' now allows to hide from "fact" name space as well. | 
| 2190 | ||
| 26496 
49ae9456eba9
purely functional setup of claset/simpset/clasimpset;
 wenzelm parents: 
26495diff
changeset | 2191 | * Eliminated destructive theorem database, simpset, claset, and | 
| 
49ae9456eba9
purely functional setup of claset/simpset/clasimpset;
 wenzelm parents: 
26495diff
changeset | 2192 | clasimpset. Potential INCOMPATIBILITY, really need to observe linear | 
| 
49ae9456eba9
purely functional setup of claset/simpset/clasimpset;
 wenzelm parents: 
26495diff
changeset | 2193 | update of theories within ML code. | 
| 26479 | 2194 | |
| 26955 
ebbaa935eae0
* Eliminated theory ProtoPure and CPure, leaving just one Pure theory.
 wenzelm parents: 
26925diff
changeset | 2195 | * Eliminated theory ProtoPure and CPure, leaving just one Pure theory. | 
| 
ebbaa935eae0
* Eliminated theory ProtoPure and CPure, leaving just one Pure theory.
 wenzelm parents: 
26925diff
changeset | 2196 | INCOMPATIBILITY, object-logics depending on former Pure require | 
| 
ebbaa935eae0
* Eliminated theory ProtoPure and CPure, leaving just one Pure theory.
 wenzelm parents: 
26925diff
changeset | 2197 | additional setup PureThy.old_appl_syntax_setup; object-logics | 
| 
ebbaa935eae0
* Eliminated theory ProtoPure and CPure, leaving just one Pure theory.
 wenzelm parents: 
26925diff
changeset | 2198 | depending on former CPure need to refer to Pure. | 
| 26650 | 2199 | |
| 26495 | 2200 | * Commands 'use' and 'ML' are now purely functional, operating on | 
| 26479 | 2201 | theory/local_theory. Removed former 'ML_setup' (on theory), use 'ML' | 
| 2202 | instead. Added 'ML_val' as mere diagnostic replacement for 'ML'. | |
| 2203 | INCOMPATIBILITY. | |
| 2204 | ||
| 26874 | 2205 | * Command 'setup': discontinued implicit version with ML reference. | 
| 26434 | 2206 | |
| 25970 
9053fd546501
* Default settings: PROOFGENERAL_OPTIONS no longer impose xemacs here;
 wenzelm parents: 
25961diff
changeset | 2207 | * Instantiation target allows for simultaneous specification of class | 
| 
9053fd546501
* Default settings: PROOFGENERAL_OPTIONS no longer impose xemacs here;
 wenzelm parents: 
25961diff
changeset | 2208 | instance operations together with an instantiation proof. | 
| 
9053fd546501
* Default settings: PROOFGENERAL_OPTIONS no longer impose xemacs here;
 wenzelm parents: 
25961diff
changeset | 2209 | Type-checking phase allows to refer to class operations uniformly. | 
| 27067 | 2210 | See src/HOL/Complex/Complex.thy for an Isar example and | 
| 2211 | src/HOL/Library/Eval.thy for an ML example. | |
| 25502 | 2212 | |
| 26201 
d3363a854708
indexing literal facts: exclude background context;
 wenzelm parents: 
26197diff
changeset | 2213 | * Indexing of literal facts: be more serious about including only | 
| 
d3363a854708
indexing literal facts: exclude background context;
 wenzelm parents: 
26197diff
changeset | 2214 | facts from the visible specification/proof context, but not the | 
| 
d3363a854708
indexing literal facts: exclude background context;
 wenzelm parents: 
26197diff
changeset | 2215 | background context (locale etc.). Affects `prop` notation and method | 
| 
d3363a854708
indexing literal facts: exclude background context;
 wenzelm parents: 
26197diff
changeset | 2216 | "fact". INCOMPATIBILITY: need to name facts explicitly in rare | 
| 
d3363a854708
indexing literal facts: exclude background context;
 wenzelm parents: 
26197diff
changeset | 2217 | situations. | 
| 
d3363a854708
indexing literal facts: exclude background context;
 wenzelm parents: 
26197diff
changeset | 2218 | |
| 26925 
ce964f0df281
* Method "cases", "induct", "coinduct": removed obsolete "(open)" option;
 wenzelm parents: 
26920diff
changeset | 2219 | * Method "cases", "induct", "coinduct": removed obsolete/undocumented | 
| 
ce964f0df281
* Method "cases", "induct", "coinduct": removed obsolete "(open)" option;
 wenzelm parents: 
26920diff
changeset | 2220 | "(open)" option, which used to expose internal bound variables to the | 
| 
ce964f0df281
* Method "cases", "induct", "coinduct": removed obsolete "(open)" option;
 wenzelm parents: 
26920diff
changeset | 2221 | proof text. | 
| 
ce964f0df281
* Method "cases", "induct", "coinduct": removed obsolete "(open)" option;
 wenzelm parents: 
26920diff
changeset | 2222 | |
| 
ce964f0df281
* Method "cases", "induct", "coinduct": removed obsolete "(open)" option;
 wenzelm parents: 
26920diff
changeset | 2223 | * Isar statements: removed obsolete case "rule_context". | 
| 
ce964f0df281
* Method "cases", "induct", "coinduct": removed obsolete "(open)" option;
 wenzelm parents: 
26920diff
changeset | 2224 | INCOMPATIBILITY, better use explicit fixes/assumes. | 
| 
ce964f0df281
* Method "cases", "induct", "coinduct": removed obsolete "(open)" option;
 wenzelm parents: 
26920diff
changeset | 2225 | |
| 26874 | 2226 | * Locale proofs: default proof step now includes 'unfold_locales'; | 
| 2227 | hence 'proof' without argument may be used to unfold locale | |
| 2228 | predicates. | |
| 26765 | 2229 | |
| 2230 | ||
| 26762 | 2231 | *** Document preparation *** | 
| 2232 | ||
| 26914 | 2233 | * Simplified pdfsetup.sty: color/hyperref is used unconditionally for | 
| 2234 | both pdf and dvi (hyperlinks usually work in xdvi as well); removed | |
| 2235 | obsolete thumbpdf setup (contemporary PDF viewers do this on the | |
| 2236 | spot); renamed link color from "darkblue" to "linkcolor" (default | |
| 26920 | 2237 | value unchanged, can be redefined via \definecolor); no longer sets | 
| 2238 | "a4paper" option (unnecessary or even intrusive). | |
| 26914 | 2239 | |
| 27008 | 2240 | * Antiquotation @{lemma A method} proves proposition A by the given
 | 
| 2241 | method (either a method name or a method name plus (optional) method | |
| 2242 | arguments in parentheses) and prints A just like @{prop A}.
 | |
| 26762 | 2243 | |
| 2244 | ||
| 25464 
0ca80ce89001
moved new NEWS from Isabelle2007 to this Isabelle version'';
 wenzelm parents: 
25459diff
changeset | 2245 | *** HOL *** | 
| 
0ca80ce89001
moved new NEWS from Isabelle2007 to this Isabelle version'';
 wenzelm parents: 
25459diff
changeset | 2246 | |
| 27067 | 2247 | * New primrec package. Specification syntax conforms in style to | 
| 2248 | definition/function/.... No separate induction rule is provided. The | |
| 2249 | "primrec" command distinguishes old-style and new-style specifications | |
| 2250 | by syntax. The former primrec package is now named OldPrimrecPackage. | |
| 2251 | When adjusting theories, beware: constants stemming from new-style | |
| 2252 | primrec specifications have authentic syntax. | |
| 2253 | ||
| 2254 | * Metis prover is now an order of magnitude faster, and also works | |
| 2255 | with multithreading. | |
| 2256 | ||
| 2257 | * Metis: the maximum number of clauses that can be produced from a | |
| 2258 | theorem is now given by the attribute max_clauses. Theorems that | |
| 2259 | exceed this number are ignored, with a warning printed. | |
| 2260 | ||
| 2261 | * Sledgehammer no longer produces structured proofs by default. To | |
| 2262 | enable, declare [[sledgehammer_full = true]]. Attributes | |
| 2263 | reconstruction_modulus, reconstruction_sorts renamed | |
| 2264 | sledgehammer_modulus, sledgehammer_sorts. INCOMPATIBILITY. | |
| 2265 | ||
| 27104 
791607529f6d
rep_datatype command now takes list of constructors as input arguments
 haftmann parents: 
27067diff
changeset | 2266 | * Method "induct_scheme" derives user-specified induction rules | 
| 27067 | 2267 | from well-founded induction and completeness of patterns. This factors | 
| 2268 | out some operations that are done internally by the function package | |
| 2269 | and makes them available separately. See | |
| 2270 | src/HOL/ex/Induction_Scheme.thy for examples. | |
| 2271 | ||
| 2272 | * More flexible generation of measure functions for termination | |
| 2273 | proofs: Measure functions can be declared by proving a rule of the | |
| 2274 | form "is_measure f" and giving it the [measure_function] attribute. | |
| 2275 | The "is_measure" predicate is logically meaningless (always true), and | |
| 2276 | just guides the heuristic. To find suitable measure functions, the | |
| 2277 | termination prover sets up the goal "is_measure ?f" of the appropriate | |
| 2278 | type and generates all solutions by prolog-style backwards proof using | |
| 2279 | the declared rules. | |
| 2280 | ||
| 2281 | This setup also deals with rules like | |
| 2282 | ||
| 2283 | "is_measure f ==> is_measure (list_size f)" | |
| 2284 | ||
| 2285 | which accommodates nested datatypes that recurse through lists. | |
| 2286 | Similar rules are predeclared for products and option types. | |
| 2287 | ||
| 26964 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2288 | * Turned the type of sets "'a set" into an abbreviation for "'a => bool" | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2289 | |
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2290 | INCOMPATIBILITIES: | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2291 | |
| 27008 | 2292 | - Definitions of overloaded constants on sets have to be replaced by | 
| 2293 | definitions on => and bool. | |
| 26964 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2294 | |
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2295 | - Some definitions of overloaded operators on sets can now be proved | 
| 27008 | 2296 | using the definitions of the operators on => and bool. Therefore, | 
| 2297 | the following theorems have been renamed: | |
| 26964 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2298 | |
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2299 | subset_def -> subset_eq | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2300 | psubset_def -> psubset_eq | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2301 | set_diff_def -> set_diff_eq | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2302 | Compl_def -> Compl_eq | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2303 | Sup_set_def -> Sup_set_eq | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2304 | Inf_set_def -> Inf_set_eq | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2305 | sup_set_def -> sup_set_eq | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2306 | inf_set_def -> inf_set_eq | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2307 | |
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2308 | - Due to the incompleteness of the HO unification algorithm, some | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2309 | rules such as subst may require manual instantiation, if some of | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2310 | the unknowns in the rule is a set. | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2311 | |
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2312 | - Higher order unification and forward proofs: | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2313 | The proof pattern | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2314 | |
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2315 | have "P (S::'a set)" <...> | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2316 | then have "EX S. P S" .. | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2317 | |
| 27008 | 2318 | no longer works (due to the incompleteness of the HO unification | 
| 2319 | algorithm) and must be replaced by the pattern | |
| 26964 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2320 | |
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2321 | have "EX S. P S" | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2322 | proof | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2323 | show "P S" <...> | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2324 | qed | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2325 | |
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2326 | - Calculational reasoning with subst (or similar rules): | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2327 | The proof pattern | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2328 | |
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2329 | have "P (S::'a set)" <...> | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2330 | also have "S = T" <...> | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2331 | finally have "P T" . | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2332 | |
| 27008 | 2333 | no longer works (for similar reasons as the previous example) and | 
| 2334 | must be replaced by something like | |
| 26964 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2335 | |
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2336 | have "P (S::'a set)" <...> | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2337 | moreover have "S = T" <...> | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2338 | ultimately have "P T" by simp | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2339 | |
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2340 | - Tactics or packages written in ML code: | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2341 | Code performing pattern matching on types via | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2342 | |
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2343 |       Type ("set", [T]) => ...
 | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2344 | |
| 27008 | 2345 | must be rewritten. Moreover, functions like strip_type or | 
| 2346 | binder_types no longer return the right value when applied to a | |
| 2347 | type of the form | |
| 26964 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2348 | |
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2349 | T1 => ... => Tn => U => bool | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2350 | |
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2351 | rather than | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2352 | |
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2353 | T1 => ... => Tn => U set | 
| 
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
 berghofe parents: 
26955diff
changeset | 2354 | |
| 26874 | 2355 | * Merged theories Wellfounded_Recursion, Accessible_Part and | 
| 27067 | 2356 | Wellfounded_Relations to theory Wellfounded. | 
| 26748 
4d51ddd6aa5c
Merged theories about wellfoundedness into one: Wellfounded.thy
 krauss parents: 
26724diff
changeset | 2357 | |
| 26513 | 2358 | * Explicit class "eq" for executable equality. INCOMPATIBILITY. | 
| 2359 | ||
| 26874 | 2360 | * Class finite no longer treats UNIV as class parameter. Use class | 
| 2361 | enum from theory Library/Enum instead to achieve a similar effect. | |
| 26445 | 2362 | INCOMPATIBILITY. | 
| 2363 | ||
| 26874 | 2364 | * Theory List: rule list_induct2 now has explicitly named cases "Nil" | 
| 2365 | and "Cons". INCOMPATIBILITY. | |
| 2366 | ||
| 26422 
d5883907c514
HOL (and FOL): renamed variables in rules imp_elim and swap;
 wenzelm parents: 
26401diff
changeset | 2367 | * HOL (and FOL): renamed variables in rules imp_elim and swap. | 
| 
d5883907c514
HOL (and FOL): renamed variables in rules imp_elim and swap;
 wenzelm parents: 
26401diff
changeset | 2368 | Potential INCOMPATIBILITY. | 
| 
d5883907c514
HOL (and FOL): renamed variables in rules imp_elim and swap;
 wenzelm parents: 
26401diff
changeset | 2369 | |
| 26874 | 2370 | * Theory Product_Type: duplicated lemmas split_Pair_apply and | 
| 2371 | injective_fst_snd removed, use split_eta and prod_eqI instead. | |
| 2372 | Renamed upd_fst to apfst and upd_snd to apsnd. INCOMPATIBILITY. | |
| 26355 | 2373 | |
| 26335 
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
 wenzelm parents: 
26333diff
changeset | 2374 | * Theory Nat: removed redundant lemmas that merely duplicate lemmas of | 
| 
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
 wenzelm parents: 
26333diff
changeset | 2375 | the same name in theory Orderings: | 
| 
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
 wenzelm parents: 
26333diff
changeset | 2376 | |
| 
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
 wenzelm parents: 
26333diff
changeset | 2377 | less_trans | 
| 
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
 wenzelm parents: 
26333diff
changeset | 2378 | less_linear | 
| 
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
 wenzelm parents: 
26333diff
changeset | 2379 | le_imp_less_or_eq | 
| 
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
 wenzelm parents: 
26333diff
changeset | 2380 | le_less_trans | 
| 
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
 wenzelm parents: 
26333diff
changeset | 2381 | less_le_trans | 
| 
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
 wenzelm parents: 
26333diff
changeset | 2382 | less_not_sym | 
| 
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
 wenzelm parents: 
26333diff
changeset | 2383 | less_asym | 
| 
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
 wenzelm parents: 
26333diff
changeset | 2384 | |
| 
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
 wenzelm parents: 
26333diff
changeset | 2385 | Renamed less_imp_le to less_imp_le_nat, and less_irrefl to | 
| 
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
 wenzelm parents: 
26333diff
changeset | 2386 | less_irrefl_nat. Potential INCOMPATIBILITY due to more general types | 
| 
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
 wenzelm parents: 
26333diff
changeset | 2387 | and different variable names. | 
| 26315 
cb3badaa192e
removed redundant less_trans, less_linear, le_imp_less_or_eq, le_less_trans, less_le_trans (cf. Orderings.thy);
 wenzelm parents: 
26231diff
changeset | 2388 | |
| 26231 | 2389 | * Library/Option_ord.thy: Canonical order on option type. | 
| 2390 | ||
| 27008 | 2391 | * Library/RBT.thy: Red-black trees, an efficient implementation of | 
| 2392 | finite maps. | |
| 26197 | 2393 | |
| 26231 | 2394 | * Library/Countable.thy: Type class for countable types. | 
| 2395 | ||
| 26180 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2396 | * Theory Int: The representation of numerals has changed. The infix | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2397 | operator BIT and the bit datatype with constructors B0 and B1 have | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2398 | disappeared. INCOMPATIBILITY, use "Int.Bit0 x" and "Int.Bit1 y" in | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2399 | place of "x BIT bit.B0" and "y BIT bit.B1", respectively. Theorems | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2400 | involving BIT, B0, or B1 have been renamed with "Bit0" or "Bit1" | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2401 | accordingly. | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2402 | |
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2403 | * Theory Nat: definition of <= and < on natural numbers no longer | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2404 | depend on well-founded relations. INCOMPATIBILITY. Definitions | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2405 | le_def and less_def have disappeared. Consider lemmas not_less | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2406 | [symmetric, where ?'a = nat] and less_eq [symmetric] instead. | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2407 | |
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2408 | * Theory Finite_Set: locales ACf, ACe, ACIf, ACIfSL and ACIfSLlin | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2409 | (whose purpose mainly is for various fold_set functionals) have been | 
| 26874 | 2410 | abandoned in favor of the existing algebraic classes | 
| 26180 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2411 | ab_semigroup_mult, comm_monoid_mult, ab_semigroup_idem_mult, | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2412 | lower_semilattice (resp. upper_semilattice) and linorder. | 
| 26139 | 2413 | INCOMPATIBILITY. | 
| 26041 
c2e15e65165f
locales ACf, ACIf, ACIfSL and ACIfSLlin have been abandoned in favour of the existing algebraic classes ab_semigroup_mult, ab_semigroup_idem_mult, lower_semilattice (resp. uper_semilattice) and linorder
 haftmann parents: 
26013diff
changeset | 2414 | |
| 26180 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2415 | * Theory Transitive_Closure: induct and cases rules now declare proper | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2416 | case_names ("base" and "step").  INCOMPATIBILITY.
 | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2417 | |
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2418 | * Theorem Inductive.lfp_ordinal_induct generalized to complete | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2419 | lattices. The form set-specific version is available as | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2420 | Inductive.lfp_ordinal_induct_set. | 
| 26013 
8764a1f1253b
Theorem Inductive.lfp_ordinal_induct generalized to complete lattices
 haftmann parents: 
26006diff
changeset | 2421 | |
| 26874 | 2422 | * Renamed theorems "power.simps" to "power_int.simps". | 
| 27067 | 2423 | INCOMPATIBILITY. | 
| 25961 | 2424 | |
| 26180 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2425 | * Class semiring_div provides basic abstract properties of semirings | 
| 25942 | 2426 | with division and modulo operations. Subsumes former class dvd_mod. | 
| 2427 | ||
| 26180 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2428 | * Merged theories IntDef, Numeral and IntArith into unified theory | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2429 | Int. INCOMPATIBILITY. | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2430 | |
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2431 | * Theory Library/Code_Index: type "index" now represents natural | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2432 | numbers rather than integers. INCOMPATIBILITY. | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2433 | |
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2434 | * New class "uminus" with operation "uminus" (split of from class | 
| 
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
 wenzelm parents: 
26139diff
changeset | 2435 | "minus" which now only has operation "minus", binary). | 
| 25919 
8b1c0d434824
joined theories IntDef, Numeral, IntArith to theory Int
 haftmann parents: 
25900diff
changeset | 2436 | INCOMPATIBILITY. | 
| 
8b1c0d434824
joined theories IntDef, Numeral, IntArith to theory Int
 haftmann parents: 
25900diff
changeset | 2437 | |
| 25522 | 2438 | * Constants "card", "internal_split", "option_map" now with authentic | 
| 25919 
8b1c0d434824
joined theories IntDef, Numeral, IntArith to theory Int
 haftmann parents: 
25900diff
changeset | 2439 | syntax. INCOMPATIBILITY. | 
| 25522 | 2440 | |
| 2441 | * Definitions subset_def, psubset_def, set_diff_def, Compl_def, | |
| 2442 | le_bool_def, less_bool_def, le_fun_def, less_fun_def, inf_bool_def, | |
| 2443 | sup_bool_def, Inf_bool_def, Sup_bool_def, inf_fun_def, sup_fun_def, | |
| 2444 | Inf_fun_def, Sup_fun_def, inf_set_def, sup_set_def, Inf_set_def, | |
| 2445 | Sup_set_def, le_def, less_def, option_map_def now with object | |
| 25919 
8b1c0d434824
joined theories IntDef, Numeral, IntArith to theory Int
 haftmann parents: 
25900diff
changeset | 2446 | equality. INCOMPATIBILITY. | 
| 25464 
0ca80ce89001
moved new NEWS from Isabelle2007 to this Isabelle version'';
 wenzelm parents: 
25459diff
changeset | 2447 | |
| 25705 | 2448 | * Records. Removed K_record, and replaced it by pure lambda term | 
| 25726 
9728f319ffc6
* Metis prover an order of magnitude faster, works with multithreading.
 wenzelm parents: 
25712diff
changeset | 2449 | %x. c. The simplifier setup is now more robust against eta expansion. | 
| 25705 | 2450 | INCOMPATIBILITY: in cases explicitly referring to K_record. | 
| 25464 
0ca80ce89001
moved new NEWS from Isabelle2007 to this Isabelle version'';
 wenzelm parents: 
25459diff
changeset | 2451 | |
| 27067 | 2452 | * Library/Multiset: {#a, b, c#} abbreviates {#a#} + {#b#} + {#c#}.
 | 
| 2453 | ||
| 2454 | * Library/ListVector: new theory of arithmetic vector operations. | |
| 2455 | ||
| 2456 | * Library/Order_Relation: new theory of various orderings as sets of | |
| 2457 | pairs. Defines preorders, partial orders, linear orders and | |
| 2458 | well-orders on sets and on types. | |
| 26877 | 2459 | |
| 25726 
9728f319ffc6
* Metis prover an order of magnitude faster, works with multithreading.
 wenzelm parents: 
25712diff
changeset | 2460 | |
| 26197 | 2461 | *** ZF *** | 
| 2462 | ||
| 26874 | 2463 | * Renamed some theories to allow to loading both ZF and HOL in the | 
| 2464 | same session: | |
| 2465 | ||
| 2466 | Datatype -> Datatype_ZF | |
| 2467 | Inductive -> Inductive_ZF | |
| 2468 | Int -> Int_ZF | |
| 2469 | IntDiv -> IntDiv_ZF | |
| 2470 | Nat -> Nat_ZF | |
| 2471 | List -> List_ZF | |
| 2472 | Main -> Main_ZF | |
| 2473 | ||
| 2474 | INCOMPATIBILITY: ZF theories that import individual theories below | |
| 2475 | Main might need to be adapted. Regular theory Main is still | |
| 2476 | available, as trivial extension of Main_ZF. | |
| 26197 | 2477 | |
| 2478 | ||
| 25737 
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
 wenzelm parents: 
25726diff
changeset | 2479 | *** ML *** | 
| 
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
 wenzelm parents: 
25726diff
changeset | 2480 | |
| 27067 | 2481 | * ML within Isar: antiquotation @{const name} or @{const
 | 
| 2482 | name(typargs)} produces statically-checked Const term. | |
| 2483 | ||
| 26401 
e7a94081dce7
Functor NamedThmsFun: data is available to the user as dynamic fact;
 wenzelm parents: 
26387diff
changeset | 2484 | * Functor NamedThmsFun: data is available to the user as dynamic fact | 
| 26724 
ff6ff3a9010e
NamedThmsFun: removed obsolete print command -- facts are accesible via dynamic name;
 wenzelm parents: 
26718diff
changeset | 2485 | (of the same name). Removed obsolete print command. | 
| 26401 
e7a94081dce7
Functor NamedThmsFun: data is available to the user as dynamic fact;
 wenzelm parents: 
26387diff
changeset | 2486 | |
| 27067 | 2487 | * Removed obsolete "use_legacy_bindings" function. | 
| 26188 | 2488 | |
| 25737 
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
 wenzelm parents: 
25726diff
changeset | 2489 | * The ``print mode'' is now a thread-local value derived from a global | 
| 
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
 wenzelm parents: 
25726diff
changeset | 2490 | template (the former print_mode reference), thus access becomes | 
| 
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
 wenzelm parents: 
25726diff
changeset | 2491 | non-critical. The global print_mode reference is for session | 
| 
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
 wenzelm parents: 
25726diff
changeset | 2492 | management only; user-code should use print_mode_value, | 
| 
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
 wenzelm parents: 
25726diff
changeset | 2493 | print_mode_active, PrintMode.setmp etc. INCOMPATIBILITY. | 
| 
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
 wenzelm parents: 
25726diff
changeset | 2494 | |
| 26874 | 2495 | * Functions system/system_out provide a robust way to invoke external | 
| 29161 
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
 wenzelm parents: 
29145diff
changeset | 2496 | shell commands, with propagation of interrupts (requires Poly/ML | 
| 
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
 wenzelm parents: 
29145diff
changeset | 2497 | 5.2.1). Do not use OS.Process.system etc. from the basis library! | 
| 26222 
edf6473ac9e9
* system/system_out provides a robust way to invoke external shell
 wenzelm parents: 
26218diff
changeset | 2498 | |
| 25737 
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
 wenzelm parents: 
25726diff
changeset | 2499 | |
| 25626 
3000965b1fdf
* isatool tty runs Isabelle process with plain tty interaction;
 wenzelm parents: 
25609diff
changeset | 2500 | *** System *** | 
| 
3000965b1fdf
* isatool tty runs Isabelle process with plain tty interaction;
 wenzelm parents: 
25609diff
changeset | 2501 | |
| 25971 | 2502 | * Default settings: PROOFGENERAL_OPTIONS no longer impose xemacs --- | 
| 2503 | in accordance with Proof General 3.7, which prefers GNU emacs. | |
| 25970 
9053fd546501
* Default settings: PROOFGENERAL_OPTIONS no longer impose xemacs here;
 wenzelm parents: 
25961diff
changeset | 2504 | |
| 25626 
3000965b1fdf
* isatool tty runs Isabelle process with plain tty interaction;
 wenzelm parents: 
25609diff
changeset | 2505 | * isatool tty runs Isabelle process with plain tty interaction; | 
| 
3000965b1fdf
* isatool tty runs Isabelle process with plain tty interaction;
 wenzelm parents: 
25609diff
changeset | 2506 | optional line editor may be specified via ISABELLE_LINE_EDITOR | 
| 
3000965b1fdf
* isatool tty runs Isabelle process with plain tty interaction;
 wenzelm parents: 
25609diff
changeset | 2507 | setting, the default settings attempt to locate "ledit" and "rlwrap". | 
| 
3000965b1fdf
* isatool tty runs Isabelle process with plain tty interaction;
 wenzelm parents: 
25609diff
changeset | 2508 | |
| 25651 | 2509 | * isatool browser now works with Cygwin as well, using general | 
| 2510 | "javapath" function defined in Isabelle process environment. | |
| 2511 | ||
| 27067 | 2512 | * YXML notation provides a simple and efficient alternative to | 
| 2513 | standard XML transfer syntax. See src/Pure/General/yxml.ML and | |
| 2514 | isatool yxml as described in the Isabelle system manual. | |
| 25651 | 2515 | |
| 25652 | 2516 | * JVM class isabelle.IsabelleProcess (located in Isabelle/lib/classes) | 
| 25651 | 2517 | provides general wrapper for managing an Isabelle process in a robust | 
| 2518 | fashion, with ``cooked'' output from stdin/stderr. | |
| 2519 | ||
| 25855 | 2520 | * Rudimentary Isabelle plugin for jEdit (see Isabelle/lib/jedit), | 
| 2521 | based on Isabelle/JVM process wrapper (see Isabelle/lib/classes). | |
| 2522 | ||
| 27067 | 2523 | * Removed obsolete THIS_IS_ISABELLE_BUILD feature. NB: the documented | 
| 2524 | way of changing the user's settings is via | |
| 2525 | ISABELLE_HOME_USER/etc/settings, which is a fully featured bash | |
| 2526 | script. | |
| 2527 | ||
| 2528 | * Multithreading.max_threads := 0 refers to the number of actual CPU | |
| 2529 | cores of the underlying machine, which is a good starting point for | |
| 2530 | optimal performance tuning. The corresponding usedir option -M allows | |
| 2531 | "max" as an alias for "0". WARNING: does not work on certain versions | |
| 2532 | of Mac OS (with Poly/ML 5.1). | |
| 2533 | ||
| 2534 | * isabelle-process: non-ML sessions are run with "nice", to reduce the | |
| 2535 | adverse effect of Isabelle flooding interactive front-ends (notably | |
| 2536 | ProofGeneral / XEmacs). | |
| 2537 | ||
| 25626 
3000965b1fdf
* isatool tty runs Isabelle process with plain tty interaction;
 wenzelm parents: 
25609diff
changeset | 2538 | |
| 25464 
0ca80ce89001
moved new NEWS from Isabelle2007 to this Isabelle version'';
 wenzelm parents: 
25459diff
changeset | 2539 | |
| 25429 | 2540 | New in Isabelle2007 (November 2007) | 
| 2541 | ----------------------------------- | |
| 17754 
58a306d9f736
* Command 'find_theorems': support * wildcard in name: criterion.
 wenzelm parents: 
17725diff
changeset | 2542 | |
| 
58a306d9f736
* Command 'find_theorems': support * wildcard in name: criterion.
 wenzelm parents: 
17725diff
changeset | 2543 | *** General *** | 
| 
58a306d9f736
* Command 'find_theorems': support * wildcard in name: criterion.
 wenzelm parents: 
17725diff
changeset | 2544 | |
| 22826 | 2545 | * More uniform information about legacy features, notably a | 
| 2546 | warning/error of "Legacy feature: ...", depending on the state of the | |
| 23367 | 2547 | tolerate_legacy_features flag (default true). FUTURE INCOMPATIBILITY: | 
| 2548 | legacy features will disappear eventually. | |
| 22826 | 2549 | |
| 17918 
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
 wenzelm parents: 
17890diff
changeset | 2550 | * Theory syntax: the header format ``theory A = B + C:'' has been | 
| 
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
 wenzelm parents: 
17890diff
changeset | 2551 | discontinued in favour of ``theory A imports B C begin''. Use isatool | 
| 
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
 wenzelm parents: 
17890diff
changeset | 2552 | fixheaders to convert existing theory files. INCOMPATIBILITY. | 
| 
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
 wenzelm parents: 
17890diff
changeset | 2553 | |
| 
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
 wenzelm parents: 
17890diff
changeset | 2554 | * Theory syntax: the old non-Isar theory file format has been | 
| 
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
 wenzelm parents: 
17890diff
changeset | 2555 | discontinued altogether. Note that ML proof scripts may still be used | 
| 
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
 wenzelm parents: 
17890diff
changeset | 2556 | with Isar theories; migration is usually quite simple with the ML | 
| 
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
 wenzelm parents: 
17890diff
changeset | 2557 | function use_legacy_bindings. INCOMPATIBILITY. | 
| 
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
 wenzelm parents: 
17890diff
changeset | 2558 | |
| 22871 | 2559 | * Theory syntax: some popular names (e.g. 'class', 'declaration', | 
| 2560 | 'fun', 'help', 'if') are now keywords. INCOMPATIBILITY, use double | |
| 2561 | quotes. | |
| 19814 
faa698d46686
* Theory syntax: some popular names (e.g. "class", "if") are now keywords.
 wenzelm parents: 
19783diff
changeset | 2562 | |
| 23888 
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
 wenzelm parents: 
23881diff
changeset | 2563 | * Theory loader: be more serious about observing the static theory | 
| 
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
 wenzelm parents: 
23881diff
changeset | 2564 | header specifications (including optional directories), but not the | 
| 24172 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2565 | accidental file locations of previously successful loads. The strict | 
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2566 | update policy of former update_thy is now already performed by | 
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2567 | use_thy, so the former has been removed; use_thys updates several | 
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2568 | theories simultaneously, just as 'imports' within a theory header | 
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2569 | specification, but without merging the results. Potential | 
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2570 | INCOMPATIBILITY: may need to refine theory headers and commands | 
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2571 | ROOT.ML which depend on load order. | 
| 23888 
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
 wenzelm parents: 
23881diff
changeset | 2572 | |
| 
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
 wenzelm parents: 
23881diff
changeset | 2573 | * Theory loader: optional support for content-based file | 
| 
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
 wenzelm parents: 
23881diff
changeset | 2574 | identification, instead of the traditional scheme of full physical | 
| 23889 | 2575 | path plus date stamp; configured by the ISABELLE_FILE_IDENT setting | 
| 23888 
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
 wenzelm parents: 
23881diff
changeset | 2576 | (cf. the system manual). The new scheme allows to work with | 
| 
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
 wenzelm parents: 
23881diff
changeset | 2577 | non-finished theories in persistent session images, such that source | 
| 
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
 wenzelm parents: 
23881diff
changeset | 2578 | files may be moved later on without requiring reloads. | 
| 
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
 wenzelm parents: 
23881diff
changeset | 2579 | |
| 24187 
8bdf5ca5871f
* Theory loader: old-style ML proof scripts are considered a legacy feature;
 wenzelm parents: 
24172diff
changeset | 2580 | * Theory loader: old-style ML proof scripts being *attached* to a thy | 
| 
8bdf5ca5871f
* Theory loader: old-style ML proof scripts are considered a legacy feature;
 wenzelm parents: 
24172diff
changeset | 2581 | file (with the same base name as the theory) are considered a legacy | 
| 24800 | 2582 | feature, which will disappear eventually. Even now, the theory loader | 
| 2583 | no longer maintains dependencies on such files. | |
| 2584 | ||
| 2585 | * Syntax: the scope for resolving ambiguities via type-inference is | |
| 2586 | now limited to individual terms, instead of whole simultaneous | |
| 24234 
4714e04fb8e9
* Syntax: scope for resolving ambiguities via type-inference is now limited to individual terms;
 wenzelm parents: 
24213diff
changeset | 2587 | specifications as before. This greatly reduces the complexity of the | 
| 
4714e04fb8e9
* Syntax: scope for resolving ambiguities via type-inference is now limited to individual terms;
 wenzelm parents: 
24213diff
changeset | 2588 | syntax module and improves flexibility by separating parsing and | 
| 
4714e04fb8e9
* Syntax: scope for resolving ambiguities via type-inference is now limited to individual terms;
 wenzelm parents: 
24213diff
changeset | 2589 | type-checking. INCOMPATIBILITY: additional type-constraints (explicit | 
| 
4714e04fb8e9
* Syntax: scope for resolving ambiguities via type-inference is now limited to individual terms;
 wenzelm parents: 
24213diff
changeset | 2590 | 'fixes' etc.) are required in rare situations. | 
| 
4714e04fb8e9
* Syntax: scope for resolving ambiguities via type-inference is now limited to individual terms;
 wenzelm parents: 
24213diff
changeset | 2591 | |
| 25034 | 2592 | * Syntax: constants introduced by new-style packages ('definition',
 | 
| 2593 | 'abbreviation' etc.) are passed through the syntax module in | |
| 2594 | ``authentic mode''. This means that associated mixfix annotations | |
| 2595 | really stick to such constants, independently of potential name space | |
| 2596 | ambiguities introduced later on. INCOMPATIBILITY: constants in parse | |
| 2597 | trees are represented slightly differently, may need to adapt syntax | |
| 2598 | translations accordingly. Use CONST marker in 'translations' and | |
| 2599 | @{const_syntax} antiquotation in 'parse_translation' etc.
 | |
| 2600 | ||
| 17981 
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
 wenzelm parents: 
17918diff
changeset | 2601 | * Legacy goal package: reduced interface to the bare minimum required | 
| 
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
 wenzelm parents: 
17918diff
changeset | 2602 | to keep existing proof scripts running. Most other user-level | 
| 
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
 wenzelm parents: 
17918diff
changeset | 2603 | functions are now part of the OldGoals structure, which is *not* open | 
| 
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
 wenzelm parents: 
17918diff
changeset | 2604 | by default (consider isatool expandshort before open OldGoals). | 
| 
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
 wenzelm parents: 
17918diff
changeset | 2605 | Removed top_sg, prin, printyp, pprint_term/typ altogether, because | 
| 
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
 wenzelm parents: 
17918diff
changeset | 2606 | these tend to cause confusion about the actual goal (!) context being | 
| 
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
 wenzelm parents: 
17918diff
changeset | 2607 | used here, which is not necessarily the same as the_context(). | 
| 17918 
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
 wenzelm parents: 
17890diff
changeset | 2608 | |
| 23379 
d0e3f790bd73
updated 'find_theorems' -- moved ProofGeneral specifics to ProofGeneral/CHANGES;
 wenzelm parents: 
23377diff
changeset | 2609 | * Command 'find_theorems': supports "*" wild-card in "name:" | 
| 
d0e3f790bd73
updated 'find_theorems' -- moved ProofGeneral specifics to ProofGeneral/CHANGES;
 wenzelm parents: 
23377diff
changeset | 2610 | criterion; "with_dups" option. Certain ProofGeneral versions might | 
| 
d0e3f790bd73
updated 'find_theorems' -- moved ProofGeneral specifics to ProofGeneral/CHANGES;
 wenzelm parents: 
23377diff
changeset | 2611 | support a specific search form (see ProofGeneral/CHANGES). | 
| 22965 | 2612 | |
| 20370 | 2613 | * The ``prems limit'' option (cf. ProofContext.prems_limit) is now -1 | 
| 2614 | by default, which means that "prems" (and also "fixed variables") are | |
| 2615 | suppressed from proof state output. Note that the ProofGeneral | |
| 2616 | settings mechanism allows to change and save options persistently, but | |
| 2617 | older versions of Isabelle will fail to start up if a negative prems | |
| 2618 | limit is imposed. | |
| 2619 | ||
| 21308 
73883a528b26
* Local theory targets ``context/locale/class ... begin'' followed by ``end''.
 wenzelm parents: 
21265diff
changeset | 2620 | * Local theory targets may be specified by non-nested blocks of | 
| 
73883a528b26
* Local theory targets ``context/locale/class ... begin'' followed by ``end''.
 wenzelm parents: 
21265diff
changeset | 2621 | ``context/locale/class ... begin'' followed by ``end''. The body may | 
| 
73883a528b26
* Local theory targets ``context/locale/class ... begin'' followed by ``end''.
 wenzelm parents: 
21265diff
changeset | 2622 | contain definitions, theorems etc., including any derived mechanism | 
| 
73883a528b26
* Local theory targets ``context/locale/class ... begin'' followed by ``end''.
 wenzelm parents: 
21265diff
changeset | 2623 | that has been implemented on top of these primitives. This concept | 
| 
73883a528b26
* Local theory targets ``context/locale/class ... begin'' followed by ``end''.
 wenzelm parents: 
21265diff
changeset | 2624 | generalizes the existing ``theorem (in ...)'' towards more versatility | 
| 
73883a528b26
* Local theory targets ``context/locale/class ... begin'' followed by ``end''.
 wenzelm parents: 
21265diff
changeset | 2625 | and scalability. | 
| 
73883a528b26
* Local theory targets ``context/locale/class ... begin'' followed by ``end''.
 wenzelm parents: 
21265diff
changeset | 2626 | |
| 21960 
0574f192b78a
* Proof General: proper undo of final 'end'; discontinued Isabelle/classic;
 wenzelm parents: 
21896diff
changeset | 2627 | * Proof General interface: proper undo of final 'end' command; | 
| 
0574f192b78a
* Proof General: proper undo of final 'end'; discontinued Isabelle/classic;
 wenzelm parents: 
21896diff
changeset | 2628 | discontinued Isabelle/classic mode (ML proof scripts). | 
| 
0574f192b78a
* Proof General: proper undo of final 'end'; discontinued Isabelle/classic;
 wenzelm parents: 
21896diff
changeset | 2629 | |
| 17754 
58a306d9f736
* Command 'find_theorems': support * wildcard in name: criterion.
 wenzelm parents: 
17725diff
changeset | 2630 | |
| 17865 | 2631 | *** Document preparation *** | 
| 2632 | ||
| 21717 | 2633 | * Added antiquotation @{theory name} which prints the given name,
 | 
| 2634 | after checking that it refers to a valid ancestor theory in the | |
| 2635 | current context. | |
| 21339 | 2636 | |
| 17869 | 2637 | * Added antiquotations @{ML_type text} and @{ML_struct text} which
 | 
| 2638 | check the given source text as ML type/structure, printing verbatim. | |
| 17865 | 2639 | |
| 21717 | 2640 | * Added antiquotation @{abbrev "c args"} which prints the abbreviation
 | 
| 2641 | "c args == rhs" given in the current context. (Any number of | |
| 21735 | 2642 | arguments may be given on the LHS.) | 
| 21717 | 2643 | |
| 2644 | ||
| 17779 | 2645 | *** Pure *** | 
| 2646 | ||
| 24800 | 2647 | * The 'class' package offers a combination of axclass and locale to | 
| 25129 | 2648 | achieve Haskell-like type classes in Isabelle. Definitions and | 
| 2649 | theorems within a class context produce both relative results (with | |
| 2650 | implicit parameters according to the locale context), and polymorphic | |
| 2651 | constants with qualified polymorphism (according to the class | |
| 2652 | context). Within the body context of a 'class' target, a separate | |
| 2653 | syntax layer ("user space type system") takes care of converting
 | |
| 2654 | between global polymorphic consts and internal locale representation. | |
| 25177 | 2655 | See src/HOL/ex/Classpackage.thy for examples (as well as main HOL). | 
| 25184 | 2656 | "isatool doc classes" provides a tutorial. | 
| 20807 | 2657 | |
| 25199 | 2658 | * Generic code generator framework allows to generate executable | 
| 24800 | 2659 | code for ML and Haskell (including Isabelle classes). A short usage | 
| 2660 | sketch: | |
| 20188 
8b22026445af
added notes on class_package.ML and codegen_package.ML
 haftmann parents: 
20169diff
changeset | 2661 | |
| 
8b22026445af
added notes on class_package.ML and codegen_package.ML
 haftmann parents: 
20169diff
changeset | 2662 | internal compilation: | 
| 25199 | 2663 | export_code <list of constants (term syntax)> in SML | 
| 20453 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2664 | writing SML code to a file: | 
| 25199 | 2665 | export_code <list of constants (term syntax)> in SML <filename> | 
| 22735 | 2666 | writing OCaml code to a file: | 
| 25199 | 2667 | export_code <list of constants (term syntax)> in OCaml <filename> | 
| 20188 
8b22026445af
added notes on class_package.ML and codegen_package.ML
 haftmann parents: 
20169diff
changeset | 2668 | writing Haskell code to a bunch of files: | 
| 25199 | 2669 | export_code <list of constants (term syntax)> in Haskell <filename> | 
| 2670 | ||
| 2671 | evaluating closed propositions to True/False using code generation: | |
| 25184 | 2672 | method ``eval'' | 
| 2673 | ||
| 2674 | Reasonable default setup of framework in HOL. | |
| 20453 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2675 | |
| 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2676 | Theorem attributs for selecting and transforming function equations theorems: | 
| 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2677 | |
| 22845 | 2678 | [code fun]: select a theorem as function equation for a specific constant | 
| 2679 | [code fun del]: deselect a theorem as function equation for a specific constant | |
| 2680 | [code inline]: select an equation theorem for unfolding (inlining) in place | |
| 2681 | [code inline del]: deselect an equation theorem for unfolding (inlining) in place | |
| 20453 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2682 | |
| 22735 | 2683 | User-defined serializations (target in {SML, OCaml, Haskell}):
 | 
| 20453 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2684 | |
| 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2685 | code_const <and-list of constants (term syntax)> | 
| 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2686 |       {(target) <and-list of const target syntax>}+
 | 
| 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2687 | |
| 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2688 | code_type <and-list of type constructors> | 
| 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2689 |       {(target) <and-list of type target syntax>}+
 | 
| 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2690 | |
| 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2691 | code_instance <and-list of instances> | 
| 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2692 |       {(target)}+
 | 
| 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2693 | where instance ::= <type constructor> :: <class> | 
| 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2694 | |
| 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2695 | code_class <and_list of classes> | 
| 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2696 |       {(target) <and-list of class target syntax>}+
 | 
| 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2697 |         where class target syntax ::= <class name> {where {<classop> == <target syntax>}+}?
 | 
| 
855f07fabd76
final syntax for some Isar code generator keywords
 haftmann parents: 
20375diff
changeset | 2698 | |
| 25199 | 2699 | code_instance and code_class only are effective to target Haskell. | 
| 22735 | 2700 | |
| 25177 | 2701 | For example usage see src/HOL/ex/Codegenerator.thy and | 
| 2702 | src/HOL/ex/Codegenerator_Pretty.thy. A separate tutorial on code | |
| 24800 | 2703 | generation from Isabelle/HOL theories is available via "isatool doc | 
| 2704 | codegen". | |
| 20188 
8b22026445af
added notes on class_package.ML and codegen_package.ML
 haftmann parents: 
20169diff
changeset | 2705 | |
| 25129 | 2706 | * Code generator: consts in 'consts_code' Isar commands are now | 
| 2707 | referred to by usual term syntax (including optional type | |
| 2708 | annotations). | |
| 2709 | ||
| 19254 | 2710 | * Command 'no_translations' removes translation rules from theory | 
| 2711 | syntax. | |
| 2712 | ||
| 19625 
285771cec083
* Pure: overloaded definitions are now actually checked for acyclic dependencies;
 wenzelm parents: 
19587diff
changeset | 2713 | * Overloaded definitions are now actually checked for acyclic | 
| 19714 | 2714 | dependencies. The overloading scheme is slightly more general than | 
| 2715 | that of Haskell98, although Isabelle does not demand an exact | |
| 2716 | correspondence to type class and instance declarations. | |
| 2717 | INCOMPATIBILITY, use ``defs (unchecked overloaded)'' to admit more | |
| 2718 | exotic versions of overloading -- at the discretion of the user! | |
| 19711 | 2719 | |
| 2720 | Polymorphic constants are represented via type arguments, i.e. the | |
| 2721 | instantiation that matches an instance against the most general | |
| 2722 | declaration given in the signature. For example, with the declaration | |
| 2723 | c :: 'a => 'a => 'a, an instance c :: nat => nat => nat is represented | |
| 2724 | as c(nat). Overloading is essentially simultaneous structural | |
| 2725 | recursion over such type arguments. Incomplete specification patterns | |
| 19714 | 2726 | impose global constraints on all occurrences, e.g. c('a * 'a) on the
 | 
| 19715 | 2727 | LHS means that more general c('a * 'b) will be disallowed on any RHS.
 | 
| 19714 | 2728 | Command 'print_theory' outputs the normalized system of recursive | 
| 2729 | equations, see section "definitions". | |
| 19625 
285771cec083
* Pure: overloaded definitions are now actually checked for acyclic dependencies;
 wenzelm parents: 
19587diff
changeset | 2730 | |
| 24086 | 2731 | * Configuration options are maintained within the theory or proof | 
| 2732 | context (with name and type bool/int/string), providing a very simple | |
| 2733 | interface to a poor-man's version of general context data. Tools may | |
| 24110 
4ab3084e311c
tuned config options: eliminated separate attribute "option";
 wenzelm parents: 
24086diff
changeset | 2734 | declare options in ML (e.g. using Attrib.config_int) and then refer to | 
| 
4ab3084e311c
tuned config options: eliminated separate attribute "option";
 wenzelm parents: 
24086diff
changeset | 2735 | these values using Config.get etc. Users may change options via an | 
| 
4ab3084e311c
tuned config options: eliminated separate attribute "option";
 wenzelm parents: 
24086diff
changeset | 2736 | associated attribute of the same name. This form of context | 
| 
4ab3084e311c
tuned config options: eliminated separate attribute "option";
 wenzelm parents: 
24086diff
changeset | 2737 | declaration works particularly well with commands 'declare' or | 
| 
4ab3084e311c
tuned config options: eliminated separate attribute "option";
 wenzelm parents: 
24086diff
changeset | 2738 | 'using', for example ``declare [[foo = 42]]''. Thus it has become | 
| 
4ab3084e311c
tuned config options: eliminated separate attribute "option";
 wenzelm parents: 
24086diff
changeset | 2739 | very easy to avoid global references, which would not observe Isar | 
| 
4ab3084e311c
tuned config options: eliminated separate attribute "option";
 wenzelm parents: 
24086diff
changeset | 2740 | toplevel undo/redo and fail to work with multithreading. | 
| 24086 | 2741 | |
| 24172 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2742 | Various global ML references of Pure and HOL have been turned into | 
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2743 | configuration options: | 
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2744 | |
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2745 | Unify.search_bound unify_search_bound | 
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2746 | Unify.trace_bound unify_trace_bound | 
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2747 | Unify.trace_simp unify_trace_simp | 
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2748 | Unify.trace_types unify_trace_types | 
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2749 | Simplifier.simp_depth_limit simp_depth_limit | 
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2750 | Blast.depth_limit blast_depth_limit | 
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2751 | DatatypeProp.dtK datatype_distinctness_limit | 
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2752 | fast_arith_neq_limit fast_arith_neq_limit | 
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2753 | fast_arith_split_limit fast_arith_split_limit | 
| 
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
 wenzelm parents: 
24110diff
changeset | 2754 | |
| 24086 | 2755 | * Named collections of theorems may be easily installed as context | 
| 24800 | 2756 | data using the functor NamedThmsFun (see also | 
| 24086 | 2757 | src/Pure/Tools/named_thms.ML). The user may add or delete facts via | 
| 24110 
4ab3084e311c
tuned config options: eliminated separate attribute "option";
 wenzelm parents: 
24086diff
changeset | 2758 | attributes; there is also a toplevel print command. This facility is | 
| 
4ab3084e311c
tuned config options: eliminated separate attribute "option";
 wenzelm parents: 
24086diff
changeset | 2759 | just a common case of general context data, which is the preferred way | 
| 
4ab3084e311c
tuned config options: eliminated separate attribute "option";
 wenzelm parents: 
24086diff
changeset | 2760 | for anything more complex than just a list of facts in canonical | 
| 
4ab3084e311c
tuned config options: eliminated separate attribute "option";
 wenzelm parents: 
24086diff
changeset | 2761 | order. | 
| 24086 | 2762 | |
| 24032 | 2763 | * Isar: command 'declaration' augments a local theory by generic | 
| 2764 | declaration functions written in ML. This enables arbitrary content | |
| 2765 | being added to the context, depending on a morphism that tells the | |
| 2766 | difference of the original declaration context wrt. the application | |
| 2767 | context encountered later on. | |
| 2768 | ||
| 2769 | * Isar: proper interfaces for simplification procedures. Command | |
| 2770 | 'simproc_setup' declares named simprocs (with match patterns, and body | |
| 2771 | text in ML). Attribute "simproc" adds/deletes simprocs in the current | |
| 2772 | context.  ML antiquotation @{simproc name} retrieves named simprocs.
 | |
| 2773 | ||
| 2774 | * Isar: an extra pair of brackets around attribute declarations | |
| 2775 | abbreviates a theorem reference involving an internal dummy fact, | |
| 2776 | which will be ignored later --- only the effect of the attribute on | |
| 2777 | the background context will persist. This form of in-place | |
| 2778 | declarations is particularly useful with commands like 'declare' and | |
| 2779 | 'using', for example ``have A using [[simproc a]] by simp''. | |
| 2780 | ||
| 23369 
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
 wenzelm parents: 
23367diff
changeset | 2781 | * Isar: method "assumption" (and implicit closing of subproofs) now | 
| 
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
 wenzelm parents: 
23367diff
changeset | 2782 | takes simple non-atomic goal assumptions into account: after applying | 
| 
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
 wenzelm parents: 
23367diff
changeset | 2783 | an assumption as a rule the resulting subgoals are solved by atomic | 
| 
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
 wenzelm parents: 
23367diff
changeset | 2784 | assumption steps. This is particularly useful to finish 'obtain' | 
| 
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
 wenzelm parents: 
23367diff
changeset | 2785 | goals, such as "!!x. (!!x. P x ==> thesis) ==> P x ==> thesis", | 
| 
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
 wenzelm parents: 
23367diff
changeset | 2786 | without referring to the original premise "!!x. P x ==> thesis" in the | 
| 
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
 wenzelm parents: 
23367diff
changeset | 2787 | Isar proof context. POTENTIAL INCOMPATIBILITY: method "assumption" is | 
| 
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
 wenzelm parents: 
23367diff
changeset | 2788 | more permissive. | 
| 
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
 wenzelm parents: 
23367diff
changeset | 2789 | |
| 
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
 wenzelm parents: 
23367diff
changeset | 2790 | * Isar: implicit use of prems from the Isar proof context is | 
| 
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
 wenzelm parents: 
23367diff
changeset | 2791 | considered a legacy feature. Common applications like ``have A .'' | 
| 
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
 wenzelm parents: 
23367diff
changeset | 2792 | may be replaced by ``have A by fact'' or ``note `A`''. In general, | 
| 
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
 wenzelm parents: 
23367diff
changeset | 2793 | referencing facts explicitly here improves readability and | 
| 
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
 wenzelm parents: 
23367diff
changeset | 2794 | maintainability of proof texts. | 
| 
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
 wenzelm parents: 
23367diff
changeset | 2795 | |
| 17865 | 2796 | * Isar: improper proof element 'guess' is like 'obtain', but derives | 
| 2797 | the obtained context from the course of reasoning! For example: | |
| 2798 | ||
| 2799 | assume "EX x y. A x & B y" -- "any previous fact" | |
| 2800 | then guess x and y by clarify | |
| 2801 | ||
| 2802 | This technique is potentially adventurous, depending on the facts and | |
| 2803 | proof tools being involved here. | |
| 2804 | ||
| 18020 | 2805 | * Isar: known facts from the proof context may be specified as literal | 
| 2806 | propositions, using ASCII back-quote syntax. This works wherever | |
| 2807 | named facts used to be allowed so far, in proof commands, proof | |
| 2808 | methods, attributes etc. Literal facts are retrieved from the context | |
| 2809 | according to unification of type and term parameters. For example, | |
| 2810 | provided that "A" and "A ==> B" and "!!x. P x ==> Q x" are known | |
| 2811 | theorems in the current context, then these are valid literal facts: | |
| 2812 | `A` and `A ==> B` and `!!x. P x ==> Q x" as well as `P a ==> Q a` etc. | |
| 2813 | ||
| 2814 | There is also a proof method "fact" which does the same composition | |
| 18044 | 2815 | for explicit goal states, e.g. the following proof texts coincide with | 
| 2816 | certain special cases of literal facts: | |
| 18020 | 2817 | |
| 2818 | have "A" by fact == note `A` | |
| 2819 | have "A ==> B" by fact == note `A ==> B` | |
| 2820 | have "!!x. P x ==> Q x" by fact == note `!!x. P x ==> Q x` | |
| 2821 | have "P a ==> Q a" by fact == note `P a ==> Q a` | |
| 2822 | ||
| 20118 
0c1ec587a5a8
* Isar: ":" (colon) is no longer a symbolic identifier character;
 wenzelm parents: 
20090diff
changeset | 2823 | * Isar: ":" (colon) is no longer a symbolic identifier character in | 
| 
0c1ec587a5a8
* Isar: ":" (colon) is no longer a symbolic identifier character;
 wenzelm parents: 
20090diff
changeset | 2824 | outer syntax. Thus symbolic identifiers may be used without | 
| 
0c1ec587a5a8
* Isar: ":" (colon) is no longer a symbolic identifier character;
 wenzelm parents: 
20090diff
changeset | 2825 | additional white space in declarations like this: ``assume *: A''. | 
| 
0c1ec587a5a8
* Isar: ":" (colon) is no longer a symbolic identifier character;
 wenzelm parents: 
20090diff
changeset | 2826 | |
| 20013 | 2827 | * Isar: 'print_facts' prints all local facts of the current context, | 
| 2828 | both named and unnamed ones. | |
| 2829 | ||
| 18308 | 2830 | * Isar: 'def' now admits simultaneous definitions, e.g.: | 
| 2831 | ||
| 2832 | def x == "t" and y == "u" | |
| 2833 | ||
| 18540 | 2834 | * Isar: added command 'unfolding', which is structurally similar to | 
| 2835 | 'using', but affects both the goal state and facts by unfolding given | |
| 18815 
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
 wenzelm parents: 
18738diff
changeset | 2836 | rewrite rules. Thus many occurrences of the 'unfold' method or | 
| 18540 | 2837 | 'unfolded' attribute may be replaced by first-class proof text. | 
| 2838 | ||
| 18815 
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
 wenzelm parents: 
18738diff
changeset | 2839 | * Isar: methods 'unfold' / 'fold', attributes 'unfolded' / 'folded', | 
| 
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
 wenzelm parents: 
18738diff
changeset | 2840 | and command 'unfolding' now all support object-level equalities | 
| 
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
 wenzelm parents: 
18738diff
changeset | 2841 | (potentially conditional). The underlying notion of rewrite rule is | 
| 
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
 wenzelm parents: 
18738diff
changeset | 2842 | analogous to the 'rule_format' attribute, but *not* that of the | 
| 
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
 wenzelm parents: 
18738diff
changeset | 2843 | Simplifier (which is usually more generous). | 
| 
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
 wenzelm parents: 
18738diff
changeset | 2844 | |
| 24238 | 2845 | * Isar: the new attribute [rotated n] (default n = 1) rotates the | 
| 2846 | premises of a theorem by n. Useful in conjunction with drule. | |
| 2847 | ||
| 19220 | 2848 | * Isar: the goal restriction operator [N] (default N = 1) evaluates a | 
| 2849 | method expression within a sandbox consisting of the first N | |
| 19240 | 2850 | sub-goals, which need to exist. For example, ``simp_all [3]'' | 
| 2851 | simplifies the first three sub-goals, while (rule foo, simp_all)[] | |
| 2852 | simplifies all new goals that emerge from applying rule foo to the | |
| 2853 | originally first one. | |
| 19220 | 2854 | |
| 19814 
faa698d46686
* Theory syntax: some popular names (e.g. "class", "if") are now keywords.
 wenzelm parents: 
19783diff
changeset | 2855 | * Isar: schematic goals are no longer restricted to higher-order | 
| 
faa698d46686
* Theory syntax: some popular names (e.g. "class", "if") are now keywords.
 wenzelm parents: 
19783diff
changeset | 2856 | patterns; e.g. ``lemma "?P(?x)" by (rule TrueI)'' now works as | 
| 
faa698d46686
* Theory syntax: some popular names (e.g. "class", "if") are now keywords.
 wenzelm parents: 
19783diff
changeset | 2857 | expected. | 
| 
faa698d46686
* Theory syntax: some popular names (e.g. "class", "if") are now keywords.
 wenzelm parents: 
19783diff
changeset | 2858 | |
| 18901 | 2859 | * Isar: the conclusion of a long theorem statement is now either | 
| 2860 | 'shows' (a simultaneous conjunction, as before), or 'obtains' | |
| 2861 | (essentially a disjunction of cases with local parameters and | |
| 2862 | assumptions). The latter allows to express general elimination rules | |
| 18910 | 2863 | adequately; in this notation common elimination rules look like this: | 
| 18901 | 2864 | |
| 2865 | lemma exE: -- "EX x. P x ==> (!!x. P x ==> thesis) ==> thesis" | |
| 2866 | assumes "EX x. P x" | |
| 2867 | obtains x where "P x" | |
| 2868 | ||
| 2869 | lemma conjE: -- "A & B ==> (A ==> B ==> thesis) ==> thesis" | |
| 2870 | assumes "A & B" | |
| 2871 | obtains A and B | |
| 2872 | ||
| 2873 | lemma disjE: -- "A | B ==> (A ==> thesis) ==> (B ==> thesis) ==> thesis" | |
| 2874 | assumes "A | B" | |
| 2875 | obtains | |
| 2876 | A | |
| 2877 | | B | |
| 2878 | ||
| 18910 | 2879 | The subsequent classical rules even refer to the formal "thesis" | 
| 18901 | 2880 | explicitly: | 
| 2881 | ||
| 2882 | lemma classical: -- "(~ thesis ==> thesis) ==> thesis" | |
| 2883 | obtains "~ thesis" | |
| 2884 | ||
| 18910 | 2885 | lemma Peirce's_Law: -- "((thesis ==> something) ==> thesis) ==> thesis" | 
| 2886 | obtains "thesis ==> something" | |
| 18901 | 2887 | |
| 2888 | The actual proof of an 'obtains' statement is analogous to that of the | |
| 18910 | 2889 | Isar proof element 'obtain', only that there may be several cases. | 
| 2890 | Optional case names may be specified in parentheses; these will be | |
| 2891 | available both in the present proof and as annotations in the | |
| 2892 | resulting rule, for later use with the 'cases' method (cf. attribute | |
| 2893 | case_names). | |
| 18901 | 2894 | |
| 21447 
379f130843f7
* Isar: the assumptions of a long theorem statement are available as assms;
 wenzelm parents: 
21406diff
changeset | 2895 | * Isar: the assumptions of a long theorem statement are available as | 
| 
379f130843f7
* Isar: the assumptions of a long theorem statement are available as assms;
 wenzelm parents: 
21406diff
changeset | 2896 | "assms" fact in the proof context. This is more appropriate than the | 
| 
379f130843f7
* Isar: the assumptions of a long theorem statement are available as assms;
 wenzelm parents: 
21406diff
changeset | 2897 | (historical) "prems", which refers to all assumptions of the current | 
| 
379f130843f7
* Isar: the assumptions of a long theorem statement are available as assms;
 wenzelm parents: 
21406diff
changeset | 2898 | context, including those from the target locale, proof body etc. | 
| 
379f130843f7
* Isar: the assumptions of a long theorem statement are available as assms;
 wenzelm parents: 
21406diff
changeset | 2899 | |
| 19263 | 2900 | * Isar: 'print_statement' prints theorems from the current theory or | 
| 2901 | proof context in long statement form, according to the syntax of a | |
| 2902 | top-level lemma. | |
| 2903 | ||
| 18901 | 2904 | * Isar: 'obtain' takes an optional case name for the local context | 
| 2905 | introduction rule (default "that"). | |
| 2906 | ||
| 19587 | 2907 | * Isar: removed obsolete 'concl is' patterns. INCOMPATIBILITY, use | 
| 2908 | explicit (is "_ ==> ?foo") in the rare cases where this still happens | |
| 2909 | to occur. | |
| 2910 | ||
| 19682 
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
 wenzelm parents: 
19665diff
changeset | 2911 | * Pure: syntax "CONST name" produces a fully internalized constant | 
| 
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
 wenzelm parents: 
19665diff
changeset | 2912 | according to the current context. This is particularly useful for | 
| 
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
 wenzelm parents: 
19665diff
changeset | 2913 | syntax translations that should refer to internal constant | 
| 
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
 wenzelm parents: 
19665diff
changeset | 2914 | representations independently of name spaces. | 
| 
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
 wenzelm parents: 
19665diff
changeset | 2915 | |
| 21537 
45b3a85ee548
* Pure: syntax constant for foo (binder) is called foo_binder;
 wenzelm parents: 
21471diff
changeset | 2916 | * Pure: syntax constant for foo (binder "FOO ") is called "foo_binder" | 
| 
45b3a85ee548
* Pure: syntax constant for foo (binder) is called foo_binder;
 wenzelm parents: 
21471diff
changeset | 2917 | instead of "FOO ". This allows multiple binder declarations to coexist | 
| 
45b3a85ee548
* Pure: syntax constant for foo (binder) is called foo_binder;
 wenzelm parents: 
21471diff
changeset | 2918 | in the same context. INCOMPATIBILITY. | 
| 
45b3a85ee548
* Pure: syntax constant for foo (binder) is called foo_binder;
 wenzelm parents: 
21471diff
changeset | 2919 | |
| 21209 
dbb8decc36bc
'const_syntax' command: allow fixed variables, renamed to 'notation';
 wenzelm parents: 
21200diff
changeset | 2920 | * Isar/locales: 'notation' provides a robust interface to the 'syntax' | 
| 
dbb8decc36bc
'const_syntax' command: allow fixed variables, renamed to 'notation';
 wenzelm parents: 
21200diff
changeset | 2921 | primitive that also works in a locale context (both for constants and | 
| 24950 | 2922 | fixed variables). Type declaration and internal syntactic representation | 
| 2923 | of given constants retrieved from the context. Likewise, the | |
| 2924 | 'no_notation' command allows to remove given syntax annotations from the | |
| 2925 | current context. | |
| 19682 
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
 wenzelm parents: 
19665diff
changeset | 2926 | |
| 19665 | 2927 | * Isar/locales: new derived specification elements 'axiomatization', | 
| 2928 | 'definition', 'abbreviation', which support type-inference, admit | |
| 19083 | 2929 | object-level specifications (equality, equivalence). See also the | 
| 2930 | isar-ref manual. Examples: | |
| 19081 
085b5badb8de
* Isar/locales: new derived specification elements 'definition', 'abbreviation', 'axiomatization';
 wenzelm parents: 
19034diff
changeset | 2931 | |
| 19665 | 2932 | axiomatization | 
| 21595 | 2933 | eq (infix "===" 50) where | 
| 2934 | eq_refl: "x === x" and eq_subst: "x === y ==> P x ==> P y" | |
| 2935 | ||
| 2936 | definition "f x y = x + y + 1" | |
| 2937 | definition g where "g x = f x x" | |
| 19081 
085b5badb8de
* Isar/locales: new derived specification elements 'definition', 'abbreviation', 'axiomatization';
 wenzelm parents: 
19034diff
changeset | 2938 | |
| 19363 | 2939 | abbreviation | 
| 21595 | 2940 | neq (infix "=!=" 50) where | 
| 19363 | 2941 | "x =!= y == ~ (x === y)" | 
| 19081 
085b5badb8de
* Isar/locales: new derived specification elements 'definition', 'abbreviation', 'axiomatization';
 wenzelm parents: 
19034diff
changeset | 2942 | |
| 19083 | 2943 | These specifications may be also used in a locale context. Then the | 
| 2944 | constants being introduced depend on certain fixed parameters, and the | |
| 2945 | constant name is qualified by the locale base name. An internal | |
| 2946 | abbreviation takes care for convenient input and output, making the | |
| 19088 | 2947 | parameters implicit and using the original short name. See also | 
| 25177 | 2948 | src/HOL/ex/Abstract_NAT.thy for an example of deriving polymorphic | 
| 19083 | 2949 | entities from a monomorphic theory. | 
| 2950 | ||
| 2951 | Presently, abbreviations are only available 'in' a target locale, but | |
| 19363 | 2952 | not inherited by general import expressions. Also note that | 
| 2953 | 'abbreviation' may be used as a type-safe replacement for 'syntax' + | |
| 24735 
3a55ee2cae70
* Pure/Isar: unified specification syntax admits type inference and dummy patterns;
 wenzelm parents: 
24706diff
changeset | 2954 | 'translations' in common applications. The "no_abbrevs" print mode | 
| 
3a55ee2cae70
* Pure/Isar: unified specification syntax admits type inference and dummy patterns;
 wenzelm parents: 
24706diff
changeset | 2955 | prevents folding of abbreviations in term output. | 
| 19084 | 2956 | |
| 19682 
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
 wenzelm parents: 
19665diff
changeset | 2957 | Concrete syntax is attached to specified constants in internal form, | 
| 
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
 wenzelm parents: 
19665diff
changeset | 2958 | independently of name spaces. The parse tree representation is | 
| 21209 
dbb8decc36bc
'const_syntax' command: allow fixed variables, renamed to 'notation';
 wenzelm parents: 
21200diff
changeset | 2959 | slightly different -- use 'notation' instead of raw 'syntax', and | 
| 19682 
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
 wenzelm parents: 
19665diff
changeset | 2960 | 'translations' with explicit "CONST" markup to accommodate this. | 
| 19665 | 2961 | |
| 24800 | 2962 | * Pure/Isar: unified syntax for new-style specification mechanisms | 
| 2963 | (e.g. 'definition', 'abbreviation', or 'inductive' in HOL) admits | |
| 2964 | full type inference and dummy patterns ("_").  For example:
 | |
| 24735 
3a55ee2cae70
* Pure/Isar: unified specification syntax admits type inference and dummy patterns;
 wenzelm parents: 
24706diff
changeset | 2965 | |
| 
3a55ee2cae70
* Pure/Isar: unified specification syntax admits type inference and dummy patterns;
 wenzelm parents: 
24706diff
changeset | 2966 | definition "K x _ = x" | 
| 
3a55ee2cae70
* Pure/Isar: unified specification syntax admits type inference and dummy patterns;
 wenzelm parents: 
24706diff
changeset | 2967 | |
| 24738 | 2968 | inductive conj for A B | 
| 2969 | where "A ==> B ==> conj A B" | |
| 2970 | ||
| 21735 | 2971 | * Pure: command 'print_abbrevs' prints all constant abbreviations of | 
| 2972 | the current context. Print mode "no_abbrevs" prevents inversion of | |
| 2973 | abbreviations on output. | |
| 2974 | ||
| 24800 | 2975 | * Isar/locales: improved parameter handling: use of locales "var" and | 
| 2976 | "struct" no longer necessary; - parameter renamings are no longer | |
| 2977 | required to be injective. For example, this allows to define | |
| 2978 | endomorphisms as locale endom = homom mult mult h. | |
| 19783 | 2979 | |
| 19931 
fb32b43e7f80
Restructured locales with predicates: import is now an interpretation.
 ballarin parents: 
19895diff
changeset | 2980 | * Isar/locales: changed the way locales with predicates are defined. | 
| 
fb32b43e7f80
Restructured locales with predicates: import is now an interpretation.
 ballarin parents: 
19895diff
changeset | 2981 | Instead of accumulating the specification, the imported expression is | 
| 22126 | 2982 | now an interpretation. INCOMPATIBILITY: different normal form of | 
| 2983 | locale expressions. In particular, in interpretations of locales with | |
| 2984 | predicates, goals repesenting already interpreted fragments are not | |
| 2985 | removed automatically. Use methods `intro_locales' and | |
| 2986 | `unfold_locales'; see below. | |
| 2987 | ||
| 2988 | * Isar/locales: new methods `intro_locales' and `unfold_locales' | |
| 2989 | provide backward reasoning on locales predicates. The methods are | |
| 2990 | aware of interpretations and discharge corresponding goals. | |
| 2991 | `intro_locales' is less aggressive then `unfold_locales' and does not | |
| 2992 | unfold predicates to assumptions. | |
| 19931 
fb32b43e7f80
Restructured locales with predicates: import is now an interpretation.
 ballarin parents: 
19895diff
changeset | 2993 | |
| 
fb32b43e7f80
Restructured locales with predicates: import is now an interpretation.
 ballarin parents: 
19895diff
changeset | 2994 | * Isar/locales: the order in which locale fragments are accumulated | 
| 22126 | 2995 | has changed. This enables to override declarations from fragments due | 
| 2996 | to interpretations -- for example, unwanted simp rules. | |
| 19931 
fb32b43e7f80
Restructured locales with predicates: import is now an interpretation.
 ballarin parents: 
19895diff
changeset | 2997 | |
| 23920 | 2998 | * Isar/locales: interpretation in theories and proof contexts has been | 
| 2999 | extended. One may now specify (and prove) equations, which are | |
| 3000 | unfolded in interpreted theorems. This is useful for replacing | |
| 3001 | defined concepts (constants depending on locale parameters) by | |
| 3002 | concepts already existing in the target context. Example: | |
| 3003 | ||
| 3004 | interpretation partial_order ["op <= :: [int, int] => bool"] | |
| 3005 | where "partial_order.less (op <=) (x::int) y = (x < y)" | |
| 3006 | ||
| 24800 | 3007 | Typically, the constant `partial_order.less' is created by a | 
| 3008 | definition specification element in the context of locale | |
| 3009 | partial_order. | |
| 3010 | ||
| 24859 | 3011 | * Method "induct": improved internal context management to support | 
| 24800 | 3012 | local fixes and defines on-the-fly. Thus explicit meta-level | 
| 3013 | connectives !! and ==> are rarely required anymore in inductive goals | |
| 3014 | (using object-logic connectives for this purpose has been long | |
| 3015 | obsolete anyway). Common proof patterns are explained in | |
| 25177 | 3016 | src/HOL/Induct/Common_Patterns.thy, see also | 
| 3017 | src/HOL/Isar_examples/Puzzle.thy and src/HOL/Lambda for realistic | |
| 3018 | examples. | |
| 24606 
7acbb982fc77
moved induct patterns to HOL/Induct/Common_Patterns.thy;
 wenzelm parents: 
24507diff
changeset | 3019 | |
| 24859 | 3020 | * Method "induct": improved handling of simultaneous goals. Instead of | 
| 24606 
7acbb982fc77
moved induct patterns to HOL/Induct/Common_Patterns.thy;
 wenzelm parents: 
24507diff
changeset | 3021 | introducing object-level conjunction, the statement is now split into | 
| 
7acbb982fc77
moved induct patterns to HOL/Induct/Common_Patterns.thy;
 wenzelm parents: 
24507diff
changeset | 3022 | several conclusions, while the corresponding symbolic cases are nested | 
| 
7acbb982fc77
moved induct patterns to HOL/Induct/Common_Patterns.thy;
 wenzelm parents: 
24507diff
changeset | 3023 | accordingly. INCOMPATIBILITY, proofs need to be structured explicitly, | 
| 25177 | 3024 | see src/HOL/Induct/Common_Patterns.thy, for example. | 
| 24606 
7acbb982fc77
moved induct patterns to HOL/Induct/Common_Patterns.thy;
 wenzelm parents: 
24507diff
changeset | 3025 | |
| 24859 | 3026 | * Method "induct": mutual induction rules are now specified as a list | 
| 24800 | 3027 | of rule sharing the same induction cases. HOL packages usually provide | 
| 24606 
7acbb982fc77
moved induct patterns to HOL/Induct/Common_Patterns.thy;
 wenzelm parents: 
24507diff
changeset | 3028 | foo_bar.inducts for mutually defined items foo and bar (e.g. inductive | 
| 24859 | 3029 | predicates/sets or datatypes). INCOMPATIBILITY, users need to specify | 
| 3030 | mutual induction rules differently, i.e. like this: | |
| 18506 
96260fb11449
* Provers/induct: support simultaneous goals with mutual rules;
 wenzelm parents: 
18495diff
changeset | 3031 | |
| 
96260fb11449
* Provers/induct: support simultaneous goals with mutual rules;
 wenzelm parents: 
18495diff
changeset | 3032 | (induct rule: foo_bar.inducts) | 
| 
96260fb11449
* Provers/induct: support simultaneous goals with mutual rules;
 wenzelm parents: 
18495diff
changeset | 3033 | (induct set: foo bar) | 
| 24859 | 3034 | (induct pred: foo bar) | 
| 18506 
96260fb11449
* Provers/induct: support simultaneous goals with mutual rules;
 wenzelm parents: 
18495diff
changeset | 3035 | (induct type: foo bar) | 
| 
96260fb11449
* Provers/induct: support simultaneous goals with mutual rules;
 wenzelm parents: 
18495diff
changeset | 3036 | |
| 
96260fb11449
* Provers/induct: support simultaneous goals with mutual rules;
 wenzelm parents: 
18495diff
changeset | 3037 | The ML function ProjectRule.projections turns old-style rules into the | 
| 
96260fb11449
* Provers/induct: support simultaneous goals with mutual rules;
 wenzelm parents: 
18495diff
changeset | 3038 | new format. | 
| 
96260fb11449
* Provers/induct: support simultaneous goals with mutual rules;
 wenzelm parents: 
18495diff
changeset | 3039 | |
| 24859 | 3040 | * Method "coinduct": dual of induction, see | 
| 18399 | 3041 | src/HOL/Library/Coinductive_List.thy for various examples. | 
| 3042 | ||
| 24859 | 3043 | * Method "cases", "induct", "coinduct": the ``(open)'' option is | 
| 3044 | considered a legacy feature. | |
| 3045 | ||
| 20919 
dab803075c62
attribute "symmetric": standardized schematic variables;
 wenzelm parents: 
20857diff
changeset | 3046 | * Attribute "symmetric" produces result with standardized schematic | 
| 
dab803075c62
attribute "symmetric": standardized schematic variables;
 wenzelm parents: 
20857diff
changeset | 3047 | variables (index 0). Potential INCOMPATIBILITY. | 
| 
dab803075c62
attribute "symmetric": standardized schematic variables;
 wenzelm parents: 
20857diff
changeset | 3048 | |
| 22126 | 3049 | * Simplifier: by default the simplifier trace only shows top level | 
| 3050 | rewrites now. That is, trace_simp_depth_limit is set to 1 by | |
| 3051 | default. Thus there is less danger of being flooded by the trace. The | |
| 3052 | trace indicates where parts have been suppressed. | |
| 18674 | 3053 | |
| 18536 
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
 wenzelm parents: 
18507diff
changeset | 3054 | * Provers/classical: removed obsolete classical version of elim_format | 
| 
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
 wenzelm parents: 
18507diff
changeset | 3055 | attribute; classical elim/dest rules are now treated uniformly when | 
| 
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
 wenzelm parents: 
18507diff
changeset | 3056 | manipulating the claset. | 
| 
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
 wenzelm parents: 
18507diff
changeset | 3057 | |
| 18694 | 3058 | * Provers/classical: stricter checks to ensure that supplied intro, | 
| 3059 | dest and elim rules are well-formed; dest and elim rules must have at | |
| 3060 | least one premise. | |
| 3061 | ||
| 3062 | * Provers/classical: attributes dest/elim/intro take an optional | |
| 18695 | 3063 | weight argument for the rule (just as the Pure versions). Weights are | 
| 18696 | 3064 | ignored by automated tools, but determine the search order of single | 
| 18694 | 3065 | rule steps. | 
| 18557 
60a0f9caa0a2
Provers/classical: stricter checks to ensure that supplied intro, dest and
 paulson parents: 
18549diff
changeset | 3066 | |
| 18536 
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
 wenzelm parents: 
18507diff
changeset | 3067 | * Syntax: input syntax now supports dummy variable binding "%_. b", | 
| 
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
 wenzelm parents: 
18507diff
changeset | 3068 | where the body does not mention the bound variable. Note that dummy | 
| 
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
 wenzelm parents: 
18507diff
changeset | 3069 | patterns implicitly depend on their context of bounds, which makes | 
| 
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
 wenzelm parents: 
18507diff
changeset | 3070 | "{_. _}" match any set comprehension as expected.  Potential
 | 
| 
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
 wenzelm parents: 
18507diff
changeset | 3071 | INCOMPATIBILITY -- parse translations need to cope with syntactic | 
| 
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
 wenzelm parents: 
18507diff
changeset | 3072 | constant "_idtdummy" in the binding position. | 
| 
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
 wenzelm parents: 
18507diff
changeset | 3073 | |
| 
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
 wenzelm parents: 
18507diff
changeset | 3074 | * Syntax: removed obsolete syntactic constant "_K" and its associated | 
| 
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
 wenzelm parents: 
18507diff
changeset | 3075 | parse translation. INCOMPATIBILITY -- use dummy abstraction instead, | 
| 
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
 wenzelm parents: 
18507diff
changeset | 3076 | for example "A -> B" => "Pi A (%_. B)". | 
| 17779 | 3077 | |
| 20582 
ebd0e03c6a9b
* Pure: 'class_deps' command visualizes the subclass relation;
 wenzelm parents: 
20503diff
changeset | 3078 | * Pure: 'class_deps' command visualizes the subclass relation, using | 
| 
ebd0e03c6a9b
* Pure: 'class_deps' command visualizes the subclass relation;
 wenzelm parents: 
20503diff
changeset | 3079 | the graph browser tool. | 
| 
ebd0e03c6a9b
* Pure: 'class_deps' command visualizes the subclass relation;
 wenzelm parents: 
20503diff
changeset | 3080 | |
| 24800 | 3081 | * Pure: 'print_theory' now suppresses certain internal declarations by | 
| 3082 | default; use '!' option for full details. | |
| 20620 
8b26f58c5646
* Pure: 'print_theory' now suppresses entities with internal name;
 wenzelm parents: 
20607diff
changeset | 3083 | |
| 17865 | 3084 | |
| 17806 | 3085 | *** HOL *** | 
| 3086 | ||
| 25129 | 3087 | * Method "metis" proves goals by applying the Metis general-purpose | 
| 3088 | resolution prover (see also http://gilith.com/software/metis/). | |
| 3089 | Examples are in the directory MetisExamples. WARNING: the | |
| 3090 | Isabelle/HOL-Metis integration does not yet work properly with | |
| 3091 | multi-threading. | |
| 3092 | ||
| 3093 | * Command 'sledgehammer' invokes external automatic theorem provers as | |
| 3094 | background processes. It generates calls to the "metis" method if | |
| 3095 | successful. These can be pasted into the proof. Users do not have to | |
| 3096 | wait for the automatic provers to return. WARNING: does not really | |
| 3097 | work with multi-threading. | |
| 3098 | ||
| 24804 | 3099 | * New "auto_quickcheck" feature tests outermost goal statements for | 
| 3100 | potential counter-examples. Controlled by ML references | |
| 3101 | auto_quickcheck (default true) and auto_quickcheck_time_limit (default | |
| 25129 | 3102 | 5000 milliseconds). Fails silently if statements is outside of | 
| 3103 | executable fragment, or any other codgenerator problem occurs. | |
| 24804 | 3104 | |
| 25184 | 3105 | * New constant "undefined" with axiom "undefined x = undefined". | 
| 3106 | ||
| 3107 | * Added class "HOL.eq", allowing for code generation with polymorphic | |
| 3108 | equality. | |
| 3109 | ||
| 3110 | * Some renaming of class constants due to canonical name prefixing in | |
| 3111 | the new 'class' package: | |
| 3112 | ||
| 3113 | HOL.abs ~> HOL.abs_class.abs | |
| 3114 | HOL.divide ~> HOL.divide_class.divide | |
| 3115 | 0 ~> HOL.zero_class.zero | |
| 3116 | 1 ~> HOL.one_class.one | |
| 3117 | op + ~> HOL.plus_class.plus | |
| 3118 | op - ~> HOL.minus_class.minus | |
| 3119 | uminus ~> HOL.minus_class.uminus | |
| 3120 | op * ~> HOL.times_class.times | |
| 3121 | op < ~> HOL.ord_class.less | |
| 3122 | op <= > HOL.ord_class.less_eq | |
| 3123 | Nat.power ~> Power.power_class.power | |
| 3124 | Nat.size ~> Nat.size_class.size | |
| 3125 | Numeral.number_of ~> Numeral.number_class.number_of | |
| 3126 | FixedPoint.Inf ~> Lattices.complete_lattice_class.Inf | |
| 3127 | FixedPoint.Sup ~> Lattices.complete_lattice_class.Sup | |
| 3128 | Orderings.min ~> Orderings.ord_class.min | |
| 3129 | Orderings.max ~> Orderings.ord_class.max | |
| 3130 | Divides.op div ~> Divides.div_class.div | |
| 3131 | Divides.op mod ~> Divides.div_class.mod | |
| 3132 | Divides.op dvd ~> Divides.div_class.dvd | |
| 3133 | ||
| 3134 | INCOMPATIBILITY. Adaptions may be required in the following cases: | |
| 3135 | ||
| 3136 | a) User-defined constants using any of the names "plus", "minus", | |
| 3137 | "times", "less" or "less_eq". The standard syntax translations for | |
| 3138 | "+", "-" and "*" may go wrong. INCOMPATIBILITY: use more specific | |
| 3139 | names. | |
| 3140 | ||
| 3141 | b) Variables named "plus", "minus", "times", "less", "less_eq" | |
| 3142 | INCOMPATIBILITY: use more specific names. | |
| 3143 | ||
| 3144 | c) Permutative equations (e.g. "a + b = b + a") | |
| 3145 | Since the change of names also changes the order of terms, permutative | |
| 3146 | rewrite rules may get applied in a different order. Experience shows | |
| 3147 | that this is rarely the case (only two adaptions in the whole Isabelle | |
| 3148 | distribution). INCOMPATIBILITY: rewrite proofs | |
| 3149 | ||
| 3150 | d) ML code directly refering to constant names | |
| 3151 | This in general only affects hand-written proof tactics, simprocs and | |
| 3152 | so on. INCOMPATIBILITY: grep your sourcecode and replace names. | |
| 3153 | Consider using @{const_name} antiquotation.
 | |
| 3154 | ||
| 3155 | * New class "default" with associated constant "default". | |
| 3156 | ||
| 3157 | * Function "sgn" is now overloaded and available on int, real, complex | |
| 3158 | (and other numeric types), using class "sgn". Two possible defs of | |
| 3159 | sgn are given as equational assumptions in the classes sgn_if and | |
| 3160 | sgn_div_norm; ordered_idom now also inherits from sgn_if. | |
| 3161 | INCOMPATIBILITY. | |
| 3162 | ||
| 3163 | * Locale "partial_order" now unified with class "order" (cf. theory | |
| 3164 | Orderings), added parameter "less". INCOMPATIBILITY. | |
| 3165 | ||
| 3166 | * Renamings in classes "order" and "linorder": facts "refl", "trans" and | |
| 3167 | "cases" to "order_refl", "order_trans" and "linorder_cases", to avoid | |
| 3168 | clashes with HOL "refl" and "trans". INCOMPATIBILITY. | |
| 3169 | ||
| 3170 | * Classes "order" and "linorder": potential INCOMPATIBILITY due to | |
| 3171 | changed order of proof goals in instance proofs. | |
| 3172 | ||
| 3173 | * The transitivity reasoner for partial and linear orders is set up | |
| 3174 | for classes "order" and "linorder". Instances of the reasoner are available | |
| 3175 | in all contexts importing or interpreting the corresponding locales. | |
| 3176 | Method "order" invokes the reasoner separately; the reasoner | |
| 3177 | is also integrated with the Simplifier as a solver. Diagnostic | |
| 3178 | command 'print_orders' shows the available instances of the reasoner | |
| 3179 | in the current context. | |
| 3180 | ||
| 3181 | * Localized monotonicity predicate in theory "Orderings"; integrated | |
| 3182 | lemmas max_of_mono and min_of_mono with this predicate. | |
| 3183 | INCOMPATIBILITY. | |
| 3184 | ||
| 3185 | * Formulation of theorem "dense" changed slightly due to integration | |
| 3186 | with new class dense_linear_order. | |
| 3187 | ||
| 3188 | * Uniform lattice theory development in HOL. | |
| 3189 | ||
| 3190 | constants "meet" and "join" now named "inf" and "sup" | |
| 3191 | constant "Meet" now named "Inf" | |
| 3192 | ||
| 3193 | classes "meet_semilorder" and "join_semilorder" now named | |
| 3194 | "lower_semilattice" and "upper_semilattice" | |
| 3195 | class "lorder" now named "lattice" | |
| 3196 | class "comp_lat" now named "complete_lattice" | |
| 3197 | ||
| 3198 | Instantiation of lattice classes allows explicit definitions | |
| 3199 | for "inf" and "sup" operations (or "Inf" and "Sup" for complete lattices). | |
| 3200 | ||
| 3201 | INCOMPATIBILITY. Theorem renames: | |
| 3202 | ||
| 3203 | meet_left_le ~> inf_le1 | |
| 3204 | meet_right_le ~> inf_le2 | |
| 3205 | join_left_le ~> sup_ge1 | |
| 3206 | join_right_le ~> sup_ge2 | |
| 3207 | meet_join_le ~> inf_sup_ord | |
| 3208 | le_meetI ~> le_infI | |
| 3209 | join_leI ~> le_supI | |
| 3210 | le_meet ~> le_inf_iff | |
| 3211 | le_join ~> ge_sup_conv | |
| 3212 | meet_idempotent ~> inf_idem | |
| 3213 | join_idempotent ~> sup_idem | |
| 3214 | meet_comm ~> inf_commute | |
| 3215 | join_comm ~> sup_commute | |
| 3216 | meet_leI1 ~> le_infI1 | |
| 3217 | meet_leI2 ~> le_infI2 | |
| 3218 | le_joinI1 ~> le_supI1 | |
| 3219 | le_joinI2 ~> le_supI2 | |
| 3220 | meet_assoc ~> inf_assoc | |
| 3221 | join_assoc ~> sup_assoc | |
| 3222 | meet_left_comm ~> inf_left_commute | |
| 3223 | meet_left_idempotent ~> inf_left_idem | |
| 3224 | join_left_comm ~> sup_left_commute | |
| 3225 | join_left_idempotent ~> sup_left_idem | |
| 3226 | meet_aci ~> inf_aci | |
| 3227 | join_aci ~> sup_aci | |
| 3228 | le_def_meet ~> le_iff_inf | |
| 3229 | le_def_join ~> le_iff_sup | |
| 3230 | join_absorp2 ~> sup_absorb2 | |
| 3231 | join_absorp1 ~> sup_absorb1 | |
| 3232 | meet_absorp1 ~> inf_absorb1 | |
| 3233 | meet_absorp2 ~> inf_absorb2 | |
| 3234 | meet_join_absorp ~> inf_sup_absorb | |
| 3235 | join_meet_absorp ~> sup_inf_absorb | |
| 3236 | distrib_join_le ~> distrib_sup_le | |
| 3237 | distrib_meet_le ~> distrib_inf_le | |
| 3238 | ||
| 3239 | add_meet_distrib_left ~> add_inf_distrib_left | |
| 3240 | add_join_distrib_left ~> add_sup_distrib_left | |
| 3241 | is_join_neg_meet ~> is_join_neg_inf | |
| 3242 | is_meet_neg_join ~> is_meet_neg_sup | |
| 3243 | add_meet_distrib_right ~> add_inf_distrib_right | |
| 3244 | add_join_distrib_right ~> add_sup_distrib_right | |
| 3245 | add_meet_join_distribs ~> add_sup_inf_distribs | |
| 3246 | join_eq_neg_meet ~> sup_eq_neg_inf | |
| 3247 | meet_eq_neg_join ~> inf_eq_neg_sup | |
| 3248 | add_eq_meet_join ~> add_eq_inf_sup | |
| 3249 | meet_0_imp_0 ~> inf_0_imp_0 | |
| 3250 | join_0_imp_0 ~> sup_0_imp_0 | |
| 3251 | meet_0_eq_0 ~> inf_0_eq_0 | |
| 3252 | join_0_eq_0 ~> sup_0_eq_0 | |
| 3253 | neg_meet_eq_join ~> neg_inf_eq_sup | |
| 3254 | neg_join_eq_meet ~> neg_sup_eq_inf | |
| 3255 | join_eq_if ~> sup_eq_if | |
| 3256 | ||
| 3257 | mono_meet ~> mono_inf | |
| 3258 | mono_join ~> mono_sup | |
| 3259 | meet_bool_eq ~> inf_bool_eq | |
| 3260 | join_bool_eq ~> sup_bool_eq | |
| 3261 | meet_fun_eq ~> inf_fun_eq | |
| 3262 | join_fun_eq ~> sup_fun_eq | |
| 3263 | meet_set_eq ~> inf_set_eq | |
| 3264 | join_set_eq ~> sup_set_eq | |
| 3265 | meet1_iff ~> inf1_iff | |
| 3266 | meet2_iff ~> inf2_iff | |
| 3267 | meet1I ~> inf1I | |
| 3268 | meet2I ~> inf2I | |
| 3269 | meet1D1 ~> inf1D1 | |
| 3270 | meet2D1 ~> inf2D1 | |
| 3271 | meet1D2 ~> inf1D2 | |
| 3272 | meet2D2 ~> inf2D2 | |
| 3273 | meet1E ~> inf1E | |
| 3274 | meet2E ~> inf2E | |
| 3275 | join1_iff ~> sup1_iff | |
| 3276 | join2_iff ~> sup2_iff | |
| 3277 | join1I1 ~> sup1I1 | |
| 3278 | join2I1 ~> sup2I1 | |
| 3279 | join1I1 ~> sup1I1 | |
| 3280 | join2I2 ~> sup1I2 | |
| 3281 | join1CI ~> sup1CI | |
| 3282 | join2CI ~> sup2CI | |
| 3283 | join1E ~> sup1E | |
| 3284 | join2E ~> sup2E | |
| 3285 | ||
| 3286 | is_meet_Meet ~> is_meet_Inf | |
| 3287 | Meet_bool_def ~> Inf_bool_def | |
| 3288 | Meet_fun_def ~> Inf_fun_def | |
| 3289 | Meet_greatest ~> Inf_greatest | |
| 3290 | Meet_lower ~> Inf_lower | |
| 3291 | Meet_set_def ~> Inf_set_def | |
| 3292 | ||
| 3293 | Sup_def ~> Sup_Inf | |
| 3294 | Sup_bool_eq ~> Sup_bool_def | |
| 3295 | Sup_fun_eq ~> Sup_fun_def | |
| 3296 | Sup_set_eq ~> Sup_set_def | |
| 3297 | ||
| 3298 | listsp_meetI ~> listsp_infI | |
| 3299 | listsp_meet_eq ~> listsp_inf_eq | |
| 3300 | ||
| 3301 | meet_min ~> inf_min | |
| 3302 | join_max ~> sup_max | |
| 3303 | ||
| 3304 | * Added syntactic class "size"; overloaded constant "size" now has | |
| 3305 | type "'a::size ==> bool" | |
| 3306 | ||
| 24800 | 3307 | * Internal reorganisation of `size' of datatypes: size theorems | 
| 3308 | "foo.size" are no longer subsumed by "foo.simps" (but are still | |
| 3309 | simplification rules by default!); theorems "prod.size" now named | |
| 25184 | 3310 | "*.size". | 
| 3311 | ||
| 3312 | * Class "div" now inherits from class "times" rather than "type". | |
| 3313 | INCOMPATIBILITY. | |
| 24800 | 3314 | |
| 3315 | * HOL/Finite_Set: "name-space" locales Lattice, Distrib_lattice, | |
| 3316 | Linorder etc. have disappeared; operations defined in terms of | |
| 3317 | fold_set now are named Inf_fin, Sup_fin. INCOMPATIBILITY. | |
| 3318 | ||
| 25129 | 3319 | * HOL/Nat: neq0_conv no longer declared as iff. INCOMPATIBILITY. | 
| 3320 | ||
| 24800 | 3321 | * HOL-Word: New extensive library and type for generic, fixed size | 
| 3322 | machine words, with arithemtic, bit-wise, shifting and rotating | |
| 3323 | operations, reflection into int, nat, and bool lists, automation for | |
| 3324 | linear arithmetic (by automatic reflection into nat or int), including | |
| 3325 | lemmas on overflow and monotonicity. Instantiated to all appropriate | |
| 3326 | arithmetic type classes, supporting automatic simplification of | |
| 3327 | numerals on all operations. | |
| 24333 | 3328 | |
| 3329 | * Library/Boolean_Algebra: locales for abstract boolean algebras. | |
| 3330 | ||
| 3331 | * Library/Numeral_Type: numbers as types, e.g. TYPE(32). | |
| 3332 | ||
| 23850 | 3333 | * Code generator library theories: | 
| 24993 | 3334 | - Code_Integer represents HOL integers by big integer literals in target | 
| 23850 | 3335 | languages. | 
| 24993 | 3336 | - Code_Char represents HOL characters by character literals in target | 
| 23850 | 3337 | languages. | 
| 24993 | 3338 | - Code_Char_chr like Code_Char, but also offers treatment of character | 
| 3339 | codes; includes Code_Integer. | |
| 24800 | 3340 | - Executable_Set allows to generate code for finite sets using lists. | 
| 3341 | - Executable_Rat implements rational numbers as triples (sign, enumerator, | |
| 23850 | 3342 | denominator). | 
| 24800 | 3343 | - Executable_Real implements a subset of real numbers, namly those | 
| 23850 | 3344 | representable by rational numbers. | 
| 24800 | 3345 | - Efficient_Nat implements natural numbers by integers, which in general will | 
| 23850 | 3346 | result in higher efficency; pattern matching with 0/Suc is eliminated; | 
| 24993 | 3347 | includes Code_Integer. | 
| 3348 | - Code_Index provides an additional datatype index which is mapped to | |
| 3349 | target-language built-in integers. | |
| 26355 | 3350 | - Code_Message provides an additional datatype message_string which is isomorphic to | 
| 24993 | 3351 | strings; messages are mapped to target-language strings. | 
| 23850 | 3352 | |
| 23783 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3353 | * New package for inductive predicates | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3354 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3355 | An n-ary predicate p with m parameters z_1, ..., z_m can now be defined via | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3356 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3357 | inductive | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3358 | p :: "U_1 => ... => U_m => T_1 => ... => T_n => bool" | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3359 | for z_1 :: U_1 and ... and z_n :: U_m | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3360 | where | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3361 | rule_1: "... ==> p z_1 ... z_m t_1_1 ... t_1_n" | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3362 | | ... | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3363 | |
| 24800 | 3364 | with full support for type-inference, rather than | 
| 23783 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3365 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3366 | consts s :: "U_1 => ... => U_m => (T_1 * ... * T_n) set" | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3367 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3368 | abbreviation p :: "U_1 => ... => U_m => T_1 => ... => T_n => bool" | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3369 | where "p z_1 ... z_m x_1 ... x_n == (x_1, ..., x_n) : s z_1 ... z_m" | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3370 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3371 | inductive "s z_1 ... z_m" | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3372 | intros | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3373 | rule_1: "... ==> (t_1_1, ..., t_1_n) : s z_1 ... z_m" | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3374 | ... | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3375 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3376 | For backward compatibility, there is a wrapper allowing inductive | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3377 | sets to be defined with the new package via | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3378 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3379 | inductive_set | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3380 | s :: "U_1 => ... => U_m => (T_1 * ... * T_n) set" | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3381 | for z_1 :: U_1 and ... and z_n :: U_m | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3382 | where | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3383 | rule_1: "... ==> (t_1_1, ..., t_1_n) : s z_1 ... z_m" | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3384 | | ... | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3385 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3386 | or | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3387 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3388 | inductive_set | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3389 | s :: "U_1 => ... => U_m => (T_1 * ... * T_n) set" | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3390 | and p :: "U_1 => ... => U_m => T_1 => ... => T_n => bool" | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3391 | for z_1 :: U_1 and ... and z_n :: U_m | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3392 | where | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3393 | "p z_1 ... z_m x_1 ... x_n == (x_1, ..., x_n) : s z_1 ... z_m" | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3394 | | rule_1: "... ==> p z_1 ... z_m t_1_1 ... t_1_n" | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3395 | | ... | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3396 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3397 | if the additional syntax "p ..." is required. | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3398 | |
| 25177 | 3399 | Numerous examples can be found in the subdirectories src/HOL/Auth, | 
| 3400 | src/HOL/Bali, src/HOL/Induct, and src/HOL/MicroJava. | |
| 23783 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3401 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3402 | INCOMPATIBILITIES: | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3403 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3404 | - Since declaration and definition of inductive sets or predicates | 
| 24800 | 3405 | is no longer separated, abbreviations involving the newly | 
| 3406 | introduced sets or predicates must be specified together with the | |
| 3407 | introduction rules after the 'where' keyword (see above), rather | |
| 3408 | than before the actual inductive definition. | |
| 3409 | ||
| 3410 | - The variables in induction and elimination rules are now | |
| 3411 | quantified in the order of their occurrence in the introduction | |
| 3412 | rules, rather than in alphabetical order. Since this may break | |
| 3413 | some proofs, these proofs either have to be repaired, e.g. by | |
| 3414 |     reordering the variables a_i_1 ... a_i_{k_i} in Isar 'case'
 | |
| 3415 | statements of the form | |
| 23783 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3416 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3417 |       case (rule_i a_i_1 ... a_i_{k_i})
 | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3418 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3419 | or the old order of quantification has to be restored by explicitly adding | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3420 | meta-level quantifiers in the introduction rules, i.e. | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3421 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3422 |       | rule_i: "!!a_i_1 ... a_i_{k_i}. ... ==> p z_1 ... z_m t_i_1 ... t_i_n"
 | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3423 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3424 | - The format of the elimination rules is now | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3425 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3426 | p z_1 ... z_m x_1 ... x_n ==> | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3427 |         (!!a_1_1 ... a_1_{k_1}. x_1 = t_1_1 ==> ... ==> x_n = t_1_n ==> ... ==> P)
 | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3428 | ==> ... ==> P | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3429 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3430 | for predicates and | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3431 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3432 | (x_1, ..., x_n) : s z_1 ... z_m ==> | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3433 |         (!!a_1_1 ... a_1_{k_1}. x_1 = t_1_1 ==> ... ==> x_n = t_1_n ==> ... ==> P)
 | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3434 | ==> ... ==> P | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3435 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3436 | for sets rather than | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3437 | |
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3438 | x : s z_1 ... z_m ==> | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3439 |         (!!a_1_1 ... a_1_{k_1}. x = (t_1_1, ..., t_1_n) ==> ... ==> P)
 | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3440 | ==> ... ==> P | 
| 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3441 | |
| 24800 | 3442 | This may require terms in goals to be expanded to n-tuples | 
| 3443 | (e.g. using case_tac or simplification with the split_paired_all | |
| 3444 | rule) before the above elimination rule is applicable. | |
| 3445 | ||
| 3446 | - The elimination or case analysis rules for (mutually) inductive | |
| 3447 | sets or predicates are now called "p_1.cases" ... "p_k.cases". The | |
| 3448 | list of rules "p_1_..._p_k.elims" is no longer available. | |
| 23783 
e4d514f81d95
Added entry for new inductive definition package.
 berghofe parents: 
23565diff
changeset | 3449 | |
| 25198 | 3450 | * New package "function"/"fun" for general recursive functions, | 
| 3451 | supporting mutual and nested recursion, definitions in local contexts, | |
| 3452 | more general pattern matching and partiality. See HOL/ex/Fundefs.thy | |
| 3453 | for small examples, and the separate tutorial on the function | |
| 3454 | package. The old recdef "package" is still available as before, but | |
| 3455 | users are encouraged to use the new package. | |
| 3456 | ||
| 3457 | * Method "lexicographic_order" automatically synthesizes termination | |
| 3458 | relations as lexicographic combinations of size measures. | |
| 3459 | ||
| 24800 | 3460 | * Case-expressions allow arbitrary constructor-patterns (including | 
| 3461 | "_") and take their order into account, like in functional | |
| 3462 | programming. Internally, this is translated into nested | |
| 3463 | case-expressions; missing cases are added and mapped to the predefined | |
| 3464 | constant "undefined". In complicated cases printing may no longer show | |
| 3465 | the original input but the internal form. Lambda-abstractions allow | |
| 3466 | the same form of pattern matching: "% pat1 => e1 | ..." is an | |
| 3467 | abbreviation for "%x. case x of pat1 => e1 | ..." where x is a new | |
| 3468 | variable. | |
| 23564 | 3469 | |
| 23468 | 3470 | * IntDef: The constant "int :: nat => int" has been removed; now "int" | 
| 24800 | 3471 | is an abbreviation for "of_nat :: nat => int". The simplification | 
| 3472 | rules for "of_nat" have been changed to work like "int" did | |
| 3473 | previously. Potential INCOMPATIBILITY: | |
| 23468 | 3474 | - "of_nat (Suc m)" simplifies to "1 + of_nat m" instead of "of_nat m + 1" | 
| 3475 | - of_nat_diff and of_nat_mult are no longer default simp rules | |
| 23377 | 3476 | |
| 23295 
86e225406859
Method "algebra" solves polynomial equations over (semi)rings
 chaieb parents: 
23251diff
changeset | 3477 | * Method "algebra" solves polynomial equations over (semi)rings using | 
| 24800 | 3478 | Groebner bases. The (semi)ring structure is defined by locales and the | 
| 3479 | tool setup depends on that generic context. Installing the method for | |
| 3480 | a specific type involves instantiating the locale and possibly adding | |
| 3481 | declarations for computation on the coefficients. The method is | |
| 3482 | already instantiated for natural numbers and for the axiomatic class | |
| 3483 | of idoms with numerals. See also the paper by Chaieb and Wenzel at | |
| 3484 | CALCULEMUS 2007 for the general principles underlying this | |
| 3485 | architecture of context-aware proof-tools. | |
| 3486 | ||
| 25033 | 3487 | * Method "ferrack" implements quantifier elimination over | 
| 3488 | special-purpose dense linear orders using locales (analogous to | |
| 3489 | "algebra"). The method is already installed for class | |
| 3490 | {ordered_field,recpower,number_ring} which subsumes real, hyperreal,
 | |
| 3491 | rat, etc. | |
| 3492 | ||
| 24800 | 3493 | * Former constant "List.op @" now named "List.append". Use ML | 
| 3494 | antiquotations @{const_name List.append} or @{term " ... @ ... "} to
 | |
| 3495 | circumvent possible incompatibilities when working on ML level. | |
| 3496 | ||
| 24996 | 3497 | * primrec: missing cases mapped to "undefined" instead of "arbitrary". | 
| 22845 | 3498 | |
| 24800 | 3499 | * New function listsum :: 'a list => 'a for arbitrary monoids. | 
| 3500 | Special syntax: "SUM x <- xs. f x" (and latex variants) | |
| 3501 | ||
| 3502 | * New syntax for Haskell-like list comprehension (input only), eg. | |
| 25177 | 3503 | [(x,y). x <- xs, y <- ys, x ~= y], see also src/HOL/List.thy. | 
| 24800 | 3504 | |
| 3505 | * The special syntax for function "filter" has changed from [x : | |
| 3506 | xs. P] to [x <- xs. P] to avoid an ambiguity caused by list | |
| 3507 | comprehension syntax, and for uniformity. INCOMPATIBILITY. | |
| 3508 | ||
| 3509 | * [a..b] is now defined for arbitrary linear orders. It used to be | |
| 3510 | defined on nat only, as an abbreviation for [a..<Suc b] | |
| 3511 | INCOMPATIBILITY. | |
| 3512 | ||
| 3513 | * Renamed lemma "set_take_whileD" to "set_takeWhileD". | |
| 3514 | ||
| 25177 | 3515 | * New functions "sorted" and "sort" in src/HOL/List.thy. | 
| 24800 | 3516 | |
| 3517 | * New lemma collection field_simps (an extension of ring_simps) for | |
| 3518 | manipulating (in)equations involving division. Multiplies with all | |
| 3519 | denominators that can be proved to be non-zero (in equations) or | |
| 3520 | positive/negative (in inequations). | |
| 23480 | 3521 | |
| 3522 | * Lemma collections ring_eq_simps, group_eq_simps and ring_distrib | |
| 24800 | 3523 | have been improved and renamed to ring_simps, group_simps and | 
| 3524 | ring_distribs. Removed lemmas field_xyz in theory Ring_and_Field | |
| 3525 | because they were subsumed by lemmas xyz. INCOMPATIBILITY. | |
| 3526 | ||
| 25177 | 3527 | * Theory Library/Commutative_Ring: switched from recdef to function | 
| 24800 | 3528 | package; constants add, mul, pow now curried. Infix syntax for | 
| 3529 | algebraic operations. | |
| 22735 | 3530 | |
| 24800 | 3531 | * Dropped redundant lemma def_imp_eq in favor of meta_eq_to_obj_eq. | 
| 22218 | 3532 | INCOMPATIBILITY. | 
| 3533 | ||
| 24800 | 3534 | * Dropped redundant lemma if_def2 in favor of if_bool_eq_conj. | 
| 22218 | 3535 | INCOMPATIBILITY. | 
| 3536 | ||
| 22126 | 3537 | * HOL/records: generalised field-update to take a function on the | 
| 3538 | field rather than the new value: r(|A := x|) is translated to A_update | |
| 3539 | (K x) r The K-combinator that is internally used is called K_record. | |
| 21226 
a607ae87ee81
field-update in records is generalised to take a function on the field
 schirmer parents: 
21215diff
changeset | 3540 | INCOMPATIBILITY: Usage of the plain update functions has to be | 
| 
a607ae87ee81
field-update in records is generalised to take a function on the field
 schirmer parents: 
21215diff
changeset | 3541 | adapted. | 
| 
a607ae87ee81
field-update in records is generalised to take a function on the field
 schirmer parents: 
21215diff
changeset | 3542 | |
| 24800 | 3543 | * Class "semiring_0" now contains annihilation axioms x * 0 = 0 and 0 | 
| 3544 | * x = 0, which are required for a semiring. Richer structures do not | |
| 3545 | inherit from semiring_0 anymore, because this property is a theorem | |
| 3546 | there, not an axiom. INCOMPATIBILITY: In instances of semiring_0, | |
| 3547 | there is more to prove, but this is mostly trivial. | |
| 3548 | ||
| 3549 | * Class "recpower" is generalized to arbitrary monoids, not just | |
| 3550 | commutative semirings. INCOMPATIBILITY: may need to incorporate | |
| 25163 | 3551 | commutativity or semiring properties additionally. | 
| 21215 
7c9337a0e30a
made locale partial_order compatible with axclass order
 haftmann parents: 
21209diff
changeset | 3552 | |
| 21099 | 3553 | * Constant "List.list_all2" in List.thy now uses authentic syntax. | 
| 24800 | 3554 | INCOMPATIBILITY: translations containing list_all2 may go wrong, | 
| 3555 | better use 'abbreviation'. | |
| 3556 | ||
| 3557 | * Renamed constant "List.op mem" to "List.member". INCOMPATIBILITY. | |
| 3558 | ||
| 22126 | 3559 | * Numeral syntax: type 'bin' which was a mere type copy of 'int' has | 
| 24800 | 3560 | been abandoned in favour of plain 'int'. INCOMPATIBILITY -- | 
| 22126 | 3561 | significant changes for setting up numeral syntax for types: | 
| 24800 | 3562 | - New constants Numeral.pred and Numeral.succ instead | 
| 20485 | 3563 | of former Numeral.bin_pred and Numeral.bin_succ. | 
| 3564 | - Use integer operations instead of bin_add, bin_mult and so on. | |
| 3565 | - Numeral simplification theorems named Numeral.numeral_simps instead of Bin_simps. | |
| 3566 | - ML structure Bin_Simprocs now named Int_Numeral_Base_Simprocs. | |
| 3567 | ||
| 25177 | 3568 | See src/HOL/Integ/IntArith.thy for an example setup. | 
| 3569 | ||
| 3570 | * Command 'normal_form' computes the normal form of a term that may | |
| 3571 | contain free variables. For example ``normal_form "rev [a, b, c]"'' | |
| 3572 | produces ``[b, c, a]'' (without proof). This command is suitable for | |
| 3573 | heavy-duty computations because the functions are compiled to ML | |
| 3574 | first. Correspondingly, a method "normalization" is provided. See | |
| 3575 | further src/HOL/ex/NormalForm.thy and src/Tools/nbe.ML. | |
| 19895 | 3576 | |
| 17996 | 3577 | * Alternative iff syntax "A <-> B" for equality on bool (with priority | 
| 3578 | 25 like -->); output depends on the "iff" print_mode, the default is | |
| 3579 | "A = B" (with priority 50). | |
| 3580 | ||
| 21265 | 3581 | * Relations less (<) and less_eq (<=) are also available on type bool. | 
| 3582 | Modified syntax to disallow nesting without explicit parentheses, | |
| 24800 | 3583 | e.g. "(x < y) < z" or "x < (y < z)", but NOT "x < y < z". Potential | 
| 3584 | INCOMPATIBILITY. | |
| 21265 | 3585 | |
| 18674 | 3586 | * "LEAST x:A. P" expands to "LEAST x. x:A & P" (input only). | 
| 3587 | ||
| 20716 
a6686a8e1b68
Changed precedence of "op O" (relation composition) from 60 to 75.
 krauss parents: 
20712diff
changeset | 3588 | * Relation composition operator "op O" now has precedence 75 and binds | 
| 
a6686a8e1b68
Changed precedence of "op O" (relation composition) from 60 to 75.
 krauss parents: 
20712diff
changeset | 3589 | stronger than union and intersection. INCOMPATIBILITY. | 
| 
a6686a8e1b68
Changed precedence of "op O" (relation composition) from 60 to 75.
 krauss parents: 
20712diff
changeset | 3590 | |
| 22126 | 3591 | * The old set interval syntax "{m..n(}" (and relatives) has been
 | 
| 3592 | removed.  Use "{m..<n}" (and relatives) instead.
 | |
| 19377 | 3593 | |
| 17865 | 3594 | * In the context of the assumption "~(s = t)" the Simplifier rewrites | 
| 24800 | 3595 | "t = s" to False (by simproc "neq"). INCOMPATIBILITY, consider using | 
| 3596 | ``declare [[simproc del: neq]]''. | |
| 3597 | ||
| 3598 | * Simplifier: "m dvd n" where m and n are numbers is evaluated to | |
| 3599 | True/False. | |
| 3600 | ||
| 3601 | * Theorem Cons_eq_map_conv no longer declared as "simp". | |
| 19211 | 3602 | |
| 19279 | 3603 | * Theorem setsum_mult renamed to setsum_right_distrib. | 
| 3604 | ||
| 19211 | 3605 | * Prefer ex1I over ex_ex1I in single-step reasoning, e.g. by the | 
| 22126 | 3606 | ``rule'' method. | 
| 3607 | ||
| 24800 | 3608 | * Reimplemented methods "sat" and "satx", with several improvements: | 
| 3609 | goals no longer need to be stated as "<prems> ==> False", equivalences | |
| 3610 | (i.e. "=" on type bool) are handled, variable names of the form | |
| 3611 | "lit_<n>" are no longer reserved, significant speedup. | |
| 3612 | ||
| 3613 | * Methods "sat" and "satx" can now replay MiniSat proof traces. | |
| 22126 | 3614 | zChaff is still supported as well. | 
| 3615 | ||
| 3616 | * 'inductive' and 'datatype': provide projections of mutual rules, | |
| 3617 | bundled as foo_bar.inducts; | |
| 3618 | ||
| 3619 | * Library: moved theories Parity, GCD, Binomial, Infinite_Set to | |
| 3620 | Library. | |
| 21256 | 3621 | |
| 3622 | * Library: moved theory Accessible_Part to main HOL. | |
| 19572 
a4b3176f19dd
* Library: theory Accessible_Part has been move to main HOL.
 wenzelm parents: 
19508diff
changeset | 3623 | |
| 18446 | 3624 | * Library: added theory Coinductive_List of potentially infinite lists | 
| 3625 | as greatest fixed-point. | |
| 18399 | 3626 | |
| 19254 | 3627 | * Library: added theory AssocList which implements (finite) maps as | 
| 19252 | 3628 | association lists. | 
| 17809 
195045659c06
Tactics sat and satx reimplemented, several improvements
 webertj parents: 
17806diff
changeset | 3629 | |
| 24800 | 3630 | * Method "evaluation" solves goals (i.e. a boolean expression) | 
| 3631 | efficiently by compiling it to ML. The goal is "proved" (via an | |
| 3632 | oracle) if it evaluates to True. | |
| 20807 | 3633 | |
| 3634 | * Linear arithmetic now splits certain operators (e.g. min, max, abs) | |
| 24800 | 3635 | also when invoked by the simplifier. This results in the Simplifier | 
| 3636 | being more powerful on arithmetic goals. INCOMPATIBILITY. | |
| 3637 | Configuration option fast_arith_split_limit=0 recovers the old | |
| 3638 | behavior. | |
| 20217 
25b068a99d2b
linear arithmetic splits certain operators (e.g. min, max, abs)
 webertj parents: 
20188diff
changeset | 3639 | |
| 22126 | 3640 | * Support for hex (0x20) and binary (0b1001) numerals. | 
| 19254 | 3641 | |
| 20807 | 3642 | * New method: reify eqs (t), where eqs are equations for an | 
| 3643 | interpretation I :: 'a list => 'b => 'c and t::'c is an optional | |
| 3644 | parameter, computes a term s::'b and a list xs::'a list and proves the | |
| 3645 | theorem I xs s = t. This is also known as reification or quoting. The | |
| 3646 | resulting theorem is applied to the subgoal to substitute t with I xs | |
| 3647 | s. If t is omitted, the subgoal itself is reified. | |
| 3648 | ||
| 3649 | * New method: reflection corr_thm eqs (t). The parameters eqs and (t) | |
| 3650 | are as explained above. corr_thm is a theorem for I vs (f t) = I vs t, | |
| 3651 | where f is supposed to be a computable function (in the sense of code | |
| 3652 | generattion). The method uses reify to compute s and xs as above then | |
| 3653 | applies corr_thm and uses normalization by evaluation to "prove" f s = | |
| 3654 | r and finally gets the theorem t = r, which is again applied to the | |
| 25177 | 3655 | subgoal. An Example is available in src/HOL/ex/ReflectionEx.thy. | 
| 3656 | ||
| 3657 | * Reflection: Automatic reification now handels binding, an example is | |
| 3658 | available in src/HOL/ex/ReflectionEx.thy | |
| 20807 | 3659 | |
| 25397 | 3660 | * HOL-Statespace: ``State Spaces: The Locale Way'' introduces a | 
| 25409 | 3661 | command 'statespace' that is similar to 'record', but introduces an | 
| 25397 | 3662 | abstract specification based on the locale infrastructure instead of | 
| 3663 | HOL types. This leads to extra flexibility in composing state spaces, | |
| 3664 | in particular multiple inheritance and renaming of components. | |
| 3665 | ||
| 3666 | ||
| 19653 | 3667 | *** HOL-Complex *** | 
| 3668 | ||
| 22971 | 3669 | * Hyperreal: Functions root and sqrt are now defined on negative real | 
| 3670 | inputs so that root n (- x) = - root n x and sqrt (- x) = - sqrt x. | |
| 3671 | Nonnegativity side conditions have been removed from many lemmas, so | |
| 3672 | that more subgoals may now be solved by simplification; potential | |
| 3673 | INCOMPATIBILITY. | |
| 3674 | ||
| 24800 | 3675 | * Real: new type classes formalize real normed vector spaces and | 
| 21791 | 3676 | algebras, using new overloaded constants scaleR :: real => 'a => 'a | 
| 3677 | and norm :: 'a => real. | |
| 3678 | ||
| 24800 | 3679 | * Real: constant of_real :: real => 'a::real_algebra_1 injects from | 
| 3680 | reals into other types. The overloaded constant Reals :: 'a set is now | |
| 3681 | defined as range of_real; potential INCOMPATIBILITY. | |
| 3682 | ||
| 3683 | * Real: proper support for ML code generation, including 'quickcheck'. | |
| 23013 | 3684 | Reals are implemented as arbitrary precision rationals. | 
| 3685 | ||
| 22126 | 3686 | * Hyperreal: Several constants that previously worked only for the | 
| 3687 | reals have been generalized, so they now work over arbitrary vector | |
| 3688 | spaces. Type annotations may need to be added in some cases; potential | |
| 3689 | INCOMPATIBILITY. | |
| 21791 | 3690 | |
| 22972 
3e96b98d37c6
generalized sgn function to work on any real normed vector space
 huffman parents: 
22971diff
changeset | 3691 |   Infinitesimal  :: ('a::real_normed_vector) star set
 | 
| 
3e96b98d37c6
generalized sgn function to work on any real normed vector space
 huffman parents: 
22971diff
changeset | 3692 |   HFinite        :: ('a::real_normed_vector) star set
 | 
| 
3e96b98d37c6
generalized sgn function to work on any real normed vector space
 huffman parents: 
22971diff
changeset | 3693 |   HInfinite      :: ('a::real_normed_vector) star set
 | 
| 21791 | 3694 |   approx         :: ('a::real_normed_vector) star => 'a star => bool
 | 
| 3695 |   monad          :: ('a::real_normed_vector) star => 'a star set
 | |
| 3696 |   galaxy         :: ('a::real_normed_vector) star => 'a star set
 | |
| 22972 
3e96b98d37c6
generalized sgn function to work on any real normed vector space
 huffman parents: 
22971diff
changeset | 3697 | (NS)LIMSEQ :: [nat => 'a::real_normed_vector, 'a] => bool | 
| 21791 | 3698 | (NS)convergent :: (nat => 'a::real_normed_vector) => bool | 
| 3699 | (NS)Bseq :: (nat => 'a::real_normed_vector) => bool | |
| 3700 | (NS)Cauchy :: (nat => 'a::real_normed_vector) => bool | |
| 3701 | (NS)LIM :: ['a::real_normed_vector => 'b::real_normed_vector, 'a, 'b] => bool | |
| 3702 | is(NS)Cont :: ['a::real_normed_vector => 'b::real_normed_vector, 'a] => bool | |
| 3703 | deriv :: ['a::real_normed_field => 'a, 'a, 'a] => bool | |
| 22972 
3e96b98d37c6
generalized sgn function to work on any real normed vector space
 huffman parents: 
22971diff
changeset | 3704 | sgn :: 'a::real_normed_vector => 'a | 
| 23116 | 3705 |   exp            :: 'a::{recpower,real_normed_field,banach} => 'a
 | 
| 21791 | 3706 | |
| 3707 | * Complex: Some complex-specific constants are now abbreviations for | |
| 22126 | 3708 | overloaded ones: complex_of_real = of_real, cmod = norm, hcmod = | 
| 3709 | hnorm. Other constants have been entirely removed in favor of the | |
| 3710 | polymorphic versions (INCOMPATIBILITY): | |
| 21791 | 3711 | |
| 3712 | approx <-- capprox | |
| 3713 | HFinite <-- CFinite | |
| 3714 | HInfinite <-- CInfinite | |
| 3715 | Infinitesimal <-- CInfinitesimal | |
| 3716 | monad <-- cmonad | |
| 3717 | galaxy <-- cgalaxy | |
| 3718 | (NS)LIM <-- (NS)CLIM, (NS)CRLIM | |
| 3719 | is(NS)Cont <-- is(NS)Contc, is(NS)contCR | |
| 3720 | (ns)deriv <-- (ns)cderiv | |
| 3721 | ||
| 19653 | 3722 | |
| 24801 | 3723 | *** HOL-Algebra *** | 
| 3724 | ||
| 3725 | * Formalisation of ideals and the quotient construction over rings. | |
| 3726 | ||
| 3727 | * Order and lattice theory no longer based on records. | |
| 3728 | INCOMPATIBILITY. | |
| 3729 | ||
| 3730 | * Renamed lemmas least_carrier -> least_closed and greatest_carrier -> | |
| 3731 | greatest_closed. INCOMPATIBILITY. | |
| 3732 | ||
| 3733 | * Method algebra is now set up via an attribute. For examples see | |
| 3734 | Ring.thy. INCOMPATIBILITY: the method is now weaker on combinations | |
| 3735 | of algebraic structures. | |
| 3736 | ||
| 3737 | * Renamed theory CRing to Ring. | |
| 3738 | ||
| 3739 | ||
| 3740 | *** HOL-Nominal *** | |
| 3741 | ||
| 25148 | 3742 | * Substantial, yet incomplete support for nominal datatypes (binding | 
| 25177 | 3743 | structures) based on HOL-Nominal logic. See src/HOL/Nominal and | 
| 3744 | src/HOL/Nominal/Examples. Prospective users should consult | |
| 25148 | 3745 | http://isabelle.in.tum.de/nominal/ | 
| 3746 | ||
| 24801 | 3747 | |
| 17878 | 3748 | *** ML *** | 
| 3749 | ||
| 24643 | 3750 | * ML basics: just one true type int, which coincides with IntInf.int | 
| 3751 | (even on SML/NJ). | |
| 3752 | ||
| 22138 | 3753 | * ML within Isar: antiquotations allow to embed statically-checked | 
| 3754 | formal entities in the source, referring to the context available at | |
| 3755 | compile-time. For example: | |
| 3756 | ||
| 25142 | 3757 | ML {* @{sort "{zero,one}"} *}
 | 
| 22138 | 3758 | ML {* @{typ "'a => 'b"} *}
 | 
| 3759 | ML {* @{term "%x. x"} *}
 | |
| 3760 | ML {* @{prop "x == y"} *}
 | |
| 3761 | ML {* @{ctyp "'a => 'b"} *}
 | |
| 3762 | ML {* @{cterm "%x. x"} *}
 | |
| 3763 | ML {* @{cprop "x == y"} *}
 | |
| 3764 | ML {* @{thm asm_rl} *}
 | |
| 3765 | ML {* @{thms asm_rl} *}
 | |
| 24692 | 3766 | ML {* @{type_name c} *}
 | 
| 25142 | 3767 | ML {* @{type_syntax c} *}
 | 
| 22376 | 3768 | ML {* @{const_name c} *}
 | 
| 3769 | ML {* @{const_syntax c} *}
 | |
| 22138 | 3770 | ML {* @{context} *}
 | 
| 3771 | ML {* @{theory} *}
 | |
| 3772 | ML {* @{theory Pure} *}
 | |
| 24692 | 3773 | ML {* @{theory_ref} *}
 | 
| 3774 | ML {* @{theory_ref Pure} *}
 | |
| 22138 | 3775 | ML {* @{simpset} *}
 | 
| 3776 | ML {* @{claset} *}
 | |
| 3777 | ML {* @{clasimpset} *}
 | |
| 3778 | ||
| 22151 | 3779 | The same works for sources being ``used'' within an Isar context. | 
| 3780 | ||
| 22152 | 3781 | * ML in Isar: improved error reporting; extra verbosity with | 
| 24706 
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
 wenzelm parents: 
24699diff
changeset | 3782 | ML_Context.trace enabled. | 
| 22152 | 3783 | |
| 19032 | 3784 | * Pure/General/table.ML: the join operations now works via exceptions | 
| 24706 
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
 wenzelm parents: 
24699diff
changeset | 3785 | DUP/SAME instead of type option. This is simpler in simple cases, and | 
| 19081 
085b5badb8de
* Isar/locales: new derived specification elements 'definition', 'abbreviation', 'axiomatization';
 wenzelm parents: 
19034diff
changeset | 3786 | admits slightly more efficient complex applications. | 
| 18446 | 3787 | |
| 24800 | 3788 | * Pure: 'advanced' translation functions (parse_translation etc.) now | 
| 3789 | use Context.generic instead of just theory. | |
| 3790 | ||
| 18642 | 3791 | * Pure: datatype Context.generic joins theory/Proof.context and | 
| 18644 | 3792 | provides some facilities for code that works in either kind of | 
| 18642 | 3793 | context, notably GenericDataFun for uniform theory and proof data. | 
| 3794 | ||
| 18737 | 3795 | * Pure: simplified internal attribute type, which is now always | 
| 24706 
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
 wenzelm parents: 
24699diff
changeset | 3796 | Context.generic * thm -> Context.generic * thm. Global (theory) vs. | 
| 
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
 wenzelm parents: 
24699diff
changeset | 3797 | local (Proof.context) attributes have been discontinued, while | 
| 
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
 wenzelm parents: 
24699diff
changeset | 3798 | minimizing code duplication. Thm.rule_attribute and | 
| 
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
 wenzelm parents: 
24699diff
changeset | 3799 | Thm.declaration_attribute build canonical attributes; see also structure | 
| 
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
 wenzelm parents: 
24699diff
changeset | 3800 | Context for further operations on Context.generic, notably | 
| 
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
 wenzelm parents: 
24699diff
changeset | 3801 | GenericDataFun. INCOMPATIBILITY, need to adapt attribute type | 
| 19006 
2427684c201c
* ML/Pure: generic Args/Attrib syntax everywhere;
 wenzelm parents: 
18979diff
changeset | 3802 | declarations and definitions. | 
| 
2427684c201c
* ML/Pure: generic Args/Attrib syntax everywhere;
 wenzelm parents: 
18979diff
changeset | 3803 | |
| 24800 | 3804 | * Context data interfaces (Theory/Proof/GenericDataFun): removed | 
| 3805 | name/print, uninitialized data defaults to ad-hoc copy of empty value, | |
| 3806 | init only required for impure data. INCOMPATIBILITY: empty really need | |
| 3807 | to be empty (no dependencies on theory content!) | |
| 3808 | ||
| 19508 | 3809 | * Pure/kernel: consts certification ignores sort constraints given in | 
| 24800 | 3810 | signature declarations. (This information is not relevant to the | 
| 3811 | logic, but only for type inference.) SIGNIFICANT INTERNAL CHANGE, | |
| 3812 | potential INCOMPATIBILITY. | |
| 19508 | 3813 | |
| 3814 | * Pure: axiomatic type classes are now purely definitional, with | |
| 3815 | explicit proofs of class axioms and super class relations performed | |
| 24706 
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
 wenzelm parents: 
24699diff
changeset | 3816 | internally. See Pure/axclass.ML for the main internal interfaces -- | 
| 36856 
b343091e81d8
reverted parts of 7902dc7ea11d -- note that NEWS of published Isabelle releases are essentially read-only;
 wenzelm parents: 
36849diff
changeset | 3817 | notably AxClass.define_class supercedes AxClass.add_axclass, and | 
| 24706 
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
 wenzelm parents: 
24699diff
changeset | 3818 | AxClass.axiomatize_class/classrel/arity supersede | 
| 19508 | 3819 | Sign.add_classes/classrel/arities. | 
| 3820 | ||
| 19006 
2427684c201c
* ML/Pure: generic Args/Attrib syntax everywhere;
 wenzelm parents: 
18979diff
changeset | 3821 | * Pure/Isar: Args/Attrib parsers operate on Context.generic -- | 
| 
2427684c201c
* ML/Pure: generic Args/Attrib syntax everywhere;
 wenzelm parents: 
18979diff
changeset | 3822 | global/local versions on theory vs. Proof.context have been | 
| 
2427684c201c
* ML/Pure: generic Args/Attrib syntax everywhere;
 wenzelm parents: 
18979diff
changeset | 3823 | discontinued; Attrib.syntax and Method.syntax have been adapted | 
| 
2427684c201c
* ML/Pure: generic Args/Attrib syntax everywhere;
 wenzelm parents: 
18979diff
changeset | 3824 | accordingly. INCOMPATIBILITY, need to adapt parser expressions for | 
| 
2427684c201c
* ML/Pure: generic Args/Attrib syntax everywhere;
 wenzelm parents: 
18979diff
changeset | 3825 | attributes, methods, etc. | 
| 18642 | 3826 | |
| 18446 | 3827 | * Pure: several functions of signature "... -> theory -> theory * ..." | 
| 3828 | have been reoriented to "... -> theory -> ... * theory" in order to | |
| 3829 | allow natural usage in combination with the ||>, ||>>, |-> and | |
| 3830 | fold_map combinators. | |
| 18051 | 3831 | |
| 21647 
fccafa917a68
* Pure: official theorem names and additional comments are now strictly separate.
 wenzelm parents: 
21595diff
changeset | 3832 | * Pure: official theorem names (closed derivations) and additional | 
| 
fccafa917a68
* Pure: official theorem names and additional comments are now strictly separate.
 wenzelm parents: 
21595diff
changeset | 3833 | comments (tags) are now strictly separate. Name hints -- which are | 
| 
fccafa917a68
* Pure: official theorem names and additional comments are now strictly separate.
 wenzelm parents: 
21595diff
changeset | 3834 | maintained as tags -- may be attached any time without affecting the | 
| 
fccafa917a68
* Pure: official theorem names and additional comments are now strictly separate.
 wenzelm parents: 
21595diff
changeset | 3835 | derivation. | 
| 
fccafa917a68
* Pure: official theorem names and additional comments are now strictly separate.
 wenzelm parents: 
21595diff
changeset | 3836 | |
| 18020 | 3837 | * Pure: primitive rule lift_rule now takes goal cterm instead of an | 
| 18145 | 3838 | actual goal state (thm). Use Thm.lift_rule (Thm.cprem_of st i) to | 
| 18020 | 3839 | achieve the old behaviour. | 
| 3840 | ||
| 3841 | * Pure: the "Goal" constant is now called "prop", supporting a | |
| 3842 | slightly more general idea of ``protecting'' meta-level rule | |
| 3843 | statements. | |
| 3844 | ||
| 20040 
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
 wenzelm parents: 
20013diff
changeset | 3845 | * Pure: Logic.(un)varify only works in a global context, which is now | 
| 
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
 wenzelm parents: 
20013diff
changeset | 3846 | enforced instead of silently assumed. INCOMPATIBILITY, may use | 
| 
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
 wenzelm parents: 
20013diff
changeset | 3847 | Logic.legacy_(un)varify as temporary workaround. | 
| 
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
 wenzelm parents: 
20013diff
changeset | 3848 | |
| 20090 | 3849 | * Pure: structure Name provides scalable operations for generating | 
| 3850 | internal variable names, notably Name.variants etc. This replaces | |
| 3851 | some popular functions from term.ML: | |
| 3852 | ||
| 3853 | Term.variant -> Name.variant | |
| 24800 | 3854 | Term.variantlist -> Name.variant_list | 
| 20090 | 3855 | Term.invent_names -> Name.invent_list | 
| 3856 | ||
| 3857 | Note that low-level renaming rarely occurs in new code -- operations | |
| 3858 | from structure Variable are used instead (see below). | |
| 3859 | ||
| 20040 
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
 wenzelm parents: 
20013diff
changeset | 3860 | * Pure: structure Variable provides fundamental operations for proper | 
| 
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
 wenzelm parents: 
20013diff
changeset | 3861 | treatment of fixed/schematic variables in a context. For example, | 
| 
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
 wenzelm parents: 
20013diff
changeset | 3862 | Variable.import introduces fixes for schematics of given facts and | 
| 
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
 wenzelm parents: 
20013diff
changeset | 3863 | Variable.export reverses the effect (up to renaming) -- this replaces | 
| 
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
 wenzelm parents: 
20013diff
changeset | 3864 | various freeze_thaw operations. | 
| 
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
 wenzelm parents: 
20013diff
changeset | 3865 | |
| 18567 | 3866 | * Pure: structure Goal provides simple interfaces for | 
| 17981 
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
 wenzelm parents: 
17918diff
changeset | 3867 | init/conclude/finish and tactical prove operations (replacing former | 
| 20040 
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
 wenzelm parents: 
20013diff
changeset | 3868 | Tactic.prove). Goal.prove is the canonical way to prove results | 
| 
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
 wenzelm parents: 
20013diff
changeset | 3869 | within a given context; Goal.prove_global is a degraded version for | 
| 
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
 wenzelm parents: 
20013diff
changeset | 3870 | theory level goals, including a global Drule.standard. Note that | 
| 
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
 wenzelm parents: 
20013diff
changeset | 3871 | OldGoals.prove_goalw_cterm has long been obsolete, since it is | 
| 
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
 wenzelm parents: 
20013diff
changeset | 3872 | ill-behaved in a local proof context (e.g. with local fixes/assumes or | 
| 
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
 wenzelm parents: 
20013diff
changeset | 3873 | in a locale context). | 
| 17981 
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
 wenzelm parents: 
17918diff
changeset | 3874 | |
| 24706 
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
 wenzelm parents: 
24699diff
changeset | 3875 | * Pure/Syntax: generic interfaces for parsing (Syntax.parse_term etc.) | 
| 
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
 wenzelm parents: 
24699diff
changeset | 3876 | and type checking (Syntax.check_term etc.), with common combinations | 
| 
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
 wenzelm parents: 
24699diff
changeset | 3877 | (Syntax.read_term etc.). These supersede former Sign.read_term etc. | 
| 
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
 wenzelm parents: 
24699diff
changeset | 3878 | which are considered legacy and await removal. | 
| 
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
 wenzelm parents: 
24699diff
changeset | 3879 | |
| 24920 | 3880 | * Pure/Syntax: generic interfaces for type unchecking | 
| 3881 | (Syntax.uncheck_terms etc.) and unparsing (Syntax.unparse_term etc.), | |
| 3882 | with common combinations (Syntax.pretty_term, Syntax.string_of_term | |
| 3883 | etc.). Former Sign.pretty_term, Sign.string_of_term etc. are still | |
| 24924 | 3884 | available for convenience, but refer to the very same operations using | 
| 3885 | a mere theory instead of a full context. | |
| 24920 | 3886 | |
| 18815 
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
 wenzelm parents: 
18738diff
changeset | 3887 | * Isar: simplified treatment of user-level errors, using exception | 
| 18687 | 3888 | ERROR of string uniformly. Function error now merely raises ERROR, | 
| 18686 
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
 wenzelm parents: 
18674diff
changeset | 3889 | without any side effect on output channels. The Isar toplevel takes | 
| 
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
 wenzelm parents: 
18674diff
changeset | 3890 | care of proper display of ERROR exceptions. ML code may use plain | 
| 
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
 wenzelm parents: 
18674diff
changeset | 3891 | handle/can/try; cat_error may be used to concatenate errors like this: | 
| 
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
 wenzelm parents: 
18674diff
changeset | 3892 | |
| 
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
 wenzelm parents: 
18674diff
changeset | 3893 | ... handle ERROR msg => cat_error msg "..." | 
| 
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
 wenzelm parents: 
18674diff
changeset | 3894 | |
| 
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
 wenzelm parents: 
18674diff
changeset | 3895 | Toplevel ML code (run directly or through the Isar toplevel) may be | 
| 18687 | 3896 | embedded into the Isar toplevel with exception display/debug like | 
| 3897 | this: | |
| 18686 
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
 wenzelm parents: 
18674diff
changeset | 3898 | |
| 
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
 wenzelm parents: 
18674diff
changeset | 3899 | Isar.toplevel (fn () => ...) | 
| 
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
 wenzelm parents: 
18674diff
changeset | 3900 | |
| 
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
 wenzelm parents: 
18674diff
changeset | 3901 | INCOMPATIBILITY, removed special transform_error facilities, removed | 
| 
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
 wenzelm parents: 
18674diff
changeset | 3902 | obsolete variants of user-level exceptions (ERROR_MESSAGE, | 
| 
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
 wenzelm parents: 
18674diff
changeset | 3903 | Context.PROOF, ProofContext.CONTEXT, Proof.STATE, ProofHistory.FAIL) | 
| 
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
 wenzelm parents: 
18674diff
changeset | 3904 | -- use plain ERROR instead. | 
| 
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
 wenzelm parents: 
18674diff
changeset | 3905 | |
| 18815 
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
 wenzelm parents: 
18738diff
changeset | 3906 | * Isar: theory setup now has type (theory -> theory), instead of a | 
| 18722 
0888eca0f1be
* ML/Isar: theory setup has type (theory -> theory);
 wenzelm parents: 
18696diff
changeset | 3907 | list. INCOMPATIBILITY, may use #> to compose setup functions. | 
| 
0888eca0f1be
* ML/Isar: theory setup has type (theory -> theory);
 wenzelm parents: 
18696diff
changeset | 3908 | |
| 24706 
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
 wenzelm parents: 
24699diff
changeset | 3909 | * Isar: ML toplevel pretty printer for type Proof.context, subject to | 
| 
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
 wenzelm parents: 
24699diff
changeset | 3910 | ProofContext.debug/verbose flags. | 
| 18815 
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
 wenzelm parents: 
18738diff
changeset | 3911 | |
| 
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
 wenzelm parents: 
18738diff
changeset | 3912 | * Isar: Toplevel.theory_to_proof admits transactions that modify the | 
| 
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
 wenzelm parents: 
18738diff
changeset | 3913 | theory before entering a proof state. Transactions now always see a | 
| 
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
 wenzelm parents: 
18738diff
changeset | 3914 | quasi-functional intermediate checkpoint, both in interactive and | 
| 18590 
f6a553aa3d81
Pure/Isar: Toplevel.theory_to_proof admits transactions that modify the theory;
 wenzelm parents: 
18568diff
changeset | 3915 | batch mode. | 
| 18567 | 3916 | |
| 24867 | 3917 | * Isar: simplified interfaces for outer syntax. Renamed | 
| 3918 | OuterSyntax.add_keywords to OuterSyntax.keywords. Removed | |
| 3919 | OuterSyntax.add_parsers -- this functionality is now included in | |
| 3920 | OuterSyntax.command etc. INCOMPATIBILITY. | |
| 3921 | ||
| 17878 | 3922 | * Simplifier: the simpset of a running simplification process now | 
| 3923 | contains a proof context (cf. Simplifier.the_context), which is the | |
| 3924 | very context that the initial simpset has been retrieved from (by | |
| 17890 | 3925 | simpset_of/local_simpset_of). Consequently, all plug-in components | 
| 17878 | 3926 | (solver, looper etc.) may depend on arbitrary proof data. | 
| 3927 | ||
| 3928 | * Simplifier.inherit_context inherits the proof context (plus the | |
| 3929 | local bounds) of the current simplification process; any simproc | |
| 3930 | etc. that calls the Simplifier recursively should do this! Removed | |
| 3931 | former Simplifier.inherit_bounds, which is already included here -- | |
| 17890 | 3932 | INCOMPATIBILITY. Tools based on low-level rewriting may even have to | 
| 3933 | specify an explicit context using Simplifier.context/theory_context. | |
| 17878 | 3934 | |
| 3935 | * Simplifier/Classical Reasoner: more abstract interfaces | |
| 3936 | change_simpset/claset for modifying the simpset/claset reference of a | |
| 3937 | theory; raw versions simpset/claset_ref etc. have been discontinued -- | |
| 3938 | INCOMPATIBILITY. | |
| 3939 | ||
| 18540 | 3940 | * Provers: more generic wrt. syntax of object-logics, avoid hardwired | 
| 3941 | "Trueprop" etc. | |
| 3942 | ||
| 17878 | 3943 | |
| 20988 
0887d0dd3210
* isabelle-process: option -S (secure mode) disables some critical operations;
 wenzelm parents: 
20951diff
changeset | 3944 | *** System *** | 
| 
0887d0dd3210
* isabelle-process: option -S (secure mode) disables some critical operations;
 wenzelm parents: 
20951diff
changeset | 3945 | |
| 25433 | 3946 | * settings: the default heap location within ISABELLE_HOME_USER now | 
| 3947 | includes ISABELLE_IDENTIFIER. This simplifies use of multiple | |
| 3948 | Isabelle installations. | |
| 21471 
03a5ef1936c5
* settings: ML_IDENTIFIER includes the Isabelle version identifier;
 wenzelm parents: 
21462diff
changeset | 3949 | |
| 20988 
0887d0dd3210
* isabelle-process: option -S (secure mode) disables some critical operations;
 wenzelm parents: 
20951diff
changeset | 3950 | * isabelle-process: option -S (secure mode) disables some critical | 
| 
0887d0dd3210
* isabelle-process: option -S (secure mode) disables some critical operations;
 wenzelm parents: 
20951diff
changeset | 3951 | operations, notably runtime compilation and evaluation of ML source | 
| 
0887d0dd3210
* isabelle-process: option -S (secure mode) disables some critical operations;
 wenzelm parents: 
20951diff
changeset | 3952 | code. | 
| 
0887d0dd3210
* isabelle-process: option -S (secure mode) disables some critical operations;
 wenzelm parents: 
20951diff
changeset | 3953 | |
| 24891 | 3954 | * Basic Isabelle mode for jEdit, see Isabelle/lib/jedit/. | 
| 3955 | ||
| 24801 | 3956 | * Support for parallel execution, using native multicore support of | 
| 24800 | 3957 | Poly/ML 5.1. The theory loader exploits parallelism when processing | 
| 3958 | independent theories, according to the given theory header | |
| 3959 | specifications. The maximum number of worker threads is specified via | |
| 3960 | usedir option -M or the "max-threads" setting in Proof General. A | |
| 3961 | speedup factor of 1.5--3.5 can be expected on a 4-core machine, and up | |
| 3962 | to 6 on a 8-core machine. User-code needs to observe certain | |
| 3963 | guidelines for thread-safe programming, see appendix A in the Isar | |
| 3964 | Implementation manual. | |
| 24210 
a865059c4fcb
* Experimental support for multithreading, using Poly/ML 5.1;
 wenzelm parents: 
24187diff
changeset | 3965 | |
| 17754 
58a306d9f736
* Command 'find_theorems': support * wildcard in name: criterion.
 wenzelm parents: 
17725diff
changeset | 3966 | |
| 25448 | 3967 | |
| 17720 | 3968 | New in Isabelle2005 (October 2005) | 
| 3969 | ---------------------------------- | |
| 14655 
8a95abf87dd3
Pure: considerably improved version of 'constdefs' command;
 wenzelm parents: 
14624diff
changeset | 3970 | |
| 
8a95abf87dd3
Pure: considerably improved version of 'constdefs' command;
 wenzelm parents: 
14624diff
changeset | 3971 | *** General *** | 
| 
8a95abf87dd3
Pure: considerably improved version of 'constdefs' command;
 wenzelm parents: 
14624diff
changeset | 3972 | |
| 15130 | 3973 | * Theory headers: the new header syntax for Isar theories is | 
| 3974 | ||
| 3975 | theory <name> | |
| 16234 | 3976 | imports <theory1> ... <theoryN> | 
| 3977 | uses <file1> ... <fileM> | |
| 15130 | 3978 | begin | 
| 3979 | ||
| 16234 | 3980 | where the 'uses' part is optional. The previous syntax | 
| 3981 | ||
| 3982 | theory <name> = <theory1> + ... + <theoryN>: | |
| 3983 | ||
| 16717 | 3984 | will disappear in the next release. Use isatool fixheaders to convert | 
| 3985 | existing theory files. Note that there is no change in ancient | |
| 17371 | 3986 | non-Isar theories now, but these will disappear soon. | 
| 15130 | 3987 | |
| 15475 
fdf9434b04ea
- Proofs are now hidden by default when generating documents
 berghofe parents: 
15454diff
changeset | 3988 | * Theory loader: parent theories can now also be referred to via | 
| 16234 | 3989 | relative and absolute paths. | 
| 3990 | ||
| 17408 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 3991 | * Command 'find_theorems' searches for a list of criteria instead of a | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 3992 | list of constants. Known criteria are: intro, elim, dest, name:string, | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 3993 | simp:term, and any term. Criteria can be preceded by '-' to select | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 3994 | theorems that do not match. Intro, elim, dest select theorems that | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 3995 | match the current goal, name:s selects theorems whose fully qualified | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 3996 | name contain s, and simp:term selects all simplification rules whose | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 3997 | lhs match term. Any other term is interpreted as pattern and selects | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 3998 | all theorems matching the pattern. Available in ProofGeneral under | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 3999 | 'ProofGeneral -> Find Theorems' or C-c C-f. Example: | 
| 16234 | 4000 | |
| 17275 
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
 wenzelm parents: 
17269diff
changeset | 4001 | C-c C-f (100) "(_::nat) + _ + _" intro -name: "HOL." | 
| 16234 | 4002 | |
| 4003 | prints the last 100 theorems matching the pattern "(_::nat) + _ + _", | |
| 4004 | matching the current goal as introduction rule and not having "HOL." | |
| 4005 | in their name (i.e. not being defined in theory HOL). | |
| 16013 
3010430d894d
removed find_rewrites (superceded by improved thms_containing);
 wenzelm parents: 
16000diff
changeset | 4006 | |
| 17408 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4007 | * Command 'thms_containing' has been discontinued in favour of | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4008 | 'find_theorems'; INCOMPATIBILITY. | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4009 | |
| 17385 | 4010 | * Communication with Proof General is now 8bit clean, which means that | 
| 4011 | Unicode text in UTF-8 encoding may be used within theory texts (both | |
| 17408 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4012 | formal and informal parts). Cf. option -U of the Isabelle Proof | 
| 17538 | 4013 | General interface. Here are some simple examples (cf. src/HOL/ex): | 
| 4014 | ||
| 4015 | http://isabelle.in.tum.de/library/HOL/ex/Hebrew.html | |
| 4016 | http://isabelle.in.tum.de/library/HOL/ex/Chinese.html | |
| 17385 | 4017 | |
| 17425 | 4018 | * Improved efficiency of the Simplifier and, to a lesser degree, the | 
| 4019 | Classical Reasoner. Typical big applications run around 2 times | |
| 4020 | faster. | |
| 4021 | ||
| 15703 | 4022 | |
| 4023 | *** Document preparation *** | |
| 4024 | ||
| 16234 | 4025 | * Commands 'display_drafts' and 'print_drafts' perform simple output | 
| 4026 | of raw sources. Only those symbols that do not require additional | |
| 4027 | LaTeX packages (depending on comments in isabellesym.sty) are | |
| 4028 | displayed properly, everything else is left verbatim. isatool display | |
| 4029 | and isatool print are used as front ends (these are subject to the | |
| 4030 | DVI/PDF_VIEWER and PRINT_COMMAND settings, respectively). | |
| 4031 | ||
| 17047 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4032 | * Command tags control specific markup of certain regions of text, | 
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4033 | notably folding and hiding. Predefined tags include "theory" (for | 
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4034 | theory begin and end), "proof" for proof commands, and "ML" for | 
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4035 | commands involving ML code; the additional tags "visible" and | 
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4036 | "invisible" are unused by default. Users may give explicit tag | 
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4037 | specifications in the text, e.g. ''by %invisible (auto)''. The | 
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4038 | interpretation of tags is determined by the LaTeX job during document | 
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4039 | preparation: see option -V of isatool usedir, or options -n and -t of | 
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4040 | isatool document, or even the LaTeX macros \isakeeptag, \isafoldtag, | 
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4041 | \isadroptag. | 
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4042 | |
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4043 | Several document versions may be produced at the same time via isatool | 
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4044 | usedir (the generated index.html will link all of them). Typical | 
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4045 | specifications include ''-V document=theory,proof,ML'' to present | 
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4046 | theory/proof/ML parts faithfully, ''-V outline=/proof,/ML'' to fold | 
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4047 | proof and ML commands, and ''-V mutilated=-theory,-proof,-ML'' to omit | 
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4048 | these parts without any formal replacement text. The Isabelle site | 
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4049 | default settings produce ''document'' and ''outline'' versions as | 
| 
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
 wenzelm parents: 
17016diff
changeset | 4050 | specified above. | 
| 16234 | 4051 | |
| 17402 | 4052 | * Several new antiquotations: | 
| 15979 | 4053 | |
| 4054 |   @{term_type term} prints a term with its type annotated;
 | |
| 4055 | ||
| 4056 |   @{typeof term} prints the type of a term;
 | |
| 4057 | ||
| 16234 | 4058 |   @{const const} is the same as @{term const}, but checks that the
 | 
| 4059 | argument is a known logical constant; | |
| 15979 | 4060 | |
| 4061 |   @{term_style style term} and @{thm_style style thm} print a term or
 | |
| 16234 | 4062 | theorem applying a "style" to it | 
| 4063 | ||
| 17117 
e2bed9e82454
* The ML antiquotation prints type-checked ML expressions verbatim.
 wenzelm parents: 
17097diff
changeset | 4064 |   @{ML text}
 | 
| 
e2bed9e82454
* The ML antiquotation prints type-checked ML expressions verbatim.
 wenzelm parents: 
17097diff
changeset | 4065 | |
| 16234 | 4066 | Predefined styles are 'lhs' and 'rhs' printing the lhs/rhs of | 
| 4067 | definitions, equations, inequations etc., 'concl' printing only the | |
| 17393 | 4068 | conclusion of a meta-logical statement theorem, and 'prem1' .. 'prem19' | 
| 16234 | 4069 | to print the specified premise. TermStyle.add_style provides an ML | 
| 4070 | interface for introducing further styles. See also the "LaTeX Sugar" | |
| 17117 
e2bed9e82454
* The ML antiquotation prints type-checked ML expressions verbatim.
 wenzelm parents: 
17097diff
changeset | 4071 | document practical applications. The ML antiquotation prints | 
| 
e2bed9e82454
* The ML antiquotation prints type-checked ML expressions verbatim.
 wenzelm parents: 
17097diff
changeset | 4072 | type-checked ML expressions verbatim. | 
| 16234 | 4073 | |
| 17259 
dda237f1d299
Markup commands 'chapter' .. 'text' support optional locale specification;
 wenzelm parents: 
17228diff
changeset | 4074 | * Markup commands 'chapter', 'section', 'subsection', 'subsubsection', | 
| 
dda237f1d299
Markup commands 'chapter' .. 'text' support optional locale specification;
 wenzelm parents: 
17228diff
changeset | 4075 | and 'text' support optional locale specification '(in loc)', which | 
| 17269 | 4076 | specifies the default context for interpreting antiquotations. For | 
| 4077 | example: 'text (in lattice) {* @{thm inf_assoc}*}'.
 | |
| 17259 
dda237f1d299
Markup commands 'chapter' .. 'text' support optional locale specification;
 wenzelm parents: 
17228diff
changeset | 4078 | |
| 
dda237f1d299
Markup commands 'chapter' .. 'text' support optional locale specification;
 wenzelm parents: 
17228diff
changeset | 4079 | * Option 'locale=NAME' of antiquotations specifies an alternative | 
| 
dda237f1d299
Markup commands 'chapter' .. 'text' support optional locale specification;
 wenzelm parents: 
17228diff
changeset | 4080 | context interpreting the subsequent argument.  For example: @{thm
 | 
| 17269 | 4081 | [locale=lattice] inf_assoc}. | 
| 17259 
dda237f1d299
Markup commands 'chapter' .. 'text' support optional locale specification;
 wenzelm parents: 
17228diff
changeset | 4082 | |
| 17097 
78f1b66f70a4
* Proper output of proof terms within a proof context;
 wenzelm parents: 
17095diff
changeset | 4083 | * Proper output of proof terms (@{prf ...} and @{full_prf ...}) within
 | 
| 
78f1b66f70a4
* Proper output of proof terms within a proof context;
 wenzelm parents: 
17095diff
changeset | 4084 | a proof context. | 
| 
78f1b66f70a4
* Proper output of proof terms within a proof context;
 wenzelm parents: 
17095diff
changeset | 4085 | |
| 
78f1b66f70a4
* Proper output of proof terms within a proof context;
 wenzelm parents: 
17095diff
changeset | 4086 | * Proper output of antiquotations for theory commands involving a | 
| 
78f1b66f70a4
* Proper output of proof terms within a proof context;
 wenzelm parents: 
17095diff
changeset | 4087 | proof context (such as 'locale' or 'theorem (in loc) ...'). | 
| 
78f1b66f70a4
* Proper output of proof terms within a proof context;
 wenzelm parents: 
17095diff
changeset | 4088 | |
| 17193 
83708f724822
* Delimiters of outer tokens now produce separate LaTeX macros;
 wenzelm parents: 
17189diff
changeset | 4089 | * Delimiters of outer tokens (string etc.) now produce separate LaTeX | 
| 
83708f724822
* Delimiters of outer tokens now produce separate LaTeX macros;
 wenzelm parents: 
17189diff
changeset | 4090 | macros (\isachardoublequoteopen, isachardoublequoteclose etc.). | 
| 
83708f724822
* Delimiters of outer tokens now produce separate LaTeX macros;
 wenzelm parents: 
17189diff
changeset | 4091 | |
| 
83708f724822
* Delimiters of outer tokens now produce separate LaTeX macros;
 wenzelm parents: 
17189diff
changeset | 4092 | * isatool usedir: new option -C (default true) controls whether option | 
| 
83708f724822
* Delimiters of outer tokens now produce separate LaTeX macros;
 wenzelm parents: 
17189diff
changeset | 4093 | -D should include a copy of the original document directory; -C false | 
| 
83708f724822
* Delimiters of outer tokens now produce separate LaTeX macros;
 wenzelm parents: 
17189diff
changeset | 4094 | prevents unwanted effects such as copying of administrative CVS data. | 
| 
83708f724822
* Delimiters of outer tokens now produce separate LaTeX macros;
 wenzelm parents: 
17189diff
changeset | 4095 | |
| 16234 | 4096 | |
| 4097 | *** Pure *** | |
| 4098 | ||
| 4099 | * Considerably improved version of 'constdefs' command. Now performs | |
| 4100 | automatic type-inference of declared constants; additional support for | |
| 4101 | local structure declarations (cf. locales and HOL records), see also | |
| 4102 | isar-ref manual. Potential INCOMPATIBILITY: need to observe strictly | |
| 4103 | sequential dependencies of definitions within a single 'constdefs' | |
| 4104 | section; moreover, the declared name needs to be an identifier. If | |
| 4105 | all fails, consider to fall back on 'consts' and 'defs' separately. | |
| 4106 | ||
| 4107 | * Improved indexed syntax and implicit structures. First of all, | |
| 4108 | indexed syntax provides a notational device for subscripted | |
| 4109 | application, using the new syntax \<^bsub>term\<^esub> for arbitrary | |
| 4110 | expressions. Secondly, in a local context with structure | |
| 4111 | declarations, number indexes \<^sub>n or the empty index (default | |
| 4112 | number 1) refer to a certain fixed variable implicitly; option | |
| 4113 | show_structs controls printing of implicit structures. Typical | |
| 4114 | applications of these concepts involve record types and locales. | |
| 4115 | ||
| 4116 | * New command 'no_syntax' removes grammar declarations (and | |
| 4117 | translations) resulting from the given syntax specification, which is | |
| 4118 | interpreted in the same manner as for the 'syntax' command. | |
| 4119 | ||
| 4120 | * 'Advanced' translation functions (parse_translation etc.) may depend | |
| 4121 | on the signature of the theory context being presently used for | |
| 4122 | parsing/printing, see also isar-ref manual. | |
| 4123 | ||
| 16856 | 4124 | * Improved 'oracle' command provides a type-safe interface to turn an | 
| 4125 | ML expression of type theory -> T -> term into a primitive rule of | |
| 4126 | type theory -> T -> thm (i.e. the functionality of Thm.invoke_oracle | |
| 4127 | is already included here); see also FOL/ex/IffExample.thy; | |
| 4128 | INCOMPATIBILITY. | |
| 4129 | ||
| 17275 
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
 wenzelm parents: 
17269diff
changeset | 4130 | * axclass: name space prefix for class "c" is now "c_class" (was "c" | 
| 
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
 wenzelm parents: 
17269diff
changeset | 4131 | before); "cI" is no longer bound, use "c.intro" instead. | 
| 
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
 wenzelm parents: 
17269diff
changeset | 4132 | INCOMPATIBILITY. This change avoids clashes of fact bindings for | 
| 
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
 wenzelm parents: 
17269diff
changeset | 4133 | axclasses vs. locales. | 
| 
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
 wenzelm parents: 
17269diff
changeset | 4134 | |
| 16234 | 4135 | * Improved internal renaming of symbolic identifiers -- attach primes | 
| 4136 | instead of base 26 numbers. | |
| 4137 | ||
| 4138 | * New flag show_question_marks controls printing of leading question | |
| 4139 | marks in schematic variable names. | |
| 4140 | ||
| 4141 | * In schematic variable names, *any* symbol following \<^isub> or | |
| 4142 | \<^isup> is now treated as part of the base name. For example, the | |
| 4143 | following works without printing of awkward ".0" indexes: | |
| 4144 | ||
| 4145 | lemma "x\<^isub>1 = x\<^isub>2 ==> x\<^isub>2 = x\<^isub>1" | |
| 4146 | by simp | |
| 4147 | ||
| 4148 | * Inner syntax includes (*(*nested*) comments*). | |
| 4149 | ||
| 17548 | 4150 | * Pretty printer now supports unbreakable blocks, specified in mixfix | 
| 16234 | 4151 | annotations as "(00...)". | 
| 4152 | ||
| 4153 | * Clear separation of logical types and nonterminals, where the latter | |
| 4154 | may only occur in 'syntax' specifications or type abbreviations. | |
| 4155 | Before that distinction was only partially implemented via type class | |
| 4156 | "logic" vs. "{}".  Potential INCOMPATIBILITY in rare cases of improper
 | |
| 4157 | use of 'types'/'consts' instead of 'nonterminals'/'syntax'. Some very | |
| 4158 | exotic syntax specifications may require further adaption | |
| 17691 | 4159 | (e.g. Cube/Cube.thy). | 
| 16234 | 4160 | |
| 4161 | * Removed obsolete type class "logic", use the top sort {} instead.
 | |
| 4162 | Note that non-logical types should be declared as 'nonterminals' | |
| 4163 | rather than 'types'. INCOMPATIBILITY for new object-logic | |
| 4164 | specifications. | |
| 4165 | ||
| 17095 | 4166 | * Attributes 'induct' and 'cases': type or set names may now be | 
| 4167 | locally fixed variables as well. | |
| 4168 | ||
| 16234 | 4169 | * Simplifier: can now control the depth to which conditional rewriting | 
| 4170 | is traced via the PG menu Isabelle -> Settings -> Trace Simp Depth | |
| 4171 | Limit. | |
| 4172 | ||
| 4173 | * Simplifier: simplification procedures may now take the current | |
| 4174 | simpset into account (cf. Simplifier.simproc(_i) / mk_simproc | |
| 4175 | interface), which is very useful for calling the Simplifier | |
| 4176 | recursively. Minor INCOMPATIBILITY: the 'prems' argument of simprocs | |
| 4177 | is gone -- use prems_of_ss on the simpset instead. Moreover, the | |
| 4178 | low-level mk_simproc no longer applies Logic.varify internally, to | |
| 4179 | allow for use in a context of fixed variables. | |
| 4180 | ||
| 4181 | * thin_tac now works even if the assumption being deleted contains !! | |
| 4182 | or ==>. More generally, erule now works even if the major premise of | |
| 4183 | the elimination rule contains !! or ==>. | |
| 4184 | ||
| 17597 | 4185 | * Method 'rules' has been renamed to 'iprover'. INCOMPATIBILITY. | 
| 17590 | 4186 | |
| 16234 | 4187 | * Reorganized bootstrapping of the Pure theories; CPure is now derived | 
| 4188 | from Pure, which contains all common declarations already. Both | |
| 4189 | theories are defined via plain Isabelle/Isar .thy files. | |
| 4190 | INCOMPATIBILITY: elements of CPure (such as the CPure.intro / | |
| 4191 | CPure.elim / CPure.dest attributes) now appear in the Pure name space; | |
| 4192 | use isatool fixcpure to adapt your theory and ML sources. | |
| 4193 | ||
| 4194 | * New syntax 'name(i-j, i-, i, ...)' for referring to specific | |
| 4195 | selections of theorems in named facts via index ranges. | |
| 4196 | ||
| 17097 
78f1b66f70a4
* Proper output of proof terms within a proof context;
 wenzelm parents: 
17095diff
changeset | 4197 | * 'print_theorems': in theory mode, really print the difference | 
| 
78f1b66f70a4
* Proper output of proof terms within a proof context;
 wenzelm parents: 
17095diff
changeset | 4198 | wrt. the last state (works for interactive theory development only), | 
| 
78f1b66f70a4
* Proper output of proof terms within a proof context;
 wenzelm parents: 
17095diff
changeset | 4199 | in proof mode print all local facts (cf. 'print_facts'); | 
| 
78f1b66f70a4
* Proper output of proof terms within a proof context;
 wenzelm parents: 
17095diff
changeset | 4200 | |
| 17397 | 4201 | * 'hide': option '(open)' hides only base names. | 
| 4202 | ||
| 17275 
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
 wenzelm parents: 
17269diff
changeset | 4203 | * More efficient treatment of intermediate checkpoints in interactive | 
| 
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
 wenzelm parents: 
17269diff
changeset | 4204 | theory development. | 
| 
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
 wenzelm parents: 
17269diff
changeset | 4205 | |
| 17663 
28be54ff74f8
Added entries for code_module, code_library, and value.
 berghofe parents: 
17641diff
changeset | 4206 | * Code generator is now invoked via code_module (incremental code | 
| 17664 | 4207 | generation) and code_library (modular code generation, ML structures | 
| 4208 | for each theory). INCOMPATIBILITY: new keywords 'file' and 'contains' | |
| 4209 | must be quoted when used as identifiers. | |
| 4210 | ||
| 4211 | * New 'value' command for reading, evaluating and printing terms using | |
| 4212 | the code generator. INCOMPATIBILITY: command keyword 'value' must be | |
| 4213 | quoted when used as identifier. | |
| 17663 
28be54ff74f8
Added entries for code_module, code_library, and value.
 berghofe parents: 
17641diff
changeset | 4214 | |
| 16234 | 4215 | |
| 4216 | *** Locales *** | |
| 17095 | 4217 | |
| 17385 | 4218 | * New commands for the interpretation of locale expressions in | 
| 4219 | theories (1), locales (2) and proof contexts (3). These generate | |
| 4220 | proof obligations from the expression specification. After the | |
| 4221 | obligations have been discharged, theorems of the expression are added | |
| 4222 | to the theory, target locale or proof context. The synopsis of the | |
| 4223 | commands is a follows: | |
| 4224 | ||
| 17095 | 4225 | (1) interpretation expr inst | 
| 4226 | (2) interpretation target < expr | |
| 4227 | (3) interpret expr inst | |
| 17385 | 4228 | |
| 17095 | 4229 | Interpretation in theories and proof contexts require a parameter | 
| 4230 | instantiation of terms from the current context. This is applied to | |
| 17385 | 4231 | specifications and theorems of the interpreted expression. | 
| 4232 | Interpretation in locales only permits parameter renaming through the | |
| 4233 | locale expression. Interpretation is smart in that interpretations | |
| 4234 | that are active already do not occur in proof obligations, neither are | |
| 4235 | instantiated theorems stored in duplicate. Use 'print_interps' to | |
| 4236 | inspect active interpretations of a particular locale. For details, | |
| 17436 | 4237 | see the Isar Reference manual. Examples can be found in | 
| 4238 | HOL/Finite_Set.thy and HOL/Algebra/UnivPoly.thy. | |
| 16234 | 4239 | |
| 4240 | INCOMPATIBILITY: former 'instantiate' has been withdrawn, use | |
| 4241 | 'interpret' instead. | |
| 4242 | ||
| 17385 | 4243 | * New context element 'constrains' for adding type constraints to | 
| 4244 | parameters. | |
| 4245 | ||
| 4246 | * Context expressions: renaming of parameters with syntax | |
| 4247 | redeclaration. | |
| 17095 | 4248 | |
| 4249 | * Locale declaration: 'includes' disallowed. | |
| 4250 | ||
| 16234 | 4251 | * Proper static binding of attribute syntax -- i.e. types / terms / | 
| 4252 | facts mentioned as arguments are always those of the locale definition | |
| 4253 | context, independently of the context of later invocations. Moreover, | |
| 4254 | locale operations (renaming and type / term instantiation) are applied | |
| 4255 | to attribute arguments as expected. | |
| 4256 | ||
| 4257 | INCOMPATIBILITY of the ML interface: always pass Attrib.src instead of | |
| 4258 | actual attributes; rare situations may require Attrib.attribute to | |
| 4259 | embed those attributes into Attrib.src that lack concrete syntax. | |
| 4260 | Attribute implementations need to cooperate properly with the static | |
| 4261 | binding mechanism. Basic parsers Args.XXX_typ/term/prop and | |
| 4262 | Attrib.XXX_thm etc. already do the right thing without further | |
| 4263 | intervention. Only unusual applications -- such as "where" or "of" | |
| 4264 | (cf. src/Pure/Isar/attrib.ML), which process arguments depending both | |
| 4265 | on the context and the facts involved -- may have to assign parsed | |
| 4266 | values to argument tokens explicitly. | |
| 4267 | ||
| 4268 | * Changed parameter management in theorem generation for long goal | |
| 4269 | statements with 'includes'. INCOMPATIBILITY: produces a different | |
| 4270 | theorem statement in rare situations. | |
| 4271 | ||
| 17228 | 4272 | * Locale inspection command 'print_locale' omits notes elements. Use | 
| 4273 | 'print_locale!' to have them included in the output. | |
| 4274 | ||
| 16234 | 4275 | |
| 4276 | *** Provers *** | |
| 4277 | ||
| 4278 | * Provers/hypsubst.ML: improved version of the subst method, for | |
| 4279 | single-step rewriting: it now works in bound variable contexts. New is | |
| 4280 | 'subst (asm)', for rewriting an assumption. INCOMPATIBILITY: may | |
| 4281 | rewrite a different subterm than the original subst method, which is | |
| 4282 | still available as 'simplesubst'. | |
| 4283 | ||
| 4284 | * Provers/quasi.ML: new transitivity reasoners for transitivity only | |
| 4285 | and quasi orders. | |
| 4286 | ||
| 4287 | * Provers/trancl.ML: new transitivity reasoner for transitive and | |
| 4288 | reflexive-transitive closure of relations. | |
| 4289 | ||
| 4290 | * Provers/blast.ML: new reference depth_limit to make blast's depth | |
| 4291 | limit (previously hard-coded with a value of 20) user-definable. | |
| 4292 | ||
| 4293 | * Provers/simplifier.ML has been moved to Pure, where Simplifier.setup | |
| 4294 | is peformed already. Object-logics merely need to finish their | |
| 4295 | initial simpset configuration as before. INCOMPATIBILITY. | |
| 15703 | 4296 | |
| 15475 
fdf9434b04ea
- Proofs are now hidden by default when generating documents
 berghofe parents: 
15454diff
changeset | 4297 | |
| 14700 
2f885b7e5ba7
reimplementation of HOL records; only one type is created for
 schirmer parents: 
14699diff
changeset | 4298 | *** HOL *** | 
| 
2f885b7e5ba7
reimplementation of HOL records; only one type is created for
 schirmer parents: 
14699diff
changeset | 4299 | |
| 16234 | 4300 | * Symbolic syntax of Hilbert Choice Operator is now as follows: | 
| 14878 | 4301 | |
| 4302 | syntax (epsilon) | |
| 4303 |     "_Eps" :: "[pttrn, bool] => 'a"    ("(3\<some>_./ _)" [0, 10] 10)
 | |
| 4304 | ||
| 16234 | 4305 | The symbol \<some> is displayed as the alternative epsilon of LaTeX | 
| 4306 | and x-symbol; use option '-m epsilon' to get it actually printed. | |
| 4307 | Moreover, the mathematically important symbolic identifier \<epsilon> | |
| 4308 | becomes available as variable, constant etc. INCOMPATIBILITY, | |
| 4309 | ||
| 4310 | * "x > y" abbreviates "y < x" and "x >= y" abbreviates "y <= x". | |
| 4311 | Similarly for all quantifiers: "ALL x > y" etc. The x-symbol for >= | |
| 17371 | 4312 | is \<ge>. New transitivity rules have been added to HOL/Orderings.thy to | 
| 17016 
73c74cb1d744
mentioned change to exp_ge_add_one_self, new transitivity rules
 avigad parents: 
16997diff
changeset | 4313 | support corresponding Isar calculations. | 
| 16234 | 4314 | |
| 4315 | * "{x:A. P}" abbreviates "{x. x:A & P}", and similarly for "\<in>"
 | |
| 4316 | instead of ":". | |
| 4317 | ||
| 4318 | * theory SetInterval: changed the syntax for open intervals: | |
| 4319 | ||
| 4320 | Old New | |
| 4321 |   {..n(}    {..<n}
 | |
| 4322 |   {)n..}    {n<..}
 | |
| 4323 |   {m..n(}   {m..<n}
 | |
| 4324 |   {)m..n}   {m<..n}
 | |
| 4325 |   {)m..n(}  {m<..<n}
 | |
| 4326 | ||
| 4327 | The old syntax is still supported but will disappear in the next | |
| 4328 | release. For conversion use the following Emacs search and replace | |
| 4329 | patterns (these are not perfect but work quite well): | |
| 15046 | 4330 | |
| 4331 |   {)\([^\.]*\)\.\.  ->  {\1<\.\.}
 | |
| 4332 | \.\.\([^(}]*\)(} -> \.\.<\1} | |
| 4333 | ||
| 17533 | 4334 | * Theory Commutative_Ring (in Library): method comm_ring for proving | 
| 4335 | equalities in commutative rings; method 'algebra' provides a generic | |
| 4336 | interface. | |
| 17389 
b4743198b939
Method comm_ring for proving equalities in commutative rings.
 wenzelm parents: 
17385diff
changeset | 4337 | |
| 
b4743198b939
Method comm_ring for proving equalities in commutative rings.
 wenzelm parents: 
17385diff
changeset | 4338 | * Theory Finite_Set: changed the syntax for 'setsum', summation over | 
| 16234 | 4339 | finite sets: "setsum (%x. e) A", which used to be "\<Sum>x:A. e", is | 
| 17371 | 4340 | now either "SUM x:A. e" or "\<Sum>x \<in> A. e". The bound variable can | 
| 17189 | 4341 | be a tuple pattern. | 
| 16234 | 4342 | |
| 4343 | Some new syntax forms are available: | |
| 4344 | ||
| 4345 |   "\<Sum>x | P. e"      for     "setsum (%x. e) {x. P}"
 | |
| 4346 |   "\<Sum>x = a..b. e"   for     "setsum (%x. e) {a..b}"
 | |
| 4347 |   "\<Sum>x = a..<b. e"  for     "setsum (%x. e) {a..<b}"
 | |
| 4348 |   "\<Sum>x < k. e"      for     "setsum (%x. e) {..<k}"
 | |
| 4349 | ||
| 4350 | The latter form "\<Sum>x < k. e" used to be based on a separate | |
| 4351 | function "Summation", which has been discontinued. | |
| 4352 | ||
| 4353 | * theory Finite_Set: in structured induction proofs, the insert case | |
| 4354 | is now 'case (insert x F)' instead of the old counterintuitive 'case | |
| 4355 | (insert F x)'. | |
| 4356 | ||
| 4357 | * The 'refute' command has been extended to support a much larger | |
| 4358 | fragment of HOL, including axiomatic type classes, constdefs and | |
| 4359 | typedefs, inductive datatypes and recursion. | |
| 4360 | ||
| 17700 | 4361 | * New tactics 'sat' and 'satx' to prove propositional tautologies. | 
| 4362 | Requires zChaff with proof generation to be installed. See | |
| 4363 | HOL/ex/SAT_Examples.thy for examples. | |
| 17619 | 4364 | |
| 16234 | 4365 | * Datatype induction via method 'induct' now preserves the name of the | 
| 4366 | induction variable. For example, when proving P(xs::'a list) by | |
| 4367 | induction on xs, the induction step is now P(xs) ==> P(a#xs) rather | |
| 4368 | than P(list) ==> P(a#list) as previously. Potential INCOMPATIBILITY | |
| 4369 | in unstructured proof scripts. | |
| 4370 | ||
| 4371 | * Reworked implementation of records. Improved scalability for | |
| 4372 | records with many fields, avoiding performance problems for type | |
| 4373 | inference. Records are no longer composed of nested field types, but | |
| 4374 | of nested extension types. Therefore the record type only grows linear | |
| 4375 | in the number of extensions and not in the number of fields. The | |
| 4376 | top-level (users) view on records is preserved. Potential | |
| 4377 | INCOMPATIBILITY only in strange cases, where the theory depends on the | |
| 4378 | old record representation. The type generated for a record is called | |
| 4379 | <record_name>_ext_type. | |
| 4380 | ||
| 4381 | Flag record_quick_and_dirty_sensitive can be enabled to skip the | |
| 4382 | proofs triggered by a record definition or a simproc (if | |
| 4383 | quick_and_dirty is enabled). Definitions of large records can take | |
| 4384 | quite long. | |
| 4385 | ||
| 4386 | New simproc record_upd_simproc for simplification of multiple record | |
| 4387 | updates enabled by default. Moreover, trivial updates are also | |
| 4388 | removed: r(|x := x r|) = r. INCOMPATIBILITY: old proofs break | |
| 4389 | occasionally, since simplification is more powerful by default. | |
| 4390 | ||
| 17275 
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
 wenzelm parents: 
17269diff
changeset | 4391 | * typedef: proper support for polymorphic sets, which contain extra | 
| 
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
 wenzelm parents: 
17269diff
changeset | 4392 | type-variables in the term. | 
| 
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
 wenzelm parents: 
17269diff
changeset | 4393 | |
| 16234 | 4394 | * Simplifier: automatically reasons about transitivity chains | 
| 4395 | involving "trancl" (r^+) and "rtrancl" (r^*) by setting up tactics | |
| 4396 | provided by Provers/trancl.ML as additional solvers. INCOMPATIBILITY: | |
| 4397 | old proofs break occasionally as simplification may now solve more | |
| 4398 | goals than previously. | |
| 4399 | ||
| 4400 | * Simplifier: converts x <= y into x = y if assumption y <= x is | |
| 4401 | present. Works for all partial orders (class "order"), in particular | |
| 4402 | numbers and sets. For linear orders (e.g. numbers) it treats ~ x < y | |
| 4403 | just like y <= x. | |
| 4404 | ||
| 4405 | * Simplifier: new simproc for "let x = a in f x". If a is a free or | |
| 4406 | bound variable or a constant then the let is unfolded. Otherwise | |
| 4407 | first a is simplified to b, and then f b is simplified to g. If | |
| 4408 | possible we abstract b from g arriving at "let x = b in h x", | |
| 4409 | otherwise we unfold the let and arrive at g. The simproc can be | |
| 4410 | enabled/disabled by the reference use_let_simproc. Potential | |
| 4411 | INCOMPATIBILITY since simplification is more powerful by default. | |
| 15776 | 4412 | |
| 16563 | 4413 | * Classical reasoning: the meson method now accepts theorems as arguments. | 
| 4414 | ||
| 17595 | 4415 | * Prover support: pre-release of the Isabelle-ATP linkup, which runs background | 
| 4416 | jobs to provide advice on the provability of subgoals. | |
| 4417 | ||
| 16891 | 4418 | * Theory OrderedGroup and Ring_and_Field: various additions and | 
| 4419 | improvements to faciliate calculations involving equalities and | |
| 4420 | inequalities. | |
| 4421 | ||
| 4422 | The following theorems have been eliminated or modified | |
| 4423 | (INCOMPATIBILITY): | |
| 16888 | 4424 | |
| 4425 | abs_eq now named abs_of_nonneg | |
| 17371 | 4426 | abs_of_ge_0 now named abs_of_nonneg | 
| 4427 | abs_minus_eq now named abs_of_nonpos | |
| 16888 | 4428 | imp_abs_id now named abs_of_nonneg | 
| 4429 | imp_abs_neg_id now named abs_of_nonpos | |
| 4430 | mult_pos now named mult_pos_pos | |
| 4431 | mult_pos_le now named mult_nonneg_nonneg | |
| 4432 | mult_pos_neg_le now named mult_nonneg_nonpos | |
| 4433 | mult_pos_neg2_le now named mult_nonneg_nonpos2 | |
| 4434 | mult_neg now named mult_neg_neg | |
| 4435 | mult_neg_le now named mult_nonpos_nonpos | |
| 4436 | ||
| 23495 
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
 obua parents: 
23481diff
changeset | 4437 | * The following lemmas in Ring_and_Field have been added to the simplifier: | 
| 
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
 obua parents: 
23481diff
changeset | 4438 | |
| 
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
 obua parents: 
23481diff
changeset | 4439 | zero_le_square | 
| 
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
 obua parents: 
23481diff
changeset | 4440 | not_square_less_zero | 
| 
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
 obua parents: 
23481diff
changeset | 4441 | |
| 
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
 obua parents: 
23481diff
changeset | 4442 | The following lemmas have been deleted from Real/RealPow: | 
| 
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
 obua parents: 
23481diff
changeset | 4443 | |
| 
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
 obua parents: 
23481diff
changeset | 4444 | realpow_zero_zero | 
| 
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
 obua parents: 
23481diff
changeset | 4445 | realpow_two | 
| 
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
 obua parents: 
23481diff
changeset | 4446 | realpow_less | 
| 
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
 obua parents: 
23481diff
changeset | 4447 | zero_le_power | 
| 
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
 obua parents: 
23481diff
changeset | 4448 | realpow_two_le | 
| 
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
 obua parents: 
23481diff
changeset | 4449 | abs_realpow_two | 
| 
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
 obua parents: 
23481diff
changeset | 4450 | realpow_two_abs | 
| 
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
 obua parents: 
23481diff
changeset | 4451 | |
| 16891 | 4452 | * Theory Parity: added rules for simplifying exponents. | 
| 4453 | ||
| 17092 | 4454 | * Theory List: | 
| 4455 | ||
| 4456 | The following theorems have been eliminated or modified | |
| 4457 | (INCOMPATIBILITY): | |
| 4458 | ||
| 4459 | list_all_Nil now named list_all.simps(1) | |
| 4460 | list_all_Cons now named list_all.simps(2) | |
| 4461 | list_all_conv now named list_all_iff | |
| 4462 | set_mem_eq now named mem_iff | |
| 4463 | ||
| 16929 | 4464 | * Theories SetsAndFunctions and BigO (see HOL/Library) support | 
| 4465 | asymptotic "big O" calculations. See the notes in BigO.thy. | |
| 4466 | ||
| 16888 | 4467 | |
| 4468 | *** HOL-Complex *** | |
| 4469 | ||
| 16891 | 4470 | * Theory RealDef: better support for embedding natural numbers and | 
| 4471 | integers in the reals. | |
| 4472 | ||
| 4473 | The following theorems have been eliminated or modified | |
| 4474 | (INCOMPATIBILITY): | |
| 4475 | ||
| 17016 
73c74cb1d744
mentioned change to exp_ge_add_one_self, new transitivity rules
 avigad parents: 
16997diff
changeset | 4476 | exp_ge_add_one_self now requires no hypotheses | 
| 
73c74cb1d744
mentioned change to exp_ge_add_one_self, new transitivity rules
 avigad parents: 
16997diff
changeset | 4477 | real_of_int_add reversed direction of equality (use [symmetric]) | 
| 
73c74cb1d744
mentioned change to exp_ge_add_one_self, new transitivity rules
 avigad parents: 
16997diff
changeset | 4478 | real_of_int_minus reversed direction of equality (use [symmetric]) | 
| 
73c74cb1d744
mentioned change to exp_ge_add_one_self, new transitivity rules
 avigad parents: 
16997diff
changeset | 4479 | real_of_int_diff reversed direction of equality (use [symmetric]) | 
| 
73c74cb1d744
mentioned change to exp_ge_add_one_self, new transitivity rules
 avigad parents: 
16997diff
changeset | 4480 | real_of_int_mult reversed direction of equality (use [symmetric]) | 
| 16891 | 4481 | |
| 4482 | * Theory RComplete: expanded support for floor and ceiling functions. | |
| 16888 | 4483 | |
| 16962 | 4484 | * Theory Ln is new, with properties of the natural logarithm | 
| 4485 | ||
| 17423 | 4486 | * Hyperreal: There is a new type constructor "star" for making | 
| 4487 | nonstandard types. The old type names are now type synonyms: | |
| 4488 | ||
| 4489 | hypreal = real star | |
| 4490 | hypnat = nat star | |
| 4491 | hcomplex = complex star | |
| 4492 | ||
| 4493 | * Hyperreal: Many groups of similarly-defined constants have been | |
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4494 | replaced by polymorphic versions (INCOMPATIBILITY): | 
| 17423 | 4495 | |
| 4496 | star_of <-- hypreal_of_real, hypnat_of_nat, hcomplex_of_complex | |
| 4497 | ||
| 4498 | starset <-- starsetNat, starsetC | |
| 4499 | *s* <-- *sNat*, *sc* | |
| 4500 | starset_n <-- starsetNat_n, starsetC_n | |
| 4501 | *sn* <-- *sNatn*, *scn* | |
| 4502 | InternalSets <-- InternalNatSets, InternalCSets | |
| 4503 | ||
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4504 |   starfun      <-- starfun{Nat,Nat2,C,RC,CR}
 | 
| 17423 | 4505 | *f* <-- *fNat*, *fNat2*, *fc*, *fRc*, *fcR* | 
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4506 |   starfun_n    <-- starfun{Nat,Nat2,C,RC,CR}_n
 | 
| 17423 | 4507 | *fn* <-- *fNatn*, *fNat2n*, *fcn*, *fRcn*, *fcRn* | 
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4508 |   InternalFuns <-- InternalNatFuns, InternalNatFuns2, Internal{C,RC,CR}Funs
 | 
| 17423 | 4509 | |
| 4510 | * Hyperreal: Many type-specific theorems have been removed in favor of | |
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4511 | theorems specific to various axiomatic type classes (INCOMPATIBILITY): | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4512 | |
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4513 |   add_commute <-- {hypreal,hypnat,hcomplex}_add_commute
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4514 |   add_assoc   <-- {hypreal,hypnat,hcomplex}_add_assocs
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4515 |   OrderedGroup.add_0 <-- {hypreal,hypnat,hcomplex}_add_zero_left
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4516 |   OrderedGroup.add_0_right <-- {hypreal,hcomplex}_add_zero_right
 | 
| 17423 | 4517 | right_minus <-- hypreal_add_minus | 
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4518 |   left_minus <-- {hypreal,hcomplex}_add_minus_left
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4519 |   mult_commute <-- {hypreal,hypnat,hcomplex}_mult_commute
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4520 |   mult_assoc <-- {hypreal,hypnat,hcomplex}_mult_assoc
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4521 |   mult_1_left <-- {hypreal,hypnat}_mult_1, hcomplex_mult_one_left
 | 
| 17423 | 4522 | mult_1_right <-- hcomplex_mult_one_right | 
| 4523 | mult_zero_left <-- hcomplex_mult_zero_left | |
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4524 |   left_distrib <-- {hypreal,hypnat,hcomplex}_add_mult_distrib
 | 
| 17423 | 4525 | right_distrib <-- hypnat_add_mult_distrib2 | 
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4526 |   zero_neq_one <-- {hypreal,hypnat,hcomplex}_zero_not_eq_one
 | 
| 17423 | 4527 | right_inverse <-- hypreal_mult_inverse | 
| 4528 | left_inverse <-- hypreal_mult_inverse_left, hcomplex_mult_inv_left | |
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4529 |   order_refl <-- {hypreal,hypnat}_le_refl
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4530 |   order_trans <-- {hypreal,hypnat}_le_trans
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4531 |   order_antisym <-- {hypreal,hypnat}_le_anti_sym
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4532 |   order_less_le <-- {hypreal,hypnat}_less_le
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4533 |   linorder_linear <-- {hypreal,hypnat}_le_linear
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4534 |   add_left_mono <-- {hypreal,hypnat}_add_left_mono
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4535 |   mult_strict_left_mono <-- {hypreal,hypnat}_mult_less_mono2
 | 
| 17423 | 4536 | add_nonneg_nonneg <-- hypreal_le_add_order | 
| 4537 | ||
| 4538 | * Hyperreal: Separate theorems having to do with type-specific | |
| 4539 | versions of constants have been merged into theorems that apply to the | |
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4540 | new polymorphic constants (INCOMPATIBILITY): | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4541 | |
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4542 |   STAR_UNIV_set <-- {STAR_real,NatStar_real,STARC_complex}_set
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4543 |   STAR_empty_set <-- {STAR,NatStar,STARC}_empty_set
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4544 |   STAR_Un <-- {STAR,NatStar,STARC}_Un
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4545 |   STAR_Int <-- {STAR,NatStar,STARC}_Int
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4546 |   STAR_Compl <-- {STAR,NatStar,STARC}_Compl
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4547 |   STAR_subset <-- {STAR,NatStar,STARC}_subset
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4548 |   STAR_mem <-- {STAR,NatStar,STARC}_mem
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4549 |   STAR_mem_Compl <-- {STAR,STARC}_mem_Compl
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4550 |   STAR_diff <-- {STAR,STARC}_diff
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4551 |   STAR_star_of_image_subset <-- {STAR_hypreal_of_real, NatStar_hypreal_of_real,
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4552 | STARC_hcomplex_of_complex}_image_subset | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4553 |   starset_n_Un <-- starset{Nat,C}_n_Un
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4554 |   starset_n_Int <-- starset{Nat,C}_n_Int
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4555 |   starset_n_Compl <-- starset{Nat,C}_n_Compl
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4556 |   starset_n_diff <-- starset{Nat,C}_n_diff
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4557 |   InternalSets_Un <-- Internal{Nat,C}Sets_Un
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4558 |   InternalSets_Int <-- Internal{Nat,C}Sets_Int
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4559 |   InternalSets_Compl <-- Internal{Nat,C}Sets_Compl
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4560 |   InternalSets_diff <-- Internal{Nat,C}Sets_diff
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4561 |   InternalSets_UNIV_diff <-- Internal{Nat,C}Sets_UNIV_diff
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4562 |   InternalSets_starset_n <-- Internal{Nat,C}Sets_starset{Nat,C}_n
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4563 |   starset_starset_n_eq <-- starset{Nat,C}_starset{Nat,C}_n_eq
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4564 |   starset_n_starset <-- starset{Nat,C}_n_starset{Nat,C}
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4565 |   starfun_n_starfun <-- starfun{Nat,Nat2,C,RC,CR}_n_starfun{Nat,Nat2,C,RC,CR}
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4566 |   starfun <-- starfun{Nat,Nat2,C,RC,CR}
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4567 |   starfun_mult <-- starfun{Nat,Nat2,C,RC,CR}_mult
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4568 |   starfun_add <-- starfun{Nat,Nat2,C,RC,CR}_add
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4569 |   starfun_minus <-- starfun{Nat,Nat2,C,RC,CR}_minus
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4570 |   starfun_diff <-- starfun{C,RC,CR}_diff
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4571 |   starfun_o <-- starfun{NatNat2,Nat2,_stafunNat,C,C_starfunRC,_starfunCR}_o
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4572 |   starfun_o2 <-- starfun{NatNat2,_stafunNat,C,C_starfunRC,_starfunCR}_o2
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4573 |   starfun_const_fun <-- starfun{Nat,Nat2,C,RC,CR}_const_fun
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4574 |   starfun_inverse <-- starfun{Nat,C,RC,CR}_inverse
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4575 |   starfun_eq <-- starfun{Nat,Nat2,C,RC,CR}_eq
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4576 |   starfun_eq_iff <-- starfun{C,RC,CR}_eq_iff
 | 
| 17423 | 4577 | starfun_Id <-- starfunC_Id | 
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4578 |   starfun_approx <-- starfun{Nat,CR}_approx
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4579 |   starfun_capprox <-- starfun{C,RC}_capprox
 | 
| 17423 | 4580 | starfun_abs <-- starfunNat_rabs | 
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4581 |   starfun_lambda_cancel <-- starfun{C,CR,RC}_lambda_cancel
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4582 |   starfun_lambda_cancel2 <-- starfun{C,CR,RC}_lambda_cancel2
 | 
| 17423 | 4583 | starfun_mult_HFinite_approx <-- starfunCR_mult_HFinite_capprox | 
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4584 |   starfun_mult_CFinite_capprox <-- starfun{C,RC}_mult_CFinite_capprox
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4585 |   starfun_add_capprox <-- starfun{C,RC}_add_capprox
 | 
| 17423 | 4586 | starfun_add_approx <-- starfunCR_add_approx | 
| 4587 | starfun_inverse_inverse <-- starfunC_inverse_inverse | |
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4588 |   starfun_divide <-- starfun{C,CR,RC}_divide
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4589 |   starfun_n <-- starfun{Nat,C}_n
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4590 |   starfun_n_mult <-- starfun{Nat,C}_n_mult
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4591 |   starfun_n_add <-- starfun{Nat,C}_n_add
 | 
| 17423 | 4592 | starfun_n_add_minus <-- starfunNat_n_add_minus | 
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4593 |   starfun_n_const_fun <-- starfun{Nat,C}_n_const_fun
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4594 |   starfun_n_minus <-- starfun{Nat,C}_n_minus
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4595 |   starfun_n_eq <-- starfun{Nat,C}_n_eq
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4596 | |
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4597 |   star_n_add <-- {hypreal,hypnat,hcomplex}_add
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4598 |   star_n_minus <-- {hypreal,hcomplex}_minus
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4599 |   star_n_diff <-- {hypreal,hcomplex}_diff
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4600 |   star_n_mult <-- {hypreal,hcomplex}_mult
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4601 |   star_n_inverse <-- {hypreal,hcomplex}_inverse
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4602 |   star_n_le <-- {hypreal,hypnat}_le
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4603 |   star_n_less <-- {hypreal,hypnat}_less
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4604 |   star_n_zero_num <-- {hypreal,hypnat,hcomplex}_zero_num
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4605 |   star_n_one_num <-- {hypreal,hypnat,hcomplex}_one_num
 | 
| 17423 | 4606 | star_n_abs <-- hypreal_hrabs | 
| 4607 | star_n_divide <-- hcomplex_divide | |
| 4608 | ||
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4609 |   star_of_add <-- {hypreal_of_real,hypnat_of_nat,hcomplex_of_complex}_add
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4610 |   star_of_minus <-- {hypreal_of_real,hcomplex_of_complex}_minus
 | 
| 17423 | 4611 | star_of_diff <-- hypreal_of_real_diff | 
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4612 |   star_of_mult <-- {hypreal_of_real,hypnat_of_nat,hcomplex_of_complex}_mult
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4613 |   star_of_one <-- {hypreal_of_real,hcomplex_of_complex}_one
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4614 |   star_of_zero <-- {hypreal_of_real,hypnat_of_nat,hcomplex_of_complex}_zero
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4615 |   star_of_le <-- {hypreal_of_real,hypnat_of_nat}_le_iff
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4616 |   star_of_less <-- {hypreal_of_real,hypnat_of_nat}_less_iff
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4617 |   star_of_eq <-- {hypreal_of_real,hypnat_of_nat,hcomplex_of_complex}_eq_iff
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4618 |   star_of_inverse <-- {hypreal_of_real,hcomplex_of_complex}_inverse
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4619 |   star_of_divide <-- {hypreal_of_real,hcomplex_of_complex}_divide
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4620 |   star_of_of_nat <-- {hypreal_of_real,hcomplex_of_complex}_of_nat
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4621 |   star_of_of_int <-- {hypreal_of_real,hcomplex_of_complex}_of_int
 | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4622 |   star_of_number_of <-- {hypreal,hcomplex}_number_of
 | 
| 17423 | 4623 | star_of_number_less <-- number_of_less_hypreal_of_real_iff | 
| 4624 | star_of_number_le <-- number_of_le_hypreal_of_real_iff | |
| 4625 | star_of_eq_number <-- hypreal_of_real_eq_number_of_iff | |
| 4626 | star_of_less_number <-- hypreal_of_real_less_number_of_iff | |
| 4627 | star_of_le_number <-- hypreal_of_real_le_number_of_iff | |
| 4628 | star_of_power <-- hypreal_of_real_power | |
| 4629 | star_of_eq_0 <-- hcomplex_of_complex_zero_iff | |
| 4630 | ||
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4631 | * Hyperreal: new method "transfer" that implements the transfer | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4632 | principle of nonstandard analysis. With a subgoal that mentions | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4633 | nonstandard types like "'a star", the command "apply transfer" | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4634 | replaces it with an equivalent one that mentions only standard types. | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4635 | To be successful, all free variables must have standard types; non- | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4636 | standard variables must have explicit universal quantifiers. | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4637 | |
| 17641 | 4638 | * Hyperreal: A theory of Taylor series. | 
| 4639 | ||
| 14655 
8a95abf87dd3
Pure: considerably improved version of 'constdefs' command;
 wenzelm parents: 
14624diff
changeset | 4640 | |
| 14682 
a5072752114c
HOLCF: discontinued special version of 'constdefs';
 wenzelm parents: 
14655diff
changeset | 4641 | *** HOLCF *** | 
| 
a5072752114c
HOLCF: discontinued special version of 'constdefs';
 wenzelm parents: 
14655diff
changeset | 4642 | |
| 17533 | 4643 | * Discontinued special version of 'constdefs' (which used to support | 
| 4644 | continuous functions) in favor of the general Pure one with full | |
| 4645 | type-inference. | |
| 4646 | ||
| 4647 | * New simplification procedure for solving continuity conditions; it | |
| 4648 | is much faster on terms with many nested lambda abstractions (cubic | |
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4649 | instead of exponential time). | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4650 | |
| 17533 | 4651 | * New syntax for domain package: selector names are now optional. | 
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4652 | Parentheses should be omitted unless argument is lazy, for example: | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4653 | |
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4654 | domain 'a stream = cons "'a" (lazy "'a stream") | 
| 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4655 | |
| 17533 | 4656 | * New command 'fixrec' for defining recursive functions with pattern | 
| 4657 | matching; defining multiple functions with mutual recursion is also | |
| 4658 | supported. Patterns may include the constants cpair, spair, up, sinl, | |
| 4659 | sinr, or any data constructor defined by the domain package. The given | |
| 4660 | equations are proven as rewrite rules. See HOLCF/ex/Fixrec_ex.thy for | |
| 4661 | syntax and examples. | |
| 4662 | ||
| 4663 | * New commands 'cpodef' and 'pcpodef' for defining predicate subtypes | |
| 4664 | of cpo and pcpo types. Syntax is exactly like the 'typedef' command, | |
| 4665 | but the proof obligation additionally includes an admissibility | |
| 4666 | requirement. The packages generate instances of class cpo or pcpo, | |
| 4667 | with continuity and strictness theorems for Rep and Abs. | |
| 17442 
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
 huffman parents: 
17436diff
changeset | 4668 | |
| 17584 | 4669 | * HOLCF: Many theorems have been renamed according to a more standard naming | 
| 4670 | scheme (INCOMPATIBILITY): | |
| 4671 | ||
| 4672 | foo_inject: "foo$x = foo$y ==> x = y" | |
| 4673 | foo_eq: "(foo$x = foo$y) = (x = y)" | |
| 4674 | foo_less: "(foo$x << foo$y) = (x << y)" | |
| 4675 | foo_strict: "foo$UU = UU" | |
| 4676 | foo_defined: "... ==> foo$x ~= UU" | |
| 4677 | foo_defined_iff: "(foo$x = UU) = (x = UU)" | |
| 4678 | ||
| 14682 
a5072752114c
HOLCF: discontinued special version of 'constdefs';
 wenzelm parents: 
14655diff
changeset | 4679 | |
| 14885 | 4680 | *** ZF *** | 
| 4681 | ||
| 16234 | 4682 | * ZF/ex: theories Group and Ring provide examples in abstract algebra, | 
| 4683 | including the First Isomorphism Theorem (on quotienting by the kernel | |
| 4684 | of a homomorphism). | |
| 15089 
430264838064
ZF/Simplifier: second copy of context type solver;
 wenzelm parents: 
15076diff
changeset | 4685 | |
| 
430264838064
ZF/Simplifier: second copy of context type solver;
 wenzelm parents: 
15076diff
changeset | 4686 | * ZF/Simplifier: install second copy of type solver that actually | 
| 16234 | 4687 | makes use of TC rules declared to Isar proof contexts (or locales); | 
| 4688 | the old version is still required for ML proof scripts. | |
| 15703 | 4689 | |
| 4690 | ||
| 17445 | 4691 | *** Cube *** | 
| 4692 | ||
| 4693 | * Converted to Isar theory format; use locales instead of axiomatic | |
| 4694 | theories. | |
| 4695 | ||
| 4696 | ||
| 15703 | 4697 | *** ML *** | 
| 4698 | ||
| 21339 | 4699 | * Pure/library.ML: added ##>, ##>>, #>> -- higher-order counterparts | 
| 4700 | for ||>, ||>>, |>>, | |
| 4701 | ||
| 15973 | 4702 | * Pure/library.ML no longer defines its own option datatype, but uses | 
| 16234 | 4703 | that of the SML basis, which has constructors NONE and SOME instead of | 
| 4704 | None and Some, as well as exception Option.Option instead of OPTION. | |
| 4705 | The functions the, if_none, is_some, is_none have been adapted | |
| 4706 | accordingly, while Option.map replaces apsome. | |
| 15973 | 4707 | |
| 16860 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4708 | * Pure/library.ML: the exception LIST has been given up in favour of | 
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4709 | the standard exceptions Empty and Subscript, as well as | 
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4710 | Library.UnequalLengths. Function like Library.hd and Library.tl are | 
| 36856 
b343091e81d8
reverted parts of 7902dc7ea11d -- note that NEWS of published Isabelle releases are essentially read-only;
 wenzelm parents: 
36849diff
changeset | 4711 | superceded by the standard hd and tl functions etc. | 
| 16860 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4712 | |
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4713 | A number of basic list functions are no longer exported to the ML | 
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4714 | toplevel, as they are variants of predefined functions. The following | 
| 16234 | 4715 | suggests how one can translate existing code: | 
| 15973 | 4716 | |
| 4717 | rev_append xs ys = List.revAppend (xs, ys) | |
| 4718 | nth_elem (i, xs) = List.nth (xs, i) | |
| 4719 | last_elem xs = List.last xs | |
| 4720 | flat xss = List.concat xss | |
| 16234 | 4721 | seq fs = List.app fs | 
| 15973 | 4722 | partition P xs = List.partition P xs | 
| 4723 | mapfilter f xs = List.mapPartial f xs | |
| 4724 | ||
| 16860 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4725 | * Pure/library.ML: several combinators for linear functional | 
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4726 | transformations, notably reverse application and composition: | 
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4727 | |
| 17371 | 4728 | x |> f f #> g | 
| 4729 | (x, y) |-> f f #-> g | |
| 16860 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4730 | |
| 17495 | 4731 | * Pure/library.ML: introduced/changed precedence of infix operators: | 
| 4732 | ||
| 4733 | infix 1 |> |-> ||> ||>> |>> |>>> #> #->; | |
| 4734 | infix 2 ?; | |
| 4735 | infix 3 o oo ooo oooo; | |
| 4736 | infix 4 ~~ upto downto; | |
| 4737 | ||
| 4738 | Maybe INCOMPATIBILITY when any of those is used in conjunction with other | |
| 4739 | infix operators. | |
| 4740 | ||
| 17408 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4741 | * Pure/library.ML: natural list combinators fold, fold_rev, and | 
| 16869 | 4742 | fold_map support linear functional transformations and nesting. For | 
| 16860 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4743 | example: | 
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4744 | |
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4745 | fold f [x1, ..., xN] y = | 
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4746 | y |> f x1 |> ... |> f xN | 
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4747 | |
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4748 | (fold o fold) f [xs1, ..., xsN] y = | 
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4749 | y |> fold f xs1 |> ... |> fold f xsN | 
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4750 | |
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4751 | fold f [x1, ..., xN] = | 
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4752 | f x1 #> ... #> f xN | 
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4753 | |
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4754 | (fold o fold) f [xs1, ..., xsN] = | 
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4755 | fold f xs1 #> ... #> fold f xsN | 
| 
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
 wenzelm parents: 
16856diff
changeset | 4756 | |
| 17408 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4757 | * Pure/library.ML: the following selectors on type 'a option are | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4758 | available: | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4759 | |
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4760 | the: 'a option -> 'a (*partial*) | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4761 | these: 'a option -> 'a where 'a = 'b list | 
| 17402 | 4762 | the_default: 'a -> 'a option -> 'a | 
| 4763 | the_list: 'a option -> 'a list | |
| 4764 | ||
| 17408 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4765 | * Pure/General: structure AList (cf. Pure/General/alist.ML) provides | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4766 | basic operations for association lists, following natural argument | 
| 17564 | 4767 | order; moreover the explicit equality predicate passed here avoids | 
| 17495 | 4768 | potentially expensive polymorphic runtime equality checks. | 
| 4769 | The old functions may be expressed as follows: | |
| 17408 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4770 | |
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4771 | assoc = uncurry (AList.lookup (op =)) | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4772 | assocs = these oo AList.lookup (op =) | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4773 | overwrite = uncurry (AList.update (op =)) o swap | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4774 | |
| 17564 | 4775 | * Pure/General: structure AList (cf. Pure/General/alist.ML) provides | 
| 4776 | ||
| 4777 |   val make: ('a -> 'b) -> 'a list -> ('a * 'b) list
 | |
| 4778 |   val find: ('a * 'b -> bool) -> ('c * 'b) list -> 'a -> 'c list
 | |
| 4779 | ||
| 4780 | replacing make_keylist and keyfilter (occassionally used) | |
| 4781 | Naive rewrites: | |
| 4782 | ||
| 4783 | make_keylist = AList.make | |
| 4784 | keyfilter = AList.find (op =) | |
| 4785 | ||
| 4786 | * eq_fst and eq_snd now take explicit equality parameter, thus | |
| 4787 | avoiding eqtypes. Naive rewrites: | |
| 4788 | ||
| 4789 | eq_fst = eq_fst (op =) | |
| 4790 | eq_snd = eq_snd (op =) | |
| 4791 | ||
| 4792 | * Removed deprecated apl and apr (rarely used). | |
| 4793 | Naive rewrites: | |
| 4794 | ||
| 4795 | apl (n, op) =>>= curry op n | |
| 4796 | apr (op, m) =>>= fn n => op (n, m) | |
| 4797 | ||
| 17408 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4798 | * Pure/General: structure OrdList (cf. Pure/General/ord_list.ML) | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4799 | provides a reasonably efficient light-weight implementation of sets as | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4800 | lists. | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4801 | |
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4802 | * Pure/General: generic tables (cf. Pure/General/table.ML) provide a | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4803 | few new operations; existing lookup and update are now curried to | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4804 | follow natural argument order (for use with fold etc.); | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4805 | INCOMPATIBILITY, use (uncurry Symtab.lookup) etc. as last resort. | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4806 | |
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4807 | * Pure/General: output via the Isabelle channels of | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4808 | writeln/warning/error etc. is now passed through Output.output, with a | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4809 | hook for arbitrary transformations depending on the print_mode | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4810 | (cf. Output.add_mode -- the first active mode that provides a output | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4811 | function wins). Already formatted output may be embedded into further | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4812 | text via Output.raw; the result of Pretty.string_of/str_of and derived | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4813 | functions (string_of_term/cterm/thm etc.) is already marked raw to | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4814 | accommodate easy composition of diagnostic messages etc. Programmers | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4815 | rarely need to care about Output.output or Output.raw at all, with | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4816 | some notable exceptions: Output.output is required when bypassing the | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4817 | standard channels (writeln etc.), or in token translations to produce | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4818 | properly formatted results; Output.raw is required when capturing | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4819 | already output material that will eventually be presented to the user | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4820 | a second time. For the default print mode, both Output.output and | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4821 | Output.raw have no effect. | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4822 | |
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4823 | * Pure/General: Output.time_accumulator NAME creates an operator ('a
 | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4824 | -> 'b) -> 'a -> 'b to measure runtime and count invocations; the | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4825 | cumulative results are displayed at the end of a batch session. | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4826 | |
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4827 | * Pure/General: File.sysify_path and File.quote_sysify path have been | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4828 | replaced by File.platform_path and File.shell_path (with appropriate | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4829 | hooks). This provides a clean interface for unusual systems where the | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4830 | internal and external process view of file names are different. | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4831 | |
| 16689 
05b986733a59
* Pure: structure OrdList (cf. Pure/General/ord_list.ML);
 wenzelm parents: 
16662diff
changeset | 4832 | * Pure: more efficient orders for basic syntactic entities: added | 
| 
05b986733a59
* Pure: structure OrdList (cf. Pure/General/ord_list.ML);
 wenzelm parents: 
16662diff
changeset | 4833 | fast_string_ord, fast_indexname_ord, fast_term_ord; changed sort_ord | 
| 
05b986733a59
* Pure: structure OrdList (cf. Pure/General/ord_list.ML);
 wenzelm parents: 
16662diff
changeset | 4834 | and typ_ord to use fast_string_ord and fast_indexname_ord (term_ord is | 
| 
05b986733a59
* Pure: structure OrdList (cf. Pure/General/ord_list.ML);
 wenzelm parents: 
16662diff
changeset | 4835 | NOT affected); structures Symtab, Vartab, Typtab, Termtab use the fast | 
| 
05b986733a59
* Pure: structure OrdList (cf. Pure/General/ord_list.ML);
 wenzelm parents: 
16662diff
changeset | 4836 | orders now -- potential INCOMPATIBILITY for code that depends on a | 
| 
05b986733a59
* Pure: structure OrdList (cf. Pure/General/ord_list.ML);
 wenzelm parents: 
16662diff
changeset | 4837 | particular order for Symtab.keys, Symtab.dest, etc. (consider using | 
| 
05b986733a59
* Pure: structure OrdList (cf. Pure/General/ord_list.ML);
 wenzelm parents: 
16662diff
changeset | 4838 | Library.sort_strings on result). | 
| 
05b986733a59
* Pure: structure OrdList (cf. Pure/General/ord_list.ML);
 wenzelm parents: 
16662diff
changeset | 4839 | |
| 17408 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4840 | * Pure/term.ML: combinators fold_atyps, fold_aterms, fold_term_types, | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4841 | fold_types traverse types/terms from left to right, observing natural | 
| 36856 
b343091e81d8
reverted parts of 7902dc7ea11d -- note that NEWS of published Isabelle releases are essentially read-only;
 wenzelm parents: 
36849diff
changeset | 4842 | argument order. Supercedes previous foldl_XXX versions, add_frees, | 
| 17408 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4843 | add_vars etc. have been adapted as well: INCOMPATIBILITY. | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4844 | |
| 16151 | 4845 | * Pure: name spaces have been refined, with significant changes of the | 
| 16234 | 4846 | internal interfaces -- INCOMPATIBILITY. Renamed cond_extern(_table) | 
| 36856 
b343091e81d8
reverted parts of 7902dc7ea11d -- note that NEWS of published Isabelle releases are essentially read-only;
 wenzelm parents: 
36849diff
changeset | 4847 | to extern(_table). The plain name entry path is superceded by a | 
| 16234 | 4848 | general 'naming' context, which also includes the 'policy' to produce | 
| 4849 | a fully qualified name and external accesses of a fully qualified | |
| 36856 
b343091e81d8
reverted parts of 7902dc7ea11d -- note that NEWS of published Isabelle releases are essentially read-only;
 wenzelm parents: 
36849diff
changeset | 4850 | name; NameSpace.extend is superceded by context dependent | 
| 16234 | 4851 | Sign.declare_name. Several theory and proof context operations modify | 
| 4852 | the naming context. Especially note Theory.restore_naming and | |
| 4853 | ProofContext.restore_naming to get back to a sane state; note that | |
| 4854 | Theory.add_path is no longer sufficient to recover from | |
| 4855 | Theory.absolute_path in particular. | |
| 4856 | ||
| 4857 | * Pure: new flags short_names (default false) and unique_names | |
| 4858 | (default true) for controlling output of qualified names. If | |
| 4859 | short_names is set, names are printed unqualified. If unique_names is | |
| 4860 | reset, the name prefix is reduced to the minimum required to achieve | |
| 4861 | the original result when interning again, even if there is an overlap | |
| 4862 | with earlier declarations. | |
| 16151 | 4863 | |
| 16456 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4864 | * Pure/TheoryDataFun: change of the argument structure; 'prep_ext' is | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4865 | now 'extend', and 'merge' gets an additional Pretty.pp argument | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4866 | (useful for printing error messages). INCOMPATIBILITY. | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4867 | |
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4868 | * Pure: major reorganization of the theory context. Type Sign.sg and | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4869 | Theory.theory are now identified, referring to the universal | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4870 | Context.theory (see Pure/context.ML). Actual signature and theory | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4871 | content is managed as theory data. The old code and interfaces were | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4872 | spread over many files and structures; the new arrangement introduces | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4873 | considerable INCOMPATIBILITY to gain more clarity: | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4874 | |
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4875 | Context -- theory management operations (name, identity, inclusion, | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4876 | parents, ancestors, merge, etc.), plus generic theory data; | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4877 | |
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4878 | Sign -- logical signature and syntax operations (declaring consts, | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4879 | types, etc.), plus certify/read for common entities; | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4880 | |
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4881 | Theory -- logical theory operations (stating axioms, definitions, | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4882 | oracles), plus a copy of logical signature operations (consts, | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4883 | types, etc.); also a few basic management operations (Theory.copy, | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4884 | Theory.merge, etc.) | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4885 | |
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4886 | The most basic sign_of operations (Theory.sign_of, Thm.sign_of_thm | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4887 | etc.) as well as the sign field in Thm.rep_thm etc. have been retained | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4888 | for convenience -- they merely return the theory. | 
| 
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
 wenzelm parents: 
16373diff
changeset | 4889 | |
| 36856 
b343091e81d8
reverted parts of 7902dc7ea11d -- note that NEWS of published Isabelle releases are essentially read-only;
 wenzelm parents: 
36849diff
changeset | 4890 | * Pure: type Type.tsig is superceded by theory in most interfaces. | 
| 17193 
83708f724822
* Delimiters of outer tokens now produce separate LaTeX macros;
 wenzelm parents: 
17189diff
changeset | 4891 | |
| 16547 
09f7a953d2d6
* Pure: the Isar proof context type is already defined early in Pure
 wenzelm parents: 
16506diff
changeset | 4892 | * Pure: the Isar proof context type is already defined early in Pure | 
| 
09f7a953d2d6
* Pure: the Isar proof context type is already defined early in Pure
 wenzelm parents: 
16506diff
changeset | 4893 | as Context.proof (note that ProofContext.context and Proof.context are | 
| 
09f7a953d2d6
* Pure: the Isar proof context type is already defined early in Pure
 wenzelm parents: 
16506diff
changeset | 4894 | aliases, where the latter is the preferred name). This enables other | 
| 
09f7a953d2d6
* Pure: the Isar proof context type is already defined early in Pure
 wenzelm parents: 
16506diff
changeset | 4895 | Isabelle components to refer to that type even before Isar is present. | 
| 
09f7a953d2d6
* Pure: the Isar proof context type is already defined early in Pure
 wenzelm parents: 
16506diff
changeset | 4896 | |
| 16373 
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
 wenzelm parents: 
16251diff
changeset | 4897 | * Pure/sign/theory: discontinued named name spaces (i.e. classK, | 
| 
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
 wenzelm parents: 
16251diff
changeset | 4898 | typeK, constK, axiomK, oracleK), but provide explicit operations for | 
| 
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
 wenzelm parents: 
16251diff
changeset | 4899 | any of these kinds. For example, Sign.intern typeK is now | 
| 
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
 wenzelm parents: 
16251diff
changeset | 4900 | Sign.intern_type, Theory.hide_space Sign.typeK is now | 
| 
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
 wenzelm parents: 
16251diff
changeset | 4901 | Theory.hide_types. Also note that former | 
| 
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
 wenzelm parents: 
16251diff
changeset | 4902 | Theory.hide_classes/types/consts are now | 
| 
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
 wenzelm parents: 
16251diff
changeset | 4903 | Theory.hide_classes_i/types_i/consts_i, while the non '_i' versions | 
| 
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
 wenzelm parents: 
16251diff
changeset | 4904 | internalize their arguments! INCOMPATIBILITY. | 
| 
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
 wenzelm parents: 
16251diff
changeset | 4905 | |
| 16506 
b2687ce38433
* Pure: get_thm interface expects datatype thmref;
 wenzelm parents: 
16456diff
changeset | 4906 | * Pure: get_thm interface (of PureThy and ProofContext) expects | 
| 
b2687ce38433
* Pure: get_thm interface expects datatype thmref;
 wenzelm parents: 
16456diff
changeset | 4907 | datatype thmref (with constructors Name and NameSelection) instead of | 
| 
b2687ce38433
* Pure: get_thm interface expects datatype thmref;
 wenzelm parents: 
16456diff
changeset | 4908 | plain string -- INCOMPATIBILITY; | 
| 
b2687ce38433
* Pure: get_thm interface expects datatype thmref;
 wenzelm parents: 
16456diff
changeset | 4909 | |
| 16151 | 4910 | * Pure: cases produced by proof methods specify options, where NONE | 
| 16234 | 4911 | means to remove case bindings -- INCOMPATIBILITY in | 
| 4912 | (RAW_)METHOD_CASES. | |
| 16151 | 4913 | |
| 16373 
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
 wenzelm parents: 
16251diff
changeset | 4914 | * Pure: the following operations retrieve axioms or theorems from a | 
| 
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
 wenzelm parents: 
16251diff
changeset | 4915 | theory node or theory hierarchy, respectively: | 
| 
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
 wenzelm parents: 
16251diff
changeset | 4916 | |
| 
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
 wenzelm parents: 
16251diff
changeset | 4917 | Theory.axioms_of: theory -> (string * term) list | 
| 
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
 wenzelm parents: 
16251diff
changeset | 4918 | Theory.all_axioms_of: theory -> (string * term) list | 
| 
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
 wenzelm parents: 
16251diff
changeset | 4919 | PureThy.thms_of: theory -> (string * thm) list | 
| 
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
 wenzelm parents: 
16251diff
changeset | 4920 | PureThy.all_thms_of: theory -> (string * thm) list | 
| 
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
 wenzelm parents: 
16251diff
changeset | 4921 | |
| 16718 | 4922 | * Pure: print_tac now outputs the goal through the trace channel. | 
| 4923 | ||
| 17408 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4924 | * Isar toplevel: improved diagnostics, mostly for Poly/ML only. | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4925 | Reference Toplevel.debug (default false) controls detailed printing | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4926 | and tracing of low-level exceptions; Toplevel.profiling (default 0) | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4927 | controls execution profiling -- set to 1 for time and 2 for space | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4928 | (both increase the runtime). | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4929 | |
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4930 | * Isar session: The initial use of ROOT.ML is now always timed, | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4931 | i.e. the log will show the actual process times, in contrast to the | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4932 | elapsed wall-clock time that the outer shell wrapper produces. | 
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4933 | |
| 
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
 wenzelm parents: 
17402diff
changeset | 4934 | * Simplifier: improved handling of bound variables (nameless | 
| 16997 
7dfc99f62dd9
* Pure/Simplifier: improved handling of bound variables;
 wenzelm parents: 
16962diff
changeset | 4935 | representation, avoid allocating new strings). Simprocs that invoke | 
| 
7dfc99f62dd9
* Pure/Simplifier: improved handling of bound variables;
 wenzelm parents: 
16962diff
changeset | 4936 | the Simplifier recursively should use Simplifier.inherit_bounds to | 
| 17720 | 4937 | avoid local name clashes. Failure to do so produces warnings | 
| 4938 | "Simplifier: renamed bound variable ..."; set Simplifier.debug_bounds | |
| 4939 | for further details. | |
| 16234 | 4940 | |
| 17166 | 4941 | * ML functions legacy_bindings and use_legacy_bindings produce ML fact | 
| 4942 | bindings for all theorems stored within a given theory; this may help | |
| 4943 | in porting non-Isar theories to Isar ones, while keeping ML proof | |
| 4944 | scripts for the time being. | |
| 4945 | ||
| 17457 | 4946 | * ML operator HTML.with_charset specifies the charset begin used for | 
| 4947 | generated HTML files. For example: | |
| 4948 | ||
| 4949 | HTML.with_charset "utf-8" use_thy "Hebrew"; | |
| 17538 | 4950 | HTML.with_charset "utf-8" use_thy "Chinese"; | 
| 17457 | 4951 | |
| 16234 | 4952 | |
| 4953 | *** System *** | |
| 4954 | ||
| 4955 | * Allow symlinks to all proper Isabelle executables (Isabelle, | |
| 4956 | isabelle, isatool etc.). | |
| 4957 | ||
| 4958 | * ISABELLE_DOC_FORMAT setting specifies preferred document format (for | |
| 4959 | isatool doc, isatool mkdir, display_drafts etc.). | |
| 4960 | ||
| 4961 | * isatool usedir: option -f allows specification of the ML file to be | |
| 4962 | used by Isabelle; default is ROOT.ML. | |
| 4963 | ||
| 16251 
121dc80d120a
* ML: replaced File.sysify_path/quote_sysify_path by File.platform_path/shell_path;
 wenzelm parents: 
16234diff
changeset | 4964 | * New isatool version outputs the version identifier of the Isabelle | 
| 
121dc80d120a
* ML: replaced File.sysify_path/quote_sysify_path by File.platform_path/shell_path;
 wenzelm parents: 
16234diff
changeset | 4965 | distribution being used. | 
| 
121dc80d120a
* ML: replaced File.sysify_path/quote_sysify_path by File.platform_path/shell_path;
 wenzelm parents: 
16234diff
changeset | 4966 | |
| 
121dc80d120a
* ML: replaced File.sysify_path/quote_sysify_path by File.platform_path/shell_path;
 wenzelm parents: 
16234diff
changeset | 4967 | * HOL: new isatool dimacs2hol converts files in DIMACS CNF format | 
| 16234 | 4968 | (containing Boolean satisfiability problems) into Isabelle/HOL | 
| 4969 | theories. | |
| 15703 | 4970 | |
| 4971 | ||
| 14655 
8a95abf87dd3
Pure: considerably improved version of 'constdefs' command;
 wenzelm parents: 
14624diff
changeset | 4972 | |
| 14606 | 4973 | New in Isabelle2004 (April 2004) | 
| 4974 | -------------------------------- | |
| 13280 
306ef3aef61b
* improved thms_containing: proper indexing of facts instead of raw
 wenzelm parents: 
13190diff
changeset | 4975 | |
| 14171 
0cab06e3bbd0
Extended the notion of letter and digit, such that now one may use greek,
 skalberg parents: 
14136diff
changeset | 4976 | *** General *** | 
| 
0cab06e3bbd0
Extended the notion of letter and digit, such that now one may use greek,
 skalberg parents: 
14136diff
changeset | 4977 | |
| 14398 
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
 ballarin parents: 
14389diff
changeset | 4978 | * Provers/order.ML: new efficient reasoner for partial and linear orders. | 
| 
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
 ballarin parents: 
14389diff
changeset | 4979 | Replaces linorder.ML. | 
| 
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
 ballarin parents: 
14389diff
changeset | 4980 | |
| 14606 | 4981 | * Pure: Greek letters (except small lambda, \<lambda>), as well as Gothic | 
| 4982 | (\<aa>...\<zz>\<AA>...\<ZZ>), calligraphic (\<A>...\<Z>), and Euler | |
| 14173 | 4983 | (\<a>...\<z>), are now considered normal letters, and can therefore | 
| 4984 | be used anywhere where an ASCII letter (a...zA...Z) has until | |
| 4985 | now. COMPATIBILITY: This obviously changes the parsing of some | |
| 4986 | terms, especially where a symbol has been used as a binder, say | |
| 4987 | '\<Pi>x. ...', which is now a type error since \<Pi>x will be parsed | |
| 4988 | as an identifier. Fix it by inserting a space around former | |
| 4989 | symbols. Call 'isatool fixgreek' to try to fix parsing errors in | |
| 4990 | existing theory and ML files. | |
| 14171 
0cab06e3bbd0
Extended the notion of letter and digit, such that now one may use greek,
 skalberg parents: 
14136diff
changeset | 4991 | |
| 14237 | 4992 | * Pure: Macintosh and Windows line-breaks are now allowed in theory files. | 
| 4993 | ||
| 14731 | 4994 | * Pure: single letter sub/superscripts (\<^isub> and \<^isup>) are now | 
| 4995 | allowed in identifiers. Similar to Greek letters \<^isub> is now considered | |
| 4996 | a normal (but invisible) letter. For multiple letter subscripts repeat | |
| 4997 | \<^isub> like this: x\<^isub>1\<^isub>2. | |
| 14233 | 4998 | |
| 14333 | 4999 | * Pure: There are now sub-/superscripts that can span more than one | 
| 5000 | character. Text between \<^bsub> and \<^esub> is set in subscript in | |
| 14606 | 5001 | ProofGeneral and LaTeX, text between \<^bsup> and \<^esup> in | 
| 5002 | superscript. The new control characters are not identifier parts. | |
| 14333 | 5003 | |
| 14561 
c53396af770e
* raw control symbols are of the form \<^raw:...> now.
 schirmer parents: 
14556diff
changeset | 5004 | * Pure: Control-symbols of the form \<^raw:...> will literally print the | 
| 14606 | 5005 | content of "..." to the latex file instead of \isacntrl... . The "..." | 
| 5006 | may consist of any printable characters excluding the end bracket >. | |
| 14361 
ad2f5da643b4
* Support for raw latex output in control symbols: \<^raw...>
 schirmer parents: 
14333diff
changeset | 5007 | |
| 14237 | 5008 | * Pure: Using new Isar command "finalconsts" (or the ML functions | 
| 5009 | Theory.add_finals or Theory.add_finals_i) it is now possible to | |
| 5010 | declare constants "final", which prevents their being given a definition | |
| 5011 | later. It is useful for constants whose behaviour is fixed axiomatically | |
| 14224 | 5012 | rather than definitionally, such as the meta-logic connectives. | 
| 5013 | ||
| 14606 | 5014 | * Pure: 'instance' now handles general arities with general sorts | 
| 5015 | (i.e. intersections of classes), | |
| 14503 
255ad604e08e
Added check that Theory.ML does not occur in the files section of the theory
 skalberg parents: 
14480diff
changeset | 5016 | |
| 14547 | 5017 | * Presentation: generated HTML now uses a CSS style sheet to make layout | 
| 14731 | 5018 | (somewhat) independent of content. It is copied from lib/html/isabelle.css. | 
| 14547 | 5019 | It can be changed to alter the colors/layout of generated pages. | 
| 5020 | ||
| 14556 
c5078f6c99a9
* Calculation commands "moreover" and "also" no longer interfere with
 wenzelm parents: 
14551diff
changeset | 5021 | |
| 14175 
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
 ballarin parents: 
14173diff
changeset | 5022 | *** Isar *** | 
| 
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
 ballarin parents: 
14173diff
changeset | 5023 | |
| 14508 
859b11514537
Experimental command for instantiation of locales in proof contexts:
 ballarin parents: 
14503diff
changeset | 5024 | * Tactic emulation methods rule_tac, erule_tac, drule_tac, frule_tac, | 
| 
859b11514537
Experimental command for instantiation of locales in proof contexts:
 ballarin parents: 
14503diff
changeset | 5025 | cut_tac, subgoal_tac and thin_tac: | 
| 14175 
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
 ballarin parents: 
14173diff
changeset | 5026 | - Now understand static (Isar) contexts. As a consequence, users of Isar | 
| 
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
 ballarin parents: 
14173diff
changeset | 5027 | locales are no longer forced to write Isar proof scripts. | 
| 
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
 ballarin parents: 
14173diff
changeset | 5028 | For details see Isar Reference Manual, paragraph 4.3.2: Further tactic | 
| 
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
 ballarin parents: 
14173diff
changeset | 5029 | emulations. | 
| 
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
 ballarin parents: 
14173diff
changeset | 5030 | - INCOMPATIBILITY: names of variables to be instantiated may no | 
| 14211 
7286c187596d
Improvements to Isar/Locales:  premises generated by "includes" elements
 ballarin parents: 
14199diff
changeset | 5031 | longer be enclosed in quotes. Instead, precede variable name with `?'. | 
| 
7286c187596d
Improvements to Isar/Locales:  premises generated by "includes" elements
 ballarin parents: 
14199diff
changeset | 5032 | This is consistent with the instantiation attribute "where". | 
| 
7286c187596d
Improvements to Isar/Locales:  premises generated by "includes" elements
 ballarin parents: 
14199diff
changeset | 5033 | |
| 14257 
a7ef3f7588c5
Type inference bug in Isar attributes "where" and "of" fixed.
 ballarin parents: 
14255diff
changeset | 5034 | * Attributes "where" and "of": | 
| 14285 
92ed032e83a1
Isar: where attribute supports instantiation of type vars.
 ballarin parents: 
14283diff
changeset | 5035 | - Now take type variables of instantiated theorem into account when reading | 
| 
92ed032e83a1
Isar: where attribute supports instantiation of type vars.
 ballarin parents: 
14283diff
changeset | 5036 | the instantiation string. This fixes a bug that caused instantiated | 
| 
92ed032e83a1
Isar: where attribute supports instantiation of type vars.
 ballarin parents: 
14283diff
changeset | 5037 | theorems to have too special types in some circumstances. | 
| 
92ed032e83a1
Isar: where attribute supports instantiation of type vars.
 ballarin parents: 
14283diff
changeset | 5038 | - "where" permits explicit instantiations of type variables. | 
| 14257 
a7ef3f7588c5
Type inference bug in Isar attributes "where" and "of" fixed.
 ballarin parents: 
14255diff
changeset | 5039 | |
| 14556 
c5078f6c99a9
* Calculation commands "moreover" and "also" no longer interfere with
 wenzelm parents: 
14551diff
changeset | 5040 | * Calculation commands "moreover" and "also" no longer interfere with | 
| 
c5078f6c99a9
* Calculation commands "moreover" and "also" no longer interfere with
 wenzelm parents: 
14551diff
changeset | 5041 |   current facts ("this"), admitting arbitrary combinations with "then"
 | 
| 
c5078f6c99a9
* Calculation commands "moreover" and "also" no longer interfere with
 wenzelm parents: 
14551diff
changeset | 5042 | and derived forms. | 
| 14283 | 5043 | |
| 14211 
7286c187596d
Improvements to Isar/Locales:  premises generated by "includes" elements
 ballarin parents: 
14199diff
changeset | 5044 | * Locales: | 
| 
7286c187596d
Improvements to Isar/Locales:  premises generated by "includes" elements
 ballarin parents: 
14199diff
changeset | 5045 | - Goal statements involving the context element "includes" no longer | 
| 
7286c187596d
Improvements to Isar/Locales:  premises generated by "includes" elements
 ballarin parents: 
14199diff
changeset | 5046 | generate theorems with internal delta predicates (those ending on | 
| 
7286c187596d
Improvements to Isar/Locales:  premises generated by "includes" elements
 ballarin parents: 
14199diff
changeset | 5047 | "_axioms") in the premise. | 
| 
7286c187596d
Improvements to Isar/Locales:  premises generated by "includes" elements
 ballarin parents: 
14199diff
changeset | 5048 | Resolve particular premise with <locale>.intro to obtain old form. | 
| 
7286c187596d
Improvements to Isar/Locales:  premises generated by "includes" elements
 ballarin parents: 
14199diff
changeset | 5049 |   - Fixed bug in type inference ("unify_frozen") that prevented mix of target
 | 
| 
7286c187596d
Improvements to Isar/Locales:  premises generated by "includes" elements
 ballarin parents: 
14199diff
changeset | 5050 | specification and "includes" elements in goal statement. | 
| 14254 
342634f38451
Isar/Locales: <loc>.intro and <loc>.axioms no longer intro? and elim? by
 ballarin parents: 
14243diff
changeset | 5051 | - Rule sets <locale>.intro and <locale>.axioms no longer declared as | 
| 
342634f38451
Isar/Locales: <loc>.intro and <loc>.axioms no longer intro? and elim? by
 ballarin parents: 
14243diff
changeset | 5052 | [intro?] and [elim?] (respectively) by default. | 
| 14508 
859b11514537
Experimental command for instantiation of locales in proof contexts:
 ballarin parents: 
14503diff
changeset | 5053 | - Experimental command for instantiation of locales in proof contexts: | 
| 14551 | 5054 | instantiate <label>[<attrs>]: <loc> | 
| 14508 
859b11514537
Experimental command for instantiation of locales in proof contexts:
 ballarin parents: 
14503diff
changeset | 5055 | Instantiates locale <loc> and adds all its theorems to the current context | 
| 14551 | 5056 | taking into account their attributes. Label and attrs are optional | 
| 5057 | modifiers, like in theorem declarations. If present, names of | |
| 5058 | instantiated theorems are qualified with <label>, and the attributes | |
| 5059 | <attrs> are applied after any attributes these theorems might have already. | |
| 5060 | If the locale has assumptions, a chained fact of the form | |
| 14508 
859b11514537
Experimental command for instantiation of locales in proof contexts:
 ballarin parents: 
14503diff
changeset | 5061 | "<loc> t1 ... tn" is expected from which instantiations of the parameters | 
| 14551 | 5062 | are derived. The command does not support old-style locales declared | 
| 5063 | with "locale (open)". | |
| 5064 | A few (very simple) examples can be found in FOL/ex/LocaleInst.thy. | |
| 14175 
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
 ballarin parents: 
14173diff
changeset | 5065 | |
| 
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
 ballarin parents: 
14173diff
changeset | 5066 | * HOL: Tactic emulation methods induct_tac and case_tac understand static | 
| 
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
 ballarin parents: 
14173diff
changeset | 5067 | (Isar) contexts. | 
| 
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
 ballarin parents: 
14173diff
changeset | 5068 | |
| 14556 
c5078f6c99a9
* Calculation commands "moreover" and "also" no longer interfere with
 wenzelm parents: 
14551diff
changeset | 5069 | |
| 14136 | 5070 | *** HOL *** | 
| 5071 | ||
| 14624 | 5072 | * Proof import: new image HOL4 contains the imported library from | 
| 5073 | the HOL4 system with about 2500 theorems. It is imported by | |
| 5074 | replaying proof terms produced by HOL4 in Isabelle. The HOL4 image | |
| 5075 | can be used like any other Isabelle image. See | |
| 5076 | HOL/Import/HOL/README for more information. | |
| 5077 | ||
| 14398 
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
 ballarin parents: 
14389diff
changeset | 5078 | * Simplifier: | 
| 
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
 ballarin parents: 
14389diff
changeset | 5079 | - Much improved handling of linear and partial orders. | 
| 
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
 ballarin parents: 
14389diff
changeset | 5080 | Reasoners for linear and partial orders are set up for type classes | 
| 
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
 ballarin parents: 
14389diff
changeset | 5081 | "linorder" and "order" respectively, and are added to the default simpset | 
| 
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
 ballarin parents: 
14389diff
changeset | 5082 | as solvers. This means that the simplifier can build transitivity chains | 
| 
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
 ballarin parents: 
14389diff
changeset | 5083 | to solve goals from the assumptions. | 
| 
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
 ballarin parents: 
14389diff
changeset | 5084 | - INCOMPATIBILITY: old proofs break occasionally. Typically, applications | 
| 
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
 ballarin parents: 
14389diff
changeset | 5085 | of blast or auto after simplification become unnecessary because the goal | 
| 
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
 ballarin parents: 
14389diff
changeset | 5086 | is solved by simplification already. | 
| 
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
 ballarin parents: 
14389diff
changeset | 5087 | |
| 14731 | 5088 | * Numerics: new theory Ring_and_Field contains over 250 basic numerical laws, | 
| 14389 | 5089 | all proved in axiomatic type classes for semirings, rings and fields. | 
| 5090 | ||
| 5091 | * Numerics: | |
| 5092 | - Numeric types (nat, int, and in HOL-Complex rat, real, complex, etc.) are | |
| 14731 | 5093 | now formalized using the Ring_and_Field theory mentioned above. | 
| 14389 | 5094 | - INCOMPATIBILITY: simplification and arithmetic behaves somewhat differently | 
| 5095 | than before, because now they are set up once in a generic manner. | |
| 14731 | 5096 | - INCOMPATIBILITY: many type-specific arithmetic laws have gone. | 
| 14480 | 5097 | Look for the general versions in Ring_and_Field (and Power if they concern | 
| 5098 | exponentiation). | |
| 14389 | 5099 | |
| 14401 | 5100 | * Type "rat" of the rational numbers is now available in HOL-Complex. | 
| 14389 | 5101 | |
| 14255 | 5102 | * Records: | 
| 5103 | - Record types are now by default printed with their type abbreviation | |
| 5104 | instead of the list of all field types. This can be configured via | |
| 5105 | the reference "print_record_type_abbr". | |
| 14731 | 5106 | - Simproc "record_upd_simproc" for simplification of multiple updates added | 
| 14255 | 5107 | (not enabled by default). | 
| 14427 | 5108 | - Simproc "record_ex_sel_eq_simproc" to simplify EX x. sel r = x resp. | 
| 5109 | EX x. x = sel r to True (not enabled by default). | |
| 14255 | 5110 | - Tactic "record_split_simp_tac" to split and simplify records added. | 
| 14731 | 5111 | |
| 14136 | 5112 | * 'specification' command added, allowing for definition by | 
| 14224 | 5113 | specification. There is also an 'ax_specification' command that | 
| 5114 | introduces the new constants axiomatically. | |
| 14136 | 5115 | |
| 14375 | 5116 | * arith(_tac) is now able to generate counterexamples for reals as well. | 
| 5117 | ||
| 14399 
dc677b35e54f
New lemmas about inversion of restricted functions.
 ballarin parents: 
14398diff
changeset | 5118 | * HOL-Algebra: new locale "ring" for non-commutative rings. | 
| 
dc677b35e54f
New lemmas about inversion of restricted functions.
 ballarin parents: 
14398diff
changeset | 5119 | |
| 14243 | 5120 | * HOL-ex: InductiveInvariant_examples illustrates advanced recursive function | 
| 14610 | 5121 |   definitions, thanks to Sava Krsti\'{c} and John Matthews.
 | 
| 5122 | ||
| 14731 | 5123 | * HOL-Matrix: a first theory for matrices in HOL with an application of | 
| 14610 | 5124 | matrix theory to linear programming. | 
| 14136 | 5125 | |
| 14380 | 5126 | * Unions and Intersections: | 
| 15119 | 5127 | The latex output syntax of UN and INT has been changed | 
| 5128 |   from "\Union x \in A. B" to "\Union_{x \in A} B"
 | |
| 5129 | i.e. the index formulae has become a subscript. | |
| 5130 | Similarly for "\Union x. B", and for \Inter instead of \Union. | |
| 14380 | 5131 | |
| 14418 | 5132 | * Unions and Intersections over Intervals: | 
| 14731 | 5133 |   There is new short syntax "UN i<=n. A" for "UN i:{0..n}. A". There is
 | 
| 5134 | also an x-symbol version with subscripts "\<Union>\<^bsub>i <= n\<^esub>. A" | |
| 14418 | 5135 | like in normal math, and corresponding versions for < and for intersection. | 
| 5136 | ||
| 15677 | 5137 | * HOL/List: Ordering "lexico" is renamed "lenlex" and the standard | 
| 5138 | lexicographic dictonary ordering has been added as "lexord". | |
| 5139 | ||
| 14401 | 5140 | * ML: the legacy theory structures Int and List have been removed. They had | 
| 5141 | conflicted with ML Basis Library structures having the same names. | |
| 14380 | 5142 | |
| 14464 | 5143 | * 'refute' command added to search for (finite) countermodels. Only works | 
| 5144 | for a fragment of HOL. The installation of an external SAT solver is | |
| 5145 | highly recommended. See "HOL/Refute.thy" for details. | |
| 5146 | ||
| 14602 | 5147 | * 'quickcheck' command: Allows to find counterexamples by evaluating | 
| 5148 | formulae under an assignment of free variables to random values. | |
| 5149 | In contrast to 'refute', it can deal with inductive datatypes, | |
| 5150 | but cannot handle quantifiers. See "HOL/ex/Quickcheck_Examples.thy" | |
| 5151 | for examples. | |
| 14464 | 5152 | |
| 14606 | 5153 | |
| 14536 | 5154 | *** HOLCF *** | 
| 5155 | ||
| 5156 | * Streams now come with concatenation and are part of the HOLCF image | |
| 5157 | ||
| 14572 | 5158 | |
| 5159 | ||
| 14136 | 5160 | New in Isabelle2003 (May 2003) | 
| 14606 | 5161 | ------------------------------ | 
| 14136 | 5162 | |
| 13280 
306ef3aef61b
* improved thms_containing: proper indexing of facts instead of raw
 wenzelm parents: 
13190diff
changeset | 5163 | *** General *** | 
| 
306ef3aef61b
* improved thms_containing: proper indexing of facts instead of raw
 wenzelm parents: 
13190diff
changeset | 5164 | |
| 13618 | 5165 | * Provers/simplifier: | 
| 5166 | ||
| 13781 | 5167 | - Completely reimplemented method simp (ML: Asm_full_simp_tac): | 
| 13618 | 5168 | Assumptions are now subject to complete mutual simplification, | 
| 5169 | not just from left to right. The simplifier now preserves | |
| 5170 | the order of assumptions. | |
| 5171 | ||
| 5172 | Potential INCOMPATIBILITY: | |
| 5173 | ||
| 13781 | 5174 | -- simp sometimes diverges where the old version did | 
| 5175 | not, e.g. invoking simp on the goal | |
| 13618 | 5176 | |
| 5177 | [| P (f x); y = x; f x = f y |] ==> Q | |
| 5178 | ||
| 13781 | 5179 | now gives rise to the infinite reduction sequence | 
| 5180 | ||
| 5181 | P(f x) --(f x = f y)--> P(f y) --(y = x)--> P(f x) --(f x = f y)--> ... | |
| 5182 | ||
| 5183 | Using "simp (asm_lr)" (ML: Asm_lr_simp_tac) instead often solves this | |
| 5184 | kind of problem. | |
| 5185 | ||
| 5186 | -- Tactics combining classical reasoner and simplification (such as auto) | |
| 5187 | are also affected by this change, because many of them rely on | |
| 5188 | simp. They may sometimes diverge as well or yield a different numbers | |
| 5189 | of subgoals. Try to use e.g. force, fastsimp, or safe instead of auto | |
| 5190 | in case of problems. Sometimes subsequent calls to the classical | |
| 5191 | reasoner will fail because a preceeding call to the simplifier too | |
| 5192 | eagerly simplified the goal, e.g. deleted redundant premises. | |
| 13618 | 5193 | |
| 5194 | - The simplifier trace now shows the names of the applied rewrite rules | |
| 5195 | ||
| 13829 | 5196 | - You can limit the number of recursive invocations of the simplifier | 
| 5197 | during conditional rewriting (where the simplifie tries to solve the | |
| 5198 | conditions before applying the rewrite rule): | |
| 5199 | ML "simp_depth_limit := n" | |
| 5200 | where n is an integer. Thus you can force termination where previously | |
| 5201 | the simplifier would diverge. | |
| 5202 | ||
| 13835 
12b2ffbe543a
Change to meta simplifier: congruence rules may now have frees as head of term.
 ballarin parents: 
13829diff
changeset | 5203 | - Accepts free variables as head terms in congruence rules. Useful in Isar. | 
| 13829 | 5204 | |
| 13938 | 5205 | - No longer aborts on failed congruence proof. Instead, the | 
| 5206 | congruence is ignored. | |
| 5207 | ||
| 14008 | 5208 | * Pure: New generic framework for extracting programs from constructive | 
| 5209 | proofs. See HOL/Extraction.thy for an example instantiation, as well | |
| 5210 | as HOL/Extraction for some case studies. | |
| 5211 | ||
| 13868 | 5212 | * Pure: The main goal of the proof state is no longer shown by default, only | 
| 5213 | the subgoals. This behaviour is controlled by a new flag. | |
| 13835 
12b2ffbe543a
Change to meta simplifier: congruence rules may now have frees as head of term.
 ballarin parents: 
13829diff
changeset | 5214 | PG menu: Isabelle/Isar -> Settings -> Show Main Goal | 
| 13815 | 5215 | (ML: Proof.show_main_goal). | 
| 5216 | ||
| 5217 | * Pure: You can find all matching introduction rules for subgoal 1, i.e. all | |
| 5218 | rules whose conclusion matches subgoal 1: | |
| 5219 | PG menu: Isabelle/Isar -> Show me -> matching rules | |
| 5220 | The rules are ordered by how closely they match the subgoal. | |
| 5221 | In particular, rules that solve a subgoal outright are displayed first | |
| 5222 | (or rather last, the way they are printed). | |
| 5223 | (ML: ProofGeneral.print_intros()) | |
| 5224 | ||
| 5225 | * Pure: New flag trace_unify_fail causes unification to print | |
| 13781 | 5226 | diagnostic information (PG: in trace buffer) when it fails. This is | 
| 5227 | useful for figuring out why single step proofs like rule, erule or | |
| 5228 | assumption failed. | |
| 5229 | ||
| 13815 | 5230 | * Pure: Locale specifications now produce predicate definitions | 
| 13410 
f2cd09766864
* Pure: locale specifications now produce predicate definitions;
 wenzelm parents: 
13344diff
changeset | 5231 | according to the body of text (covering assumptions modulo local | 
| 
f2cd09766864
* Pure: locale specifications now produce predicate definitions;
 wenzelm parents: 
13344diff
changeset | 5232 | definitions); predicate "loc_axioms" covers newly introduced text, | 
| 
f2cd09766864
* Pure: locale specifications now produce predicate definitions;
 wenzelm parents: 
13344diff
changeset | 5233 | while "loc" is cumulative wrt. all included locale expressions; the | 
| 
f2cd09766864
* Pure: locale specifications now produce predicate definitions;
 wenzelm parents: 
13344diff
changeset | 5234 | latter view is presented only on export into the global theory | 
| 
f2cd09766864
* Pure: locale specifications now produce predicate definitions;
 wenzelm parents: 
13344diff
changeset | 5235 | context; potential INCOMPATIBILITY, use "(open)" option to fall back | 
| 
f2cd09766864
* Pure: locale specifications now produce predicate definitions;
 wenzelm parents: 
13344diff
changeset | 5236 | on the old view without predicates; | 
| 
f2cd09766864
* Pure: locale specifications now produce predicate definitions;
 wenzelm parents: 
13344diff
changeset | 5237 | |
| 13459 
83f41b047a39
* Pure: predefined locales "var" and "struct" are useful for sharing
 wenzelm parents: 
13443diff
changeset | 5238 | * Pure: predefined locales "var" and "struct" are useful for sharing | 
| 
83f41b047a39
* Pure: predefined locales "var" and "struct" are useful for sharing
 wenzelm parents: 
13443diff
changeset | 5239 | parameters (as in CASL, for example); just specify something like | 
| 
83f41b047a39
* Pure: predefined locales "var" and "struct" are useful for sharing
 wenzelm parents: 
13443diff
changeset | 5240 | ``var x + var y + struct M'' as import; | 
| 
83f41b047a39
* Pure: predefined locales "var" and "struct" are useful for sharing
 wenzelm parents: 
13443diff
changeset | 5241 | |
| 13463 
07747943c626
* Provers: Simplifier.simproc(_i) now provide sane interface for
 wenzelm parents: 
13459diff
changeset | 5242 | * Pure: improved thms_containing: proper indexing of facts instead of | 
| 
07747943c626
* Provers: Simplifier.simproc(_i) now provide sane interface for
 wenzelm parents: 
13459diff
changeset | 5243 | raw theorems; check validity of results wrt. current name space; | 
| 
07747943c626
* Provers: Simplifier.simproc(_i) now provide sane interface for
 wenzelm parents: 
13459diff
changeset | 5244 | include local facts of proof configuration (also covers active | 
| 13541 | 5245 | locales), cover fixed variables in index; may use "_" in term | 
| 5246 | specification; an optional limit for the number of printed facts may | |
| 5247 | be given (the default is 40); | |
| 5248 | ||
| 5249 | * Pure: disallow duplicate fact bindings within new-style theory files | |
| 5250 | (batch-mode only); | |
| 13540 
aede0306e214
* Pure: disallow duplicate fact bindings within new-style theory files;
 wenzelm parents: 
13522diff
changeset | 5251 | |
| 13463 
07747943c626
* Provers: Simplifier.simproc(_i) now provide sane interface for
 wenzelm parents: 
13459diff
changeset | 5252 | * Provers: improved induct method: assumptions introduced by case | 
| 
07747943c626
* Provers: Simplifier.simproc(_i) now provide sane interface for
 wenzelm parents: 
13459diff
changeset | 5253 | "foo" are split into "foo.hyps" (from the rule) and "foo.prems" (from | 
| 
07747943c626
* Provers: Simplifier.simproc(_i) now provide sane interface for
 wenzelm parents: 
13459diff
changeset | 5254 | the goal statement); "foo" still refers to all facts collectively; | 
| 
07747943c626
* Provers: Simplifier.simproc(_i) now provide sane interface for
 wenzelm parents: 
13459diff
changeset | 5255 | |
| 13550 | 5256 | * Provers: the function blast.overloaded has been removed: all constants | 
| 5257 | are regarded as potentially overloaded, which improves robustness in exchange | |
| 5258 | for slight decrease in efficiency; | |
| 5259 | ||
| 13781 | 5260 | * Provers/linorder: New generic prover for transitivity reasoning over | 
| 5261 | linear orders. Note: this prover is not efficient! | |
| 5262 | ||
| 13522 
934fffeb6f38
* Isar: preview of problems to finish 'show' now produce an error
 wenzelm parents: 
13518diff
changeset | 5263 | * Isar: preview of problems to finish 'show' now produce an error | 
| 
934fffeb6f38
* Isar: preview of problems to finish 'show' now produce an error
 wenzelm parents: 
13518diff
changeset | 5264 | rather than just a warning (in interactive mode); | 
| 
934fffeb6f38
* Isar: preview of problems to finish 'show' now produce an error
 wenzelm parents: 
13518diff
changeset | 5265 | |
| 13280 
306ef3aef61b
* improved thms_containing: proper indexing of facts instead of raw
 wenzelm parents: 
13190diff
changeset | 5266 | |
| 13158 | 5267 | *** HOL *** | 
| 5268 | ||
| 13899 | 5269 | * arith(_tac) | 
| 5270 | ||
| 5271 | - Produces a counter example if it cannot prove a goal. | |
| 5272 | Note that the counter example may be spurious if the goal is not a formula | |
| 5273 | of quantifier-free linear arithmetic. | |
| 5274 | In ProofGeneral the counter example appears in the trace buffer. | |
| 5275 | ||
| 5276 | - Knows about div k and mod k where k is a numeral of type nat or int. | |
| 5277 | ||
| 5278 | - Calls full Presburger arithmetic (by Amine Chaieb) if quantifier-free | |
| 5279 | linear arithmetic fails. This takes account of quantifiers and divisibility. | |
| 14731 | 5280 | Presburger arithmetic can also be called explicitly via presburger(_tac). | 
| 13899 | 5281 | |
| 5282 | * simp's arithmetic capabilities have been enhanced a bit: it now | |
| 5283 | takes ~= in premises into account (by performing a case split); | |
| 5284 | ||
| 5285 | * simp reduces "m*(n div m) + n mod m" to n, even if the two summands | |
| 5286 | are distributed over a sum of terms; | |
| 5287 | ||
| 13735 | 5288 | * New tactic "trans_tac" and method "trans" instantiate | 
| 5289 | Provers/linorder.ML for axclasses "order" and "linorder" (predicates | |
| 14731 | 5290 | "<=", "<" and "="). | 
| 5291 | ||
| 5292 | * function INCOMPATIBILITIES: Pi-sets have been redefined and moved from main | |
| 13587 | 5293 | HOL to Library/FuncSet; constant "Fun.op o" is now called "Fun.comp"; | 
| 5294 | ||
| 13443 | 5295 | * 'typedef' command has new option "open" to suppress the set | 
| 5296 | definition; | |
| 5297 | ||
| 13522 
934fffeb6f38
* Isar: preview of problems to finish 'show' now produce an error
 wenzelm parents: 
13518diff
changeset | 5298 | * functions Min and Max on finite sets have been introduced (theory | 
| 
934fffeb6f38
* Isar: preview of problems to finish 'show' now produce an error
 wenzelm parents: 
13518diff
changeset | 5299 | Finite_Set); | 
| 13492 | 5300 | |
| 13443 | 5301 | * attribute [symmetric] now works for relations as well; it turns | 
| 5302 | (x,y) : R^-1 into (y,x) : R, and vice versa; | |
| 5303 | ||
| 13613 | 5304 | * induct over a !!-quantified statement (say !!x1..xn): | 
| 5305 | each "case" automatically performs "fix x1 .. xn" with exactly those names. | |
| 5306 | ||
| 13899 | 5307 | * Map: `empty' is no longer a constant but a syntactic abbreviation for | 
| 5308 | %x. None. Warning: empty_def now refers to the previously hidden definition | |
| 5309 | of the empty set. | |
| 5310 | ||
| 14018 | 5311 | * Algebra: formalization of classical algebra. Intended as base for | 
| 5312 | any algebraic development in Isabelle. Currently covers group theory | |
| 5313 | (up to Sylow's theorem) and ring theory (Universal Property of | |
| 5314 | Univariate Polynomials). Contributions welcome; | |
| 13960 | 5315 | |
| 5316 | * GroupTheory: deleted, since its material has been moved to Algebra; | |
| 5317 | ||
| 14731 | 5318 | * Complex: new directory of the complex numbers with numeric constants, | 
| 5319 | nonstandard complex numbers, and some complex analysis, standard and | |
| 13966 
2160abf7cfe7
removal of the image HOL-Real and merging of HOL-Real-ex with HOL-Complex-ex
 paulson parents: 
13960diff
changeset | 5320 | nonstandard (Jacques Fleuriot); | 
| 
2160abf7cfe7
removal of the image HOL-Real and merging of HOL-Real-ex with HOL-Complex-ex
 paulson parents: 
13960diff
changeset | 5321 | |
| 
2160abf7cfe7
removal of the image HOL-Real and merging of HOL-Real-ex with HOL-Complex-ex
 paulson parents: 
13960diff
changeset | 5322 | * HOL-Complex: new image for analysis, replacing HOL-Real and HOL-Hyperreal; | 
| 
2160abf7cfe7
removal of the image HOL-Real and merging of HOL-Real-ex with HOL-Complex-ex
 paulson parents: 
13960diff
changeset | 5323 | |
| 14731 | 5324 | * Hyperreal: introduced Gauge integration and hyperreal logarithms (Jacques | 
| 13966 
2160abf7cfe7
removal of the image HOL-Real and merging of HOL-Real-ex with HOL-Complex-ex
 paulson parents: 
13960diff
changeset | 5325 | Fleuriot); | 
| 13960 | 5326 | |
| 13549 | 5327 | * Real/HahnBanach: updated and adapted to locales; | 
| 5328 | ||
| 13995 | 5329 | * NumberTheory: added Gauss's law of quadratic reciprocity (by Avigad, | 
| 5330 | Gray and Kramer); | |
| 13872 | 5331 | |
| 5332 | * UNITY: added the Meier-Sanders theory of progress sets; | |
| 5333 | ||
| 14011 | 5334 | * MicroJava: bytecode verifier and lightweight bytecode verifier | 
| 5335 | as abstract algorithms, instantiated to the JVM; | |
| 5336 | ||
| 14010 | 5337 | * Bali: Java source language formalization. Type system, operational | 
| 5338 | semantics, axiomatic semantics. Supported language features: | |
| 5339 | classes, interfaces, objects,virtual methods, static methods, | |
| 5340 | static/instance fields, arrays, access modifiers, definite | |
| 5341 | assignment, exceptions. | |
| 13549 | 5342 | |
| 14011 | 5343 | |
| 13549 | 5344 | *** ZF *** | 
| 5345 | ||
| 15154 | 5346 | * ZF/Constructible: consistency proof for AC (Gdel's constructible | 
| 13549 | 5347 | universe, etc.); | 
| 5348 | ||
| 13872 | 5349 | * Main ZF: virtually all theories converted to new-style format; | 
| 13518 | 5350 | |
| 13280 
306ef3aef61b
* improved thms_containing: proper indexing of facts instead of raw
 wenzelm parents: 
13190diff
changeset | 5351 | |
| 13478 | 5352 | *** ML *** | 
| 5353 | ||
| 5354 | * Pure: Tactic.prove provides sane interface for internal proofs; | |
| 5355 | omits the infamous "standard" operation, so this is more appropriate | |
| 5356 | than prove_goalw_cterm in many situations (e.g. in simprocs); | |
| 5357 | ||
| 5358 | * Pure: improved error reporting of simprocs; | |
| 5359 | ||
| 5360 | * Provers: Simplifier.simproc(_i) provides sane interface for setting | |
| 5361 | up simprocs; | |
| 5362 | ||
| 5363 | ||
| 13953 | 5364 | *** Document preparation *** | 
| 5365 | ||
| 5366 | * uses \par instead of \\ for line breaks in theory text. This may | |
| 5367 | shift some page breaks in large documents. To get the old behaviour | |
| 5368 | use \renewcommand{\isanewline}{\mbox{}\\\mbox{}} in root.tex.
 | |
| 5369 | ||
| 14731 | 5370 | * minimized dependencies of isabelle.sty and isabellesym.sty on | 
| 13953 | 5371 | other packages | 
| 5372 | ||
| 5373 | * \<euro> now needs package babel/greek instead of marvosym (which | |
| 5374 | broke \Rightarrow) | |
| 5375 | ||
| 14731 | 5376 | * normal size for \<zero>...\<nine> (uses \mathbf instead of | 
| 13954 | 5377 | textcomp package) | 
| 13953 | 5378 | |
| 13280 
306ef3aef61b
* improved thms_containing: proper indexing of facts instead of raw
 wenzelm parents: 
13190diff
changeset | 5379 | |
| 14572 | 5380 | |
| 12984 | 5381 | New in Isabelle2002 (March 2002) | 
| 5382 | -------------------------------- | |
| 11474 | 5383 | |
| 11572 | 5384 | *** Document preparation *** | 
| 5385 | ||
| 11842 
b903d3dabbe2
* greatly simplified document preparation setup, including more
 wenzelm parents: 
11817diff
changeset | 5386 | * greatly simplified document preparation setup, including more | 
| 
b903d3dabbe2
* greatly simplified document preparation setup, including more
 wenzelm parents: 
11817diff
changeset | 5387 | graceful interpretation of isatool usedir -i/-d/-D options, and more | 
| 
b903d3dabbe2
* greatly simplified document preparation setup, including more
 wenzelm parents: 
11817diff
changeset | 5388 | instructive isatool mkdir; users should basically be able to get | 
| 12899 
7d5b690253ee
"isatool usedir -D output HOL Test && isatool document Test/output";
 wenzelm parents: 
12889diff
changeset | 5389 | started with "isatool mkdir HOL Test && isatool make"; alternatively, | 
| 
7d5b690253ee
"isatool usedir -D output HOL Test && isatool document Test/output";
 wenzelm parents: 
12889diff
changeset | 5390 | users may run a separate document processing stage manually like this: | 
| 
7d5b690253ee
"isatool usedir -D output HOL Test && isatool document Test/output";
 wenzelm parents: 
12889diff
changeset | 5391 | "isatool usedir -D output HOL Test && isatool document Test/output"; | 
| 11842 
b903d3dabbe2
* greatly simplified document preparation setup, including more
 wenzelm parents: 
11817diff
changeset | 5392 | |
| 
b903d3dabbe2
* greatly simplified document preparation setup, including more
 wenzelm parents: 
11817diff
changeset | 5393 | * theory dependency graph may now be incorporated into documents; | 
| 
b903d3dabbe2
* greatly simplified document preparation setup, including more
 wenzelm parents: 
11817diff
changeset | 5394 | isatool usedir -g true will produce session_graph.eps/.pdf for use | 
| 
b903d3dabbe2
* greatly simplified document preparation setup, including more
 wenzelm parents: 
11817diff
changeset | 5395 | with \includegraphics of LaTeX; | 
| 
b903d3dabbe2
* greatly simplified document preparation setup, including more
 wenzelm parents: 
11817diff
changeset | 5396 | |
| 11864 
371ce685b0ec
* proper spacing of consecutive markup elements, especially text
 wenzelm parents: 
11842diff
changeset | 5397 | * proper spacing of consecutive markup elements, especially text | 
| 
371ce685b0ec
* proper spacing of consecutive markup elements, especially text
 wenzelm parents: 
11842diff
changeset | 5398 | blocks after section headings; | 
| 
371ce685b0ec
* proper spacing of consecutive markup elements, especially text
 wenzelm parents: 
11842diff
changeset | 5399 | |
| 11572 | 5400 | * support bold style (for single symbols only), input syntax is like | 
| 5401 | this: "\<^bold>\<alpha>" or "\<^bold>A"; | |
| 5402 | ||
| 11814 | 5403 | * \<bullet> is now output as bold \cdot by default, which looks much | 
| 11572 | 5404 | better in printed text; | 
| 5405 | ||
| 11712 
deb8cac87063
* added default LaTeX bindings for \<tturnstile> and \<TTurnstile>;
 wenzelm parents: 
11702diff
changeset | 5406 | * added default LaTeX bindings for \<tturnstile> and \<TTurnstile>; | 
| 
deb8cac87063
* added default LaTeX bindings for \<tturnstile> and \<TTurnstile>;
 wenzelm parents: 
11702diff
changeset | 5407 | note that these symbols are currently unavailable in Proof General / | 
| 12769 | 5408 | X-Symbol; new symbols \<zero>, \<one>, ..., \<nine>, and \<euro>; | 
| 12690 | 5409 | |
| 5410 | * isatool latex no longer depends on changed TEXINPUTS, instead | |
| 5411 | isatool document copies the Isabelle style files to the target | |
| 5412 | location; | |
| 11712 
deb8cac87063
* added default LaTeX bindings for \<tturnstile> and \<TTurnstile>;
 wenzelm parents: 
11702diff
changeset | 5413 | |
| 11572 | 5414 | |
| 11633 | 5415 | *** Isar *** | 
| 5416 | ||
| 12312 
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
 wenzelm parents: 
12280diff
changeset | 5417 | * Pure/Provers: improved proof by cases and induction; | 
| 12280 | 5418 | - 'case' command admits impromptu naming of parameters (such as | 
| 5419 | "case (Suc n)"); | |
| 5420 | - 'induct' method divinates rule instantiation from the inductive | |
| 5421 | claim; no longer requires excessive ?P bindings for proper | |
| 5422 | instantiation of cases; | |
| 5423 | - 'induct' method properly enumerates all possibilities of set/type | |
| 5424 | rules; as a consequence facts may be also passed through *type* | |
| 5425 | rules without further ado; | |
| 5426 | - 'induct' method now derives symbolic cases from the *rulified* | |
| 5427 | rule (before it used to rulify cases stemming from the internal | |
| 5428 | atomized version); this means that the context of a non-atomic | |
| 5429 | statement becomes is included in the hypothesis, avoiding the | |
| 5430 | slightly cumbersome show "PROP ?case" form; | |
| 5431 | - 'induct' may now use elim-style induction rules without chaining | |
| 5432 | facts, using ``missing'' premises from the goal state; this allows | |
| 5433 | rules stemming from inductive sets to be applied in unstructured | |
| 5434 | scripts, while still benefitting from proper handling of non-atomic | |
| 5435 | statements; NB: major inductive premises need to be put first, all | |
| 5436 | the rest of the goal is passed through the induction; | |
| 5437 | - 'induct' proper support for mutual induction involving non-atomic | |
| 5438 | rule statements (uses the new concept of simultaneous goals, see | |
| 5439 | below); | |
| 12853 | 5440 | - append all possible rule selections, but only use the first | 
| 5441 | success (no backtracking); | |
| 11995 
4a622f5fb164
  - 'induct' may now use elim-style induction rules without chaining
 wenzelm parents: 
11986diff
changeset | 5442 | - removed obsolete "(simplified)" and "(stripped)" options of methods; | 
| 12754 
044a59921f3b
Isar: undeclared rule case names default to numbers 1, 2, 3, ...;
 wenzelm parents: 
12753diff
changeset | 5443 | - undeclared rule case names default to numbers 1, 2, 3, ...; | 
| 
044a59921f3b
Isar: undeclared rule case names default to numbers 1, 2, 3, ...;
 wenzelm parents: 
12753diff
changeset | 5444 | - added 'print_induct_rules' (covered by help item in recent Proof | 
| 
044a59921f3b
Isar: undeclared rule case names default to numbers 1, 2, 3, ...;
 wenzelm parents: 
12753diff
changeset | 5445 | General versions); | 
| 11995 
4a622f5fb164
  - 'induct' may now use elim-style induction rules without chaining
 wenzelm parents: 
11986diff
changeset | 5446 | - moved induct/cases attributes to Pure, methods to Provers; | 
| 
4a622f5fb164
  - 'induct' may now use elim-style induction rules without chaining
 wenzelm parents: 
11986diff
changeset | 5447 | - generic method setup instantiated for FOL and HOL; | 
| 11986 
26b95a6f3f79
- 'induct' method now derives symbolic cases from the *rulified* rule
 wenzelm parents: 
11965diff
changeset | 5448 | |
| 12163 
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
 wenzelm parents: 
12159diff
changeset | 5449 | * Pure: support multiple simultaneous goal statements, for example | 
| 
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
 wenzelm parents: 
12159diff
changeset | 5450 | "have a: A and b: B" (same for 'theorem' etc.); being a pure | 
| 
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
 wenzelm parents: 
12159diff
changeset | 5451 | meta-level mechanism, this acts as if several individual goals had | 
| 
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
 wenzelm parents: 
12159diff
changeset | 5452 | been stated separately; in particular common proof methods need to be | 
| 
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
 wenzelm parents: 
12159diff
changeset | 5453 | repeated in order to cover all claims; note that a single elimination | 
| 
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
 wenzelm parents: 
12159diff
changeset | 5454 | step is *not* sufficient to establish the two conjunctions, so this | 
| 
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
 wenzelm parents: 
12159diff
changeset | 5455 | fails: | 
| 
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
 wenzelm parents: 
12159diff
changeset | 5456 | |
| 
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
 wenzelm parents: 
12159diff
changeset | 5457 | assume "A & B" then have A and B .. (*".." fails*) | 
| 
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
 wenzelm parents: 
12159diff
changeset | 5458 | |
| 
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
 wenzelm parents: 
12159diff
changeset | 5459 | better use "obtain" in situations as above; alternative refer to | 
| 
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
 wenzelm parents: 
12159diff
changeset | 5460 | multi-step methods like 'auto', 'simp_all', 'blast+' etc.; | 
| 
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
 wenzelm parents: 
12159diff
changeset | 5461 | |
| 12078 
4eb8061286e5
* Isar/Pure: proper integration with ``locales''; unlike the original
 wenzelm parents: 
12034diff
changeset | 5462 | * Pure: proper integration with ``locales''; unlike the original | 
| 15154 | 5463 | version by Florian Kammller, Isar locales package high-level proof | 
| 12078 
4eb8061286e5
* Isar/Pure: proper integration with ``locales''; unlike the original
 wenzelm parents: 
12034diff
changeset | 5464 | contexts rather than raw logical ones (e.g. we admit to include | 
| 12280 | 5465 | attributes everywhere); operations on locales include merge and | 
| 12964 | 5466 | rename; support for implicit arguments (``structures''); simultaneous | 
| 5467 | type-inference over imports and text; see also HOL/ex/Locales.thy for | |
| 5468 | some examples; | |
| 12078 
4eb8061286e5
* Isar/Pure: proper integration with ``locales''; unlike the original
 wenzelm parents: 
12034diff
changeset | 5469 | |
| 12707 
4013be8572c5
* Pure: localized 'lemmas', 'theorems', 'declare';
 wenzelm parents: 
12690diff
changeset | 5470 | * Pure: the following commands have been ``localized'', supporting a | 
| 
4013be8572c5
* Pure: localized 'lemmas', 'theorems', 'declare';
 wenzelm parents: 
12690diff
changeset | 5471 | target locale specification "(in name)": 'lemma', 'theorem', | 
| 
4013be8572c5
* Pure: localized 'lemmas', 'theorems', 'declare';
 wenzelm parents: 
12690diff
changeset | 5472 | 'corollary', 'lemmas', 'theorems', 'declare'; the results will be | 
| 
4013be8572c5
* Pure: localized 'lemmas', 'theorems', 'declare';
 wenzelm parents: 
12690diff
changeset | 5473 | stored both within the locale and at the theory level (exported and | 
| 
4013be8572c5
* Pure: localized 'lemmas', 'theorems', 'declare';
 wenzelm parents: 
12690diff
changeset | 5474 | qualified by the locale name); | 
| 
4013be8572c5
* Pure: localized 'lemmas', 'theorems', 'declare';
 wenzelm parents: 
12690diff
changeset | 5475 | |
| 12964 | 5476 | * Pure: theory goals may now be specified in ``long'' form, with | 
| 5477 | ad-hoc contexts consisting of arbitrary locale elements. for example | |
| 5478 | ``lemma foo: fixes x assumes "A x" shows "B x"'' (local syntax and | |
| 5479 | definitions may be given, too); the result is a meta-level rule with | |
| 5480 | the context elements being discharged in the obvious way; | |
| 5481 | ||
| 5482 | * Pure: new proof command 'using' allows to augment currently used | |
| 5483 | facts after a goal statement ('using' is syntactically analogous to
 | |
| 5484 | 'apply', but acts on the goal's facts only); this allows chained facts | |
| 5485 | to be separated into parts given before and after a claim, as in | |
| 5486 | ``from a and b have C using d and e <proof>''; | |
| 12078 
4eb8061286e5
* Isar/Pure: proper integration with ``locales''; unlike the original
 wenzelm parents: 
12034diff
changeset | 5487 | |
| 11722 | 5488 | * Pure: renamed "antecedent" case to "rule_context"; | 
| 5489 | ||
| 12964 | 5490 | * Pure: new 'judgment' command records explicit information about the | 
| 5491 | object-logic embedding (used by several tools internally); no longer | |
| 5492 | use hard-wired "Trueprop"; | |
| 5493 | ||
| 11738 | 5494 | * Pure: added 'corollary' command; | 
| 5495 | ||
| 11722 | 5496 | * Pure: fixed 'token_translation' command; | 
| 5497 | ||
| 11899 | 5498 | * Pure: removed obsolete 'exported' attribute; | 
| 5499 | ||
| 11933 | 5500 | * Pure: dummy pattern "_" in is/let is now automatically lifted over | 
| 5501 | bound variables: "ALL x. P x --> Q x" (is "ALL x. _ --> ?C x") | |
| 11899 | 5502 | supersedes more cumbersome ... (is "ALL x. _ x --> ?C x"); | 
| 5503 | ||
| 11952 
b10f1e8862f4
* Pure: method 'atomize' presents local goal premises as object-level
 wenzelm parents: 
11937diff
changeset | 5504 | * Pure: method 'atomize' presents local goal premises as object-level | 
| 
b10f1e8862f4
* Pure: method 'atomize' presents local goal premises as object-level
 wenzelm parents: 
11937diff
changeset | 5505 | statements (atomic meta-level propositions); setup controlled via | 
| 
b10f1e8862f4
* Pure: method 'atomize' presents local goal premises as object-level
 wenzelm parents: 
11937diff
changeset | 5506 | rewrite rules declarations of 'atomize' attribute; example | 
| 
b10f1e8862f4
* Pure: method 'atomize' presents local goal premises as object-level
 wenzelm parents: 
11937diff
changeset | 5507 | application: 'induct' method with proper rule statements in improper | 
| 
b10f1e8862f4
* Pure: method 'atomize' presents local goal premises as object-level
 wenzelm parents: 
11937diff
changeset | 5508 | proof *scripts*; | 
| 
b10f1e8862f4
* Pure: method 'atomize' presents local goal premises as object-level
 wenzelm parents: 
11937diff
changeset | 5509 | |
| 12106 
4a8558dbb6a0
* Isar/Pure: emulation of instantiation tactics (rule_tac, cut_tac,
 wenzelm parents: 
12078diff
changeset | 5510 | * Pure: emulation of instantiation tactics (rule_tac, cut_tac, etc.) | 
| 
4a8558dbb6a0
* Isar/Pure: emulation of instantiation tactics (rule_tac, cut_tac,
 wenzelm parents: 
12078diff
changeset | 5511 | now consider the syntactic context of assumptions, giving a better | 
| 
4a8558dbb6a0
* Isar/Pure: emulation of instantiation tactics (rule_tac, cut_tac,
 wenzelm parents: 
12078diff
changeset | 5512 | chance to get type-inference of the arguments right (this is | 
| 
4a8558dbb6a0
* Isar/Pure: emulation of instantiation tactics (rule_tac, cut_tac,
 wenzelm parents: 
12078diff
changeset | 5513 | especially important for locales); | 
| 
4a8558dbb6a0
* Isar/Pure: emulation of instantiation tactics (rule_tac, cut_tac,
 wenzelm parents: 
12078diff
changeset | 5514 | |
| 12312 
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
 wenzelm parents: 
12280diff
changeset | 5515 | * Pure: "sorry" no longer requires quick_and_dirty in interactive | 
| 
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
 wenzelm parents: 
12280diff
changeset | 5516 | mode; | 
| 
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
 wenzelm parents: 
12280diff
changeset | 5517 | |
| 12405 
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
 wenzelm parents: 
12364diff
changeset | 5518 | * Pure/obtain: the formal conclusion "thesis", being marked as | 
| 
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
 wenzelm parents: 
12364diff
changeset | 5519 | ``internal'', may no longer be reference directly in the text; | 
| 
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
 wenzelm parents: 
12364diff
changeset | 5520 | potential INCOMPATIBILITY, may need to use "?thesis" in rare | 
| 
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
 wenzelm parents: 
12364diff
changeset | 5521 | situations; | 
| 
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
 wenzelm parents: 
12364diff
changeset | 5522 | |
| 
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
 wenzelm parents: 
12364diff
changeset | 5523 | * Pure: generic 'sym' attribute which declares a rule both as pure | 
| 
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
 wenzelm parents: 
12364diff
changeset | 5524 | 'elim?' and for the 'symmetric' operation; | 
| 
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
 wenzelm parents: 
12364diff
changeset | 5525 | |
| 12877 
b9635eb8a448
* Isar/Pure: marginal comments ``--'' may now occur just anywhere in the text;
 wenzelm parents: 
12853diff
changeset | 5526 | * Pure: marginal comments ``--'' may now occur just anywhere in the | 
| 
b9635eb8a448
* Isar/Pure: marginal comments ``--'' may now occur just anywhere in the text;
 wenzelm parents: 
12853diff
changeset | 5527 | text; the fixed correlation with particular command syntax has been | 
| 
b9635eb8a448
* Isar/Pure: marginal comments ``--'' may now occur just anywhere in the text;
 wenzelm parents: 
12853diff
changeset | 5528 | discontinued; | 
| 
b9635eb8a448
* Isar/Pure: marginal comments ``--'' may now occur just anywhere in the text;
 wenzelm parents: 
12853diff
changeset | 5529 | |
| 13023 
f869b6822006
Added two paragraphs on "rules" method and code generator.
 berghofe parents: 
12984diff
changeset | 5530 | * Pure: new method 'rules' is particularly well-suited for proof | 
| 
f869b6822006
Added two paragraphs on "rules" method and code generator.
 berghofe parents: 
12984diff
changeset | 5531 | search in intuitionistic logic; a bit slower than 'blast' or 'fast', | 
| 
f869b6822006
Added two paragraphs on "rules" method and code generator.
 berghofe parents: 
12984diff
changeset | 5532 | but often produces more compact proof terms with less detours; | 
| 
f869b6822006
Added two paragraphs on "rules" method and code generator.
 berghofe parents: 
12984diff
changeset | 5533 | |
| 12364 
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
 wenzelm parents: 
12335diff
changeset | 5534 | * Pure/Provers/classical: simplified integration with pure rule | 
| 
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
 wenzelm parents: 
12335diff
changeset | 5535 | attributes and methods; the classical "intro?/elim?/dest?" | 
| 
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
 wenzelm parents: 
12335diff
changeset | 5536 | declarations coincide with the pure ones; the "rule" method no longer | 
| 
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
 wenzelm parents: 
12335diff
changeset | 5537 | includes classically swapped intros; "intro" and "elim" methods no | 
| 
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
 wenzelm parents: 
12335diff
changeset | 5538 | longer pick rules from the context; also got rid of ML declarations | 
| 
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
 wenzelm parents: 
12335diff
changeset | 5539 | AddXIs/AddXEs/AddXDs; all of this has some potential for | 
| 
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
 wenzelm parents: 
12335diff
changeset | 5540 | INCOMPATIBILITY; | 
| 
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
 wenzelm parents: 
12335diff
changeset | 5541 | |
| 12405 
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
 wenzelm parents: 
12364diff
changeset | 5542 | * Provers/classical: attribute 'swapped' produces classical inversions | 
| 
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
 wenzelm parents: 
12364diff
changeset | 5543 | of introduction rules; | 
| 
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
 wenzelm parents: 
12364diff
changeset | 5544 | |
| 12364 
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
 wenzelm parents: 
12335diff
changeset | 5545 | * Provers/simplifier: 'simplified' attribute may refer to explicit | 
| 
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
 wenzelm parents: 
12335diff
changeset | 5546 | rules instead of full simplifier context; 'iff' attribute handles | 
| 
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
 wenzelm parents: 
12335diff
changeset | 5547 | conditional rules; | 
| 11936 
fef099613354
* Provers: 'simplified' attribute may refer to explicit rules instead
 wenzelm parents: 
11933diff
changeset | 5548 | |
| 11745 
06cd8c3b5487
* HOL: 'typedef' now allows alternative names for Rep/Abs morphisms;
 wenzelm parents: 
11738diff
changeset | 5549 | * HOL: 'typedef' now allows alternative names for Rep/Abs morphisms; | 
| 
06cd8c3b5487
* HOL: 'typedef' now allows alternative names for Rep/Abs morphisms;
 wenzelm parents: 
11738diff
changeset | 5550 | |
| 11690 | 5551 | * HOL: 'recdef' now fails on unfinished automated proofs, use | 
| 11633 | 5552 | "(permissive)" option to recover old behavior; | 
| 5553 | ||
| 11933 | 5554 | * HOL: 'inductive' no longer features separate (collective) attributes | 
| 5555 | for 'intros' (was found too confusing); | |
| 5556 | ||
| 12405 
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
 wenzelm parents: 
12364diff
changeset | 5557 | * HOL: properly declared induction rules less_induct and | 
| 
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
 wenzelm parents: 
12364diff
changeset | 5558 | wf_induct_rule; | 
| 
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
 wenzelm parents: 
12364diff
changeset | 5559 | |
| 11788 
60054fee3c16
canonical 'cases'/'induct' rules for n-tuples (n=3..7)
 kleing parents: 
11745diff
changeset | 5560 | |
| 11474 | 5561 | *** HOL *** | 
| 5562 | ||
| 11702 | 5563 | * HOL: moved over to sane numeral syntax; the new policy is as | 
| 5564 | follows: | |
| 5565 | ||
| 5566 | - 0 and 1 are polymorphic constants, which are defined on any | |
| 5567 | numeric type (nat, int, real etc.); | |
| 5568 | ||
| 5569 | - 2, 3, 4, ... and -1, -2, -3, ... are polymorphic numerals, based | |
| 5570 | binary representation internally; | |
| 5571 | ||
| 5572 | - type nat has special constructor Suc, and generally prefers Suc 0 | |
| 5573 | over 1::nat and Suc (Suc 0) over 2::nat; | |
| 5574 | ||
| 12364 
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
 wenzelm parents: 
12335diff
changeset | 5575 | This change may cause significant problems of INCOMPATIBILITY; here | 
| 
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
 wenzelm parents: 
12335diff
changeset | 5576 | are some hints on converting existing sources: | 
| 11702 | 5577 | |
| 5578 | - due to the new "num" token, "-0" and "-1" etc. are now atomic | |
| 5579 | entities, so expressions involving "-" (unary or binary minus) need | |
| 5580 | to be spaced properly; | |
| 5581 | ||
| 5582 | - existing occurrences of "1" may need to be constraint "1::nat" or | |
| 5583 | even replaced by Suc 0; similar for old "2"; | |
| 5584 | ||
| 5585 | - replace "#nnn" by "nnn", and "#-nnn" by "-nnn"; | |
| 5586 | ||
| 5587 | - remove all special provisions on numerals in proofs; | |
| 5588 | ||
| 13042 | 5589 | * HOL: simp rules nat_number expand numerals on nat to Suc/0 | 
| 12837 | 5590 | representation (depends on bin_arith_simps in the default context); | 
| 5591 | ||
| 12736 | 5592 | * HOL: symbolic syntax for x^2 (numeral 2); | 
| 5593 | ||
| 12335 
db4d5f498742
* HOL: the class of all HOL types is now called "type" rather than
 wenzelm parents: 
12312diff
changeset | 5594 | * HOL: the class of all HOL types is now called "type" rather than | 
| 
db4d5f498742
* HOL: the class of all HOL types is now called "type" rather than
 wenzelm parents: 
12312diff
changeset | 5595 | "term"; INCOMPATIBILITY, need to adapt references to this type class | 
| 
db4d5f498742
* HOL: the class of all HOL types is now called "type" rather than
 wenzelm parents: 
12312diff
changeset | 5596 | in axclass/classes, instance/arities, and (usually rare) occurrences | 
| 
db4d5f498742
* HOL: the class of all HOL types is now called "type" rather than
 wenzelm parents: 
12312diff
changeset | 5597 | in typings (of consts etc.); internally the class is called | 
| 
db4d5f498742
* HOL: the class of all HOL types is now called "type" rather than
 wenzelm parents: 
12312diff
changeset | 5598 | "HOL.type", ML programs should refer to HOLogic.typeS; | 
| 
db4d5f498742
* HOL: the class of all HOL types is now called "type" rather than
 wenzelm parents: 
12312diff
changeset | 5599 | |
| 12280 | 5600 | * HOL/record package improvements: | 
| 5601 | - new derived operations "fields" to build a partial record section, | |
| 5602 | "extend" to promote a fixed record to a record scheme, and | |
| 5603 | "truncate" for the reverse; cf. theorems "xxx.defs", which are *not* | |
| 5604 | declared as simp by default; | |
| 12587 
3f3d2ffb5df5
HOL/record: shared operations ("more", "fields", etc.) now need to be
 wenzelm parents: 
12564diff
changeset | 5605 |   - shared operations ("more", "fields", etc.) now need to be always
 | 
| 
3f3d2ffb5df5
HOL/record: shared operations ("more", "fields", etc.) now need to be
 wenzelm parents: 
12564diff
changeset | 5606 | qualified) --- potential INCOMPATIBILITY; | 
| 12280 | 5607 | - removed "make_scheme" operations (use "make" with "extend") -- | 
| 5608 | INCOMPATIBILITY; | |
| 11937 | 5609 | - removed "more" class (simply use "term") -- INCOMPATIBILITY; | 
| 12253 | 5610 | - provides cases/induct rules for use with corresponding Isar | 
| 5611 | methods (for concrete records, record schemes, concrete more | |
| 12280 | 5612 | parts, and schematic more parts -- in that order); | 
| 11930 | 5613 | - internal definitions directly based on a light-weight abstract | 
| 5614 | theory of product types over typedef rather than datatype; | |
| 5615 | ||
| 13023 
f869b6822006
Added two paragraphs on "rules" method and code generator.
 berghofe parents: 
12984diff
changeset | 5616 | * HOL: generic code generator for generating executable ML code from | 
| 
f869b6822006
Added two paragraphs on "rules" method and code generator.
 berghofe parents: 
12984diff
changeset | 5617 | specifications; specific support for HOL constructs such as inductive | 
| 
f869b6822006
Added two paragraphs on "rules" method and code generator.
 berghofe parents: 
12984diff
changeset | 5618 | datatypes and sets, as well as recursive functions; can be invoked | 
| 
f869b6822006
Added two paragraphs on "rules" method and code generator.
 berghofe parents: 
12984diff
changeset | 5619 | via 'generate_code' theory section; | 
| 
f869b6822006
Added two paragraphs on "rules" method and code generator.
 berghofe parents: 
12984diff
changeset | 5620 | |
| 11933 | 5621 | * HOL: canonical cases/induct rules for n-tuples (n = 3..7); | 
| 5622 | ||
| 13824 | 5623 | * HOL: consolidated and renamed several theories. In particular: | 
| 14731 | 5624 | Ord.thy has been absorbed into HOL.thy | 
| 5625 | String.thy has been absorbed into List.thy | |
| 5626 | ||
| 11802 
1d5f5d2427d2
* HOL: concrete setsum syntax "\<Sum>i:A. b" == "setsum (%i. b) A"
 wenzelm parents: 
11797diff
changeset | 5627 | * HOL: concrete setsum syntax "\<Sum>i:A. b" == "setsum (%i. b) A" | 
| 
1d5f5d2427d2
* HOL: concrete setsum syntax "\<Sum>i:A. b" == "setsum (%i. b) A"
 wenzelm parents: 
11797diff
changeset | 5628 | (beware of argument permutation!); | 
| 
1d5f5d2427d2
* HOL: concrete setsum syntax "\<Sum>i:A. b" == "setsum (%i. b) A"
 wenzelm parents: 
11797diff
changeset | 5629 | |
| 11657 | 5630 | * HOL: linorder_less_split superseded by linorder_cases; | 
| 5631 | ||
| 12917 | 5632 | * HOL/List: "nodups" renamed to "distinct"; | 
| 12889 | 5633 | |
| 11633 | 5634 | * HOL: added "The" definite description operator; move Hilbert's "Eps" | 
| 13824 | 5635 | to peripheral theory "Hilbert_Choice"; some INCOMPATIBILITIES: | 
| 5636 | - Ex_def has changed, now need to use some_eq_ex | |
| 11437 | 5637 | |
| 11572 | 5638 | * HOL: made split_all_tac safe; EXISTING PROOFS MAY FAIL OR LOOP, so | 
| 5639 | in this (rare) case use: | |
| 5640 | ||
| 5641 | delSWrapper "split_all_tac" | |
| 5642 |   addSbefore ("unsafe_split_all_tac", unsafe_split_all_tac)
 | |
| 5643 | ||
| 5644 | * HOL: added safe wrapper "split_conv_tac" to claset; EXISTING PROOFS | |
| 11474 | 5645 | MAY FAIL; | 
| 11361 | 5646 | |
| 11572 | 5647 | * HOL: introduced f^n = f o ... o f; warning: due to the limits of | 
| 5648 | Isabelle's type classes, ^ on functions and relations has too general | |
| 5649 | a domain, namely ('a * 'b) set and 'a => 'b; this means that it may be
 | |
| 5650 | necessary to attach explicit type constraints; | |
| 11307 | 5651 | |
| 12917 | 5652 | * HOL/Relation: the prefix name of the infix "O" has been changed from | 
| 5653 | "comp" to "rel_comp"; INCOMPATIBILITY: a few theorems have been | |
| 5654 | renamed accordingly (eg "compI" -> "rel_compI"). | |
| 12489 | 5655 | |
| 11487 
95071c9e85a3
* HOL: syntax translations now work properly with numerals and records
 wenzelm parents: 
11475diff
changeset | 5656 | * HOL: syntax translations now work properly with numerals and records | 
| 
95071c9e85a3
* HOL: syntax translations now work properly with numerals and records
 wenzelm parents: 
11475diff
changeset | 5657 | expressions; | 
| 11474 | 5658 | |
| 12457 
cbfc53e45476
* HOL: bounded abstraction now uses syntax "%" / "\<lambda>" instead
 wenzelm parents: 
12405diff
changeset | 5659 | * HOL: bounded abstraction now uses syntax "%" / "\<lambda>" instead | 
| 
cbfc53e45476
* HOL: bounded abstraction now uses syntax "%" / "\<lambda>" instead
 wenzelm parents: 
12405diff
changeset | 5660 | of "lam" -- INCOMPATIBILITY; | 
| 11474 | 5661 | |
| 11933 | 5662 | * HOL: got rid of some global declarations (potential INCOMPATIBILITY | 
| 5663 | for ML tools): const "()" renamed "Product_Type.Unity", type "unit" | |
| 5664 | renamed "Product_Type.unit"; | |
| 11611 | 5665 | |
| 12564 | 5666 | * HOL: renamed rtrancl_into_rtrancl2 to converse_rtrancl_into_rtrancl | 
| 5667 | ||
| 12924 | 5668 | * HOL: removed obsolete theorem "optionE" (use "option.exhaust", or | 
| 5669 | the "cases" method); | |
| 5670 | ||
| 12597 
14822e4436bf
HOL/IMP and HOLCF/IMP updated and converted (Gerwin Klein);
 wenzelm parents: 
12587diff
changeset | 5671 | * HOL/GroupTheory: group theory examples including Sylow's theorem (by | 
| 15154 | 5672 | Florian Kammller); | 
| 12597 
14822e4436bf
HOL/IMP and HOLCF/IMP updated and converted (Gerwin Klein);
 wenzelm parents: 
12587diff
changeset | 5673 | |
| 12608 
2df381faa787
* ZF/IMP: updated and converted to new-style theory format;
 wenzelm parents: 
12597diff
changeset | 5674 | * HOL/IMP: updated and converted to new-style theory format; several | 
| 
2df381faa787
* ZF/IMP: updated and converted to new-style theory format;
 wenzelm parents: 
12597diff
changeset | 5675 | parts turned into readable document, with proper Isar proof texts and | 
| 
2df381faa787
* ZF/IMP: updated and converted to new-style theory format;
 wenzelm parents: 
12597diff
changeset | 5676 | some explanations (by Gerwin Klein); | 
| 12597 
14822e4436bf
HOL/IMP and HOLCF/IMP updated and converted (Gerwin Klein);
 wenzelm parents: 
12587diff
changeset | 5677 | |
| 12734 | 5678 | * HOL-Real: added Complex_Numbers (by Gertrud Bauer); | 
| 5679 | ||
| 12690 | 5680 | * HOL-Hyperreal is now a logic image; | 
| 5681 | ||
| 11611 | 5682 | |
| 12022 
9c3377b133c0
HOLCF: proper rep_datatype lift (see theory Lift); use plain induct_tac
 wenzelm parents: 
11995diff
changeset | 5683 | *** HOLCF *** | 
| 
9c3377b133c0
HOLCF: proper rep_datatype lift (see theory Lift); use plain induct_tac
 wenzelm parents: 
11995diff
changeset | 5684 | |
| 12622 | 5685 | * Isar: consts/constdefs supports mixfix syntax for continuous | 
| 5686 | operations; | |
| 5687 | ||
| 5688 | * Isar: domain package adapted to new-style theory format, e.g. see | |
| 5689 | HOLCF/ex/Dnat.thy; | |
| 5690 | ||
| 5691 | * theory Lift: proper use of rep_datatype lift instead of ML hacks -- | |
| 12280 | 5692 | potential INCOMPATIBILITY; now use plain induct_tac instead of former | 
| 5693 | lift.induct_tac, always use UU instead of Undef; | |
| 12022 
9c3377b133c0
HOLCF: proper rep_datatype lift (see theory Lift); use plain induct_tac
 wenzelm parents: 
11995diff
changeset | 5694 | |
| 12597 
14822e4436bf
HOL/IMP and HOLCF/IMP updated and converted (Gerwin Klein);
 wenzelm parents: 
12587diff
changeset | 5695 | * HOLCF/IMP: updated and converted to new-style theory; | 
| 
14822e4436bf
HOL/IMP and HOLCF/IMP updated and converted (Gerwin Klein);
 wenzelm parents: 
12587diff
changeset | 5696 | |
| 12022 
9c3377b133c0
HOLCF: proper rep_datatype lift (see theory Lift); use plain induct_tac
 wenzelm parents: 
11995diff
changeset | 5697 | |
| 11474 | 5698 | *** ZF *** | 
| 5699 | ||
| 12622 | 5700 | * Isar: proper integration of logic-specific tools and packages, | 
| 5701 | including theory commands '(co)inductive', '(co)datatype', | |
| 5702 | 'rep_datatype', 'inductive_cases', as well as methods 'ind_cases', | |
| 5703 | 'induct_tac', 'case_tac', and 'typecheck' (with attribute 'TC'); | |
| 5704 | ||
| 5705 | * theory Main no longer includes AC; for the Axiom of Choice, base | |
| 5706 | your theory on Main_ZFC; | |
| 5707 | ||
| 5708 | * the integer library now covers quotients and remainders, with many | |
| 5709 | laws relating division to addition, multiplication, etc.; | |
| 12563 | 5710 | |
| 12280 | 5711 | * ZF/UNITY: Chandy and Misra's UNITY is now available in ZF, giving a | 
| 5712 | typeless version of the formalism; | |
| 5713 | ||
| 13025 | 5714 | * ZF/AC, Coind, IMP, Resid: updated and converted to new-style theory | 
| 5715 | format; | |
| 12608 
2df381faa787
* ZF/IMP: updated and converted to new-style theory format;
 wenzelm parents: 
12597diff
changeset | 5716 | |
| 12280 | 5717 | * ZF/Induct: new directory for examples of inductive definitions, | 
| 12608 
2df381faa787
* ZF/IMP: updated and converted to new-style theory format;
 wenzelm parents: 
12597diff
changeset | 5718 | including theory Multiset for multiset orderings; converted to | 
| 
2df381faa787
* ZF/IMP: updated and converted to new-style theory format;
 wenzelm parents: 
12597diff
changeset | 5719 | new-style theory format; | 
| 12177 
b1c16d685a99
* ZF: new-style theory commands 'inductive', 'inductive_cases', and
 wenzelm parents: 
12163diff
changeset | 5720 | |
| 13025 | 5721 | * ZF: many new theorems about lists, ordinals, etc.; | 
| 12850 | 5722 | |
| 11474 | 5723 | |
| 5724 | *** General *** | |
| 5725 | ||
| 12280 | 5726 | * Pure/kernel: meta-level proof terms (by Stefan Berghofer); reference | 
| 5727 | variable proof controls level of detail: 0 = no proofs (only oracle | |
| 5728 | dependencies), 1 = lemma dependencies, 2 = compact proof terms; see | |
| 5729 | also ref manual for further ML interfaces; | |
| 5730 | ||
| 5731 | * Pure/axclass: removed obsolete ML interface | |
| 5732 | goal_subclass/goal_arity; | |
| 5733 | ||
| 5734 | * Pure/syntax: new token syntax "num" for plain numerals (without "#" | |
| 5735 | of "xnum"); potential INCOMPATIBILITY, since -0, -1 etc. are now | |
| 5736 | separate tokens, so expressions involving minus need to be spaced | |
| 5737 | properly; | |
| 5738 | ||
| 12312 
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
 wenzelm parents: 
12280diff
changeset | 5739 | * Pure/syntax: support non-oriented infixes, using keyword "infix" | 
| 
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
 wenzelm parents: 
12280diff
changeset | 5740 | rather than "infixl" or "infixr"; | 
| 
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
 wenzelm parents: 
12280diff
changeset | 5741 | |
| 
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
 wenzelm parents: 
12280diff
changeset | 5742 | * Pure/syntax: concrete syntax for dummy type variables admits genuine | 
| 
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
 wenzelm parents: 
12280diff
changeset | 5743 | sort constraint specifications in type inference; e.g. "x::_::foo" | 
| 
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
 wenzelm parents: 
12280diff
changeset | 5744 | ensures that the type of "x" is of sort "foo" (but not necessarily a | 
| 
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
 wenzelm parents: 
12280diff
changeset | 5745 | type variable); | 
| 12280 | 5746 | |
| 5747 | * Pure/syntax: print modes "type_brackets" and "no_type_brackets" | |
| 5748 | control output of nested => (types); the default behavior is | |
| 5749 | "type_brackets"; | |
| 5750 | ||
| 5751 | * Pure/syntax: builtin parse translation for "_constify" turns valued | |
| 11817 | 5752 | tokens into AST constants; | 
| 11474 | 5753 | |
| 12280 | 5754 | * Pure/syntax: prefer later declarations of translations and print | 
| 5755 | translation functions; potential INCOMPATIBILITY: need to reverse | |
| 5756 | multiple declarations for same syntax element constant; | |
| 5757 | ||
| 12832 
c31b44286a8a
* Pure/show_hyps reset by default (in accordance to existing Isar practice);
 wenzelm parents: 
12777diff
changeset | 5758 | * Pure/show_hyps reset by default (in accordance to existing Isar | 
| 
c31b44286a8a
* Pure/show_hyps reset by default (in accordance to existing Isar practice);
 wenzelm parents: 
12777diff
changeset | 5759 | practice); | 
| 
c31b44286a8a
* Pure/show_hyps reset by default (in accordance to existing Isar practice);
 wenzelm parents: 
12777diff
changeset | 5760 | |
| 12280 | 5761 | * Provers/classical: renamed addaltern to addafter, addSaltern to | 
| 5762 | addSafter; | |
| 5763 | ||
| 5764 | * Provers/clasimp: ``iff'' declarations now handle conditional rules | |
| 5765 | as well; | |
| 12253 | 5766 | |
| 12538 | 5767 | * system: tested support for MacOS X; should be able to get Isabelle + | 
| 5768 | Proof General to work in a plain Terminal after installing Poly/ML | |
| 5769 | (e.g. from the Isabelle distribution area) and GNU bash alone | |
| 5770 | (e.g. from http://www.apple.com); full X11, XEmacs and X-Symbol | |
| 5771 | support requires further installations, e.g. from | |
| 5772 | http://fink.sourceforge.net/); | |
| 5773 | ||
| 12280 | 5774 | * system: support Poly/ML 4.1.1 (able to manage larger heaps); | 
| 11551 | 5775 | |
| 12753 
3a62df7ae926
* system: reduced base memory usage by Poly/ML (approx. 20 MB instead
 wenzelm parents: 
12736diff
changeset | 5776 | * system: reduced base memory usage by Poly/ML (approx. 20 MB instead | 
| 
3a62df7ae926
* system: reduced base memory usage by Poly/ML (approx. 20 MB instead
 wenzelm parents: 
12736diff
changeset | 5777 | of 40 MB), cf. ML_OPTIONS; | 
| 
3a62df7ae926
* system: reduced base memory usage by Poly/ML (approx. 20 MB instead
 wenzelm parents: 
12736diff
changeset | 5778 | |
| 11633 | 5779 | * system: Proof General keywords specification is now part of the | 
| 5780 | Isabelle distribution (see etc/isar-keywords.el); | |
| 5781 | ||
| 12728 | 5782 | * system: support for persistent Proof General sessions (refrain from | 
| 5783 | outdating all loaded theories on startup); user may create writable | |
| 5784 | logic images like this: ``isabelle -q HOL Test''; | |
| 12597 
14822e4436bf
HOL/IMP and HOLCF/IMP updated and converted (Gerwin Klein);
 wenzelm parents: 
12587diff
changeset | 5785 | |
| 11551 | 5786 | * system: smart selection of Isabelle process versus Isabelle | 
| 11572 | 5787 | interface, accommodates case-insensitive file systems (e.g. HFS+); may | 
| 5788 | run both "isabelle" and "Isabelle" even if file names are badly | |
| 5789 | damaged (executable inspects the case of the first letter of its own | |
| 5790 | name); added separate "isabelle-process" and "isabelle-interface"; | |
| 11551 | 5791 | |
| 12472 | 5792 | * system: refrain from any attempt at filtering input streams; no | 
| 5793 | longer support ``8bit'' encoding of old isabelle font, instead proper | |
| 5794 | iso-latin characters may now be used; the related isatools | |
| 5795 | "symbolinput" and "nonascii" have disappeared as well; | |
| 5796 | ||
| 5797 | * system: removed old "xterm" interface (the print modes "xterm" and | |
| 5798 | "xterm_color" are still available for direct use in a suitable | |
| 5799 | terminal); | |
| 5800 | ||
| 11314 | 5801 | |
| 11169 
98c2f741e32b
made split_all_tac safe introducing safe_full_simp_tac, EXISTING PROOFS MAY FAIL
 oheimb parents: 
11130diff
changeset | 5802 | |
| 11062 | 5803 | New in Isabelle99-2 (February 2001) | 
| 5804 | ----------------------------------- | |
| 5805 | ||
| 10224 | 5806 | *** Overview of INCOMPATIBILITIES *** | 
| 5807 | ||
| 11241 | 5808 | * HOL: please note that theories in the Library and elsewhere often use the | 
| 5809 | new-style (Isar) format; to refer to their theorems in an ML script you must | |
| 12622 | 5810 | bind them to ML identifers by e.g. val thm_name = thm "thm_name"; | 
| 11241 | 5811 | |
| 11043 
2e3bbac8763b
HOL: inductive package no longer splits induction rule aggressively,
 wenzelm parents: 
11016diff
changeset | 5812 | * HOL: inductive package no longer splits induction rule aggressively, | 
| 
2e3bbac8763b
HOL: inductive package no longer splits induction rule aggressively,
 wenzelm parents: 
11016diff
changeset | 5813 | but only as far as specified by the introductions given; the old | 
| 11130 | 5814 | format may be recovered via ML function complete_split_rule or attribute | 
| 11043 
2e3bbac8763b
HOL: inductive package no longer splits induction rule aggressively,
 wenzelm parents: 
11016diff
changeset | 5815 | 'split_rule (complete)'; | 
| 
2e3bbac8763b
HOL: inductive package no longer splits induction rule aggressively,
 wenzelm parents: 
11016diff
changeset | 5816 | |
| 10998 | 5817 | * HOL: induct renamed to lfp_induct, lfp_Tarski to lfp_unfold, | 
| 5818 | gfp_Tarski to gfp_unfold; | |
| 10224 | 5819 | |
| 10288 | 5820 | * HOL: contrapos, contrapos2 renamed to contrapos_nn, contrapos_pp; | 
| 5821 | ||
| 10858 | 5822 | * HOL: infix "dvd" now has priority 50 rather than 70 (because it is a | 
| 5823 | relation); infix "^^" has been renamed "``"; infix "``" has been | |
| 5824 | renamed "`"; "univalent" has been renamed "single_valued"; | |
| 10793 | 5825 | |
| 10998 | 5826 | * HOL/Real: "rinv" and "hrinv" replaced by overloaded "inverse" | 
| 5827 | operation; | |
| 5828 | ||
| 10868 | 5829 | * HOLCF: infix "`" has been renamed "$"; the symbol syntax is \<cdot>; | 
| 10856 | 5830 | |
| 10391 | 5831 | * Isar: 'obtain' no longer declares "that" fact as simp/intro; | 
| 5832 | ||
| 10401 
58bb50f69497
* Isar/HOL: method 'induct' now handles non-atomic goals; as a
 wenzelm parents: 
10391diff
changeset | 5833 | * Isar/HOL: method 'induct' now handles non-atomic goals; as a | 
| 
58bb50f69497
* Isar/HOL: method 'induct' now handles non-atomic goals; as a
 wenzelm parents: 
10391diff
changeset | 5834 | consequence, it is no longer monotonic wrt. the local goal context | 
| 
58bb50f69497
* Isar/HOL: method 'induct' now handles non-atomic goals; as a
 wenzelm parents: 
10391diff
changeset | 5835 | (which is now passed through the inductive cases); | 
| 
58bb50f69497
* Isar/HOL: method 'induct' now handles non-atomic goals; as a
 wenzelm parents: 
10391diff
changeset | 5836 | |
| 10976 
0e7cf6f9fa29
* Document preparation: renamed standard symbols \<ll> to \<lless> and
 wenzelm parents: 
10966diff
changeset | 5837 | * Document preparation: renamed standard symbols \<ll> to \<lless> and | 
| 
0e7cf6f9fa29
* Document preparation: renamed standard symbols \<ll> to \<lless> and
 wenzelm parents: 
10966diff
changeset | 5838 | \<gg> to \<ggreater>; | 
| 
0e7cf6f9fa29
* Document preparation: renamed standard symbols \<ll> to \<lless> and
 wenzelm parents: 
10966diff
changeset | 5839 | |
| 10224 | 5840 | |
| 10245 
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
 wenzelm parents: 
10224diff
changeset | 5841 | *** Document preparation *** | 
| 
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
 wenzelm parents: 
10224diff
changeset | 5842 | |
| 10858 | 5843 | * \isabellestyle{NAME} selects version of Isabelle output (currently
 | 
| 5844 | available: are "it" for near math-mode best-style output, "sl" for | |
| 5845 | slanted text style, and "tt" for plain type-writer; if no | |
| 5846 | \isabellestyle command is given, output is according to slanted | |
| 5847 | type-writer); | |
| 5848 | ||
| 10322 
df38c61bf541
* support sub/super scripts (for single symbols only), input syntax is
 wenzelm parents: 
10306diff
changeset | 5849 | * support sub/super scripts (for single symbols only), input syntax is | 
| 
df38c61bf541
* support sub/super scripts (for single symbols only), input syntax is
 wenzelm parents: 
10306diff
changeset | 5850 | like this: "A\<^sup>*" or "A\<^sup>\<star>"; | 
| 
df38c61bf541
* support sub/super scripts (for single symbols only), input syntax is
 wenzelm parents: 
10306diff
changeset | 5851 | |
| 10858 | 5852 | * some more standard symbols; see Appendix A of the system manual for | 
| 11062 | 5853 | the complete list of symbols defined in isabellesym.sty; | 
| 10858 | 5854 | |
| 10998 | 5855 | * improved isabelle style files; more abstract symbol implementation | 
| 5856 | (should now use \isamath{...} and \isatext{...} in custom symbol
 | |
| 5857 | definitions); | |
| 5858 | ||
| 10634 | 5859 | * antiquotation @{goals} and @{subgoals} for output of *dynamic* goals
 | 
| 5860 | state; Note that presentation of goal states does not conform to | |
| 5861 | actual human-readable proof documents. Please do not include goal | |
| 5862 | states into document output unless you really know what you are doing! | |
| 10322 
df38c61bf541
* support sub/super scripts (for single symbols only), input syntax is
 wenzelm parents: 
10306diff
changeset | 5863 | |
| 11062 | 5864 | * proper indentation of antiquoted output with proportional LaTeX | 
| 5865 | fonts; | |
| 10862 | 5866 | |
| 11050 
ac5709ac50b9
* no_document ML operator temporarily disables LaTeX document
 wenzelm parents: 
11043diff
changeset | 5867 | * no_document ML operator temporarily disables LaTeX document | 
| 
ac5709ac50b9
* no_document ML operator temporarily disables LaTeX document
 wenzelm parents: 
11043diff
changeset | 5868 | generation; | 
| 
ac5709ac50b9
* no_document ML operator temporarily disables LaTeX document
 wenzelm parents: 
11043diff
changeset | 5869 | |
| 11062 | 5870 | * isatool unsymbolize tunes sources for plain ASCII communication; | 
| 5871 | ||
| 10322 
df38c61bf541
* support sub/super scripts (for single symbols only), input syntax is
 wenzelm parents: 
10306diff
changeset | 5872 | |
| 10306 
b0ab988a27a9
* HOL: default proof step now includes 'intro_classes';
 wenzelm parents: 
10288diff
changeset | 5873 | *** Isar *** | 
| 
b0ab988a27a9
* HOL: default proof step now includes 'intro_classes';
 wenzelm parents: 
10288diff
changeset | 5874 | |
| 10547 | 5875 | * Pure: Isar now suffers initial goal statements to contain unbound | 
| 5876 | schematic variables (this does not conform to actual readable proof | |
| 5877 | documents, due to unpredictable outcome and non-compositional proof | |
| 5878 | checking); users who know what they are doing may use schematic goals | |
| 5879 | for Prolog-style synthesis of proven results; | |
| 5880 | ||
| 10391 | 5881 | * Pure: assumption method (an implicit finishing) now handles actual | 
| 5882 | rules as well; | |
| 5883 | ||
| 5884 | * Pure: improved 'obtain' --- moved to Pure, insert "that" into | |
| 5885 | initial goal, declare "that" only as Pure intro (only for single | |
| 5886 | steps); the "that" rule assumption may now be involved in implicit | |
| 5887 | finishing, thus ".." becomes a feasible for trivial obtains; | |
| 5888 | ||
| 5889 | * Pure: default proof step now includes 'intro_classes'; thus trivial | |
| 5890 | instance proofs may be performed by ".."; | |
| 5891 | ||
| 5892 | * Pure: ?thesis / ?this / "..." now work for pure meta-level | |
| 5893 | statements as well; | |
| 10306 
b0ab988a27a9
* HOL: default proof step now includes 'intro_classes';
 wenzelm parents: 
10288diff
changeset | 5894 | |
| 11097 | 5895 | * Pure: more robust selection of calculational rules; | 
| 5896 | ||
| 10858 | 5897 | * Pure: the builtin notion of 'finished' goal now includes the ==-refl | 
| 5898 | rule (as well as the assumption rule); | |
| 5899 | ||
| 5900 | * Pure: 'thm_deps' command visualizes dependencies of theorems and | |
| 5901 | lemmas, using the graph browser tool; | |
| 5902 | ||
| 10944 | 5903 | * Pure: predict failure of "show" in interactive mode; | 
| 5904 | ||
| 11016 
8f8ba41a5e7a
* Pure: 'thms_containing' now takes actual terms as arguments;
 wenzelm parents: 
10998diff
changeset | 5905 | * Pure: 'thms_containing' now takes actual terms as arguments; | 
| 
8f8ba41a5e7a
* Pure: 'thms_containing' now takes actual terms as arguments;
 wenzelm parents: 
10998diff
changeset | 5906 | |
| 10401 
58bb50f69497
* Isar/HOL: method 'induct' now handles non-atomic goals; as a
 wenzelm parents: 
10391diff
changeset | 5907 | * HOL: improved method 'induct' --- now handles non-atomic goals | 
| 
58bb50f69497
* Isar/HOL: method 'induct' now handles non-atomic goals; as a
 wenzelm parents: 
10391diff
changeset | 5908 | (potential INCOMPATIBILITY); tuned error handling; | 
| 
58bb50f69497
* Isar/HOL: method 'induct' now handles non-atomic goals; as a
 wenzelm parents: 
10391diff
changeset | 5909 | |
| 10557 | 5910 | * HOL: cases and induct rules now provide explicit hints about the | 
| 10547 | 5911 | number of facts to be consumed (0 for "type" and 1 for "set" rules); | 
| 5912 | any remaining facts are inserted into the goal verbatim; | |
| 5913 | ||
| 10858 | 5914 | * HOL: local contexts (aka cases) may now contain term bindings as | 
| 5915 | well; the 'cases' and 'induct' methods new provide a ?case binding for | |
| 5916 | the result to be shown in each case; | |
| 5917 | ||
| 10770 | 5918 | * HOL: added 'recdef_tc' command; | 
| 5919 | ||
| 11016 
8f8ba41a5e7a
* Pure: 'thms_containing' now takes actual terms as arguments;
 wenzelm parents: 
10998diff
changeset | 5920 | * isatool convert assists in eliminating legacy ML scripts; | 
| 
8f8ba41a5e7a
* Pure: 'thms_containing' now takes actual terms as arguments;
 wenzelm parents: 
10998diff
changeset | 5921 | |
| 10306 
b0ab988a27a9
* HOL: default proof step now includes 'intro_classes';
 wenzelm parents: 
10288diff
changeset | 5922 | |
| 10245 
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
 wenzelm parents: 
10224diff
changeset | 5923 | *** HOL *** | 
| 
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
 wenzelm parents: 
10224diff
changeset | 5924 | |
| 
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
 wenzelm parents: 
10224diff
changeset | 5925 | * HOL/Library: a collection of generic theories to be used together | 
| 
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
 wenzelm parents: 
10224diff
changeset | 5926 | with main HOL; the theory loader path already includes this directory | 
| 
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
 wenzelm parents: 
10224diff
changeset | 5927 | by default; the following existing theories have been moved here: | 
| 
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
 wenzelm parents: 
10224diff
changeset | 5928 | HOL/Induct/Multiset, HOL/Induct/Acc (as Accessible_Part), HOL/While | 
| 10337 | 5929 | (as While_Combinator), HOL/Lex/Prefix (as List_Prefix); | 
| 10245 
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
 wenzelm parents: 
10224diff
changeset | 5930 | |
| 10966 | 5931 | * HOL/Unix: "Some aspects of Unix file-system security", a typical | 
| 5932 | modelling and verification task performed in Isabelle/HOL + | |
| 5933 | Isabelle/Isar + Isabelle document preparation (by Markus Wenzel). | |
| 5934 | ||
| 11094 | 5935 | * HOL/Algebra: special summation operator SUM no longer exists, it has | 
| 5936 | been replaced by setsum; infix 'assoc' now has priority 50 (like | |
| 5937 | 'dvd'); axiom 'one_not_zero' has been moved from axclass 'ring' to | |
| 5938 | 'domain', this makes the theory consistent with mathematical | |
| 5939 | literature; | |
| 5940 | ||
| 10514 | 5941 | * HOL basics: added overloaded operations "inverse" and "divide" | 
| 10726 | 5942 | (infix "/"), syntax for generic "abs" operation, generic summation | 
| 11094 | 5943 | operator \<Sum>; | 
| 10452 
abeefb0a79ae
* added overloaded operations "inverse" and "divide" (infix "/");
 wenzelm parents: 
10428diff
changeset | 5944 | |
| 10391 | 5945 | * HOL/typedef: simplified package, provide more useful rules (see also | 
| 5946 | HOL/subset.thy); | |
| 5947 | ||
| 10915 
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
 wenzelm parents: 
10868diff
changeset | 5948 | * HOL/datatype: induction rule for arbitrarily branching datatypes is | 
| 
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
 wenzelm parents: 
10868diff
changeset | 5949 | now expressed as a proper nested rule (old-style tactic scripts may | 
| 
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
 wenzelm parents: 
10868diff
changeset | 5950 | require atomize_strip_tac to cope with non-atomic premises); | 
| 
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
 wenzelm parents: 
10868diff
changeset | 5951 | |
| 
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
 wenzelm parents: 
10868diff
changeset | 5952 | * HOL: renamed theory "Prod" to "Product_Type", renamed "split" rule | 
| 
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
 wenzelm parents: 
10868diff
changeset | 5953 | to "split_conv" (old name still available for compatibility); | 
| 
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
 wenzelm parents: 
10868diff
changeset | 5954 | |
| 
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
 wenzelm parents: 
10868diff
changeset | 5955 | * HOL: improved concrete syntax for strings (e.g. allows translation | 
| 
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
 wenzelm parents: 
10868diff
changeset | 5956 | rules with string literals); | 
| 
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
 wenzelm parents: 
10868diff
changeset | 5957 | |
| 12245 | 5958 | * HOL-Real-Hyperreal: this extends HOL-Real with the hyperreals | 
| 5959 | and Fleuriot's mechanization of analysis, including the transcendental | |
| 5960 | functions for the reals; | |
| 10756 | 5961 | |
| 11094 | 5962 | * HOL/Real, HOL/Hyperreal: improved arithmetic simplification; | 
| 10391 | 5963 | |
| 10858 | 5964 | |
| 10474 | 5965 | *** CTT *** | 
| 5966 | ||
| 10547 | 5967 | * CTT: x-symbol support for Pi, Sigma, -->, : (membership); note that | 
| 5968 | "lam" is displayed as TWO lambda-symbols | |
| 10474 | 5969 | |
| 10547 | 5970 | * CTT: theory Main now available, containing everything (that is, Bool | 
| 5971 | and Arith); | |
| 5972 | ||
| 10474 | 5973 | |
| 10391 | 5974 | *** General *** | 
| 5975 | ||
| 10547 | 5976 | * Pure: the Simplifier has been implemented properly as a derived rule | 
| 5977 | outside of the actual kernel (at last!); the overall performance | |
| 5978 | penalty in practical applications is about 50%, while reliability of | |
| 5979 | the Isabelle inference kernel has been greatly improved; | |
| 5980 | ||
| 11112 | 5981 | * print modes "brackets" and "no_brackets" control output of nested => | 
| 5982 | (types) and ==> (props); the default behaviour is "brackets"; | |
| 5983 | ||
| 10391 | 5984 | * Provers: fast_tac (and friends) now handle actual object-logic rules | 
| 5985 | as assumptions as well; | |
| 5986 | ||
| 11124 | 5987 | * system: support Poly/ML 4.0; | 
| 5988 | ||
| 5989 | * system: isatool install handles KDE version 1 or 2; | |
| 5990 | ||
| 10391 | 5991 | |
| 10245 
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
 wenzelm parents: 
10224diff
changeset | 5992 | |
| 10103 | 5993 | New in Isabelle99-1 (October 2000) | 
| 5994 | ---------------------------------- | |
| 8015 | 5995 | |
| 10003 | 5996 | *** Overview of INCOMPATIBILITIES *** | 
| 8014 | 5997 | |
| 8848 | 5998 | * HOL: simplification of natural numbers is much changed; to partly | 
| 5999 | recover the old behaviour (e.g. to prevent n+n rewriting to #2*n) | |
| 6000 | issue the following ML commands: | |
| 6001 | ||
| 6002 | Delsimprocs Nat_Numeral_Simprocs.cancel_numerals; | |
| 6003 | Delsimprocs [Nat_Numeral_Simprocs.combine_numerals]; | |
| 8788 | 6004 | |
| 10129 | 6005 | * HOL: simplification no longer dives into case-expressions; this is | 
| 6006 | controlled by "t.weak_case_cong" for each datatype t; | |
| 10003 | 6007 | |
| 6008 | * HOL: nat_less_induct renamed to less_induct; | |
| 6009 | ||
| 6010 | * HOL: systematic renaming of the SOME (Eps) rules, may use isatool | |
| 6011 | fixsome to patch .thy and .ML sources automatically; | |
| 8967 | 6012 | |
| 10003 | 6013 | select_equality -> some_equality | 
| 6014 | select_eq_Ex -> some_eq_ex | |
| 6015 | selectI2EX -> someI2_ex | |
| 6016 | selectI2 -> someI2 | |
| 6017 | selectI -> someI | |
| 6018 | select1_equality -> some1_equality | |
| 6019 | Eps_sym_eq -> some_sym_eq_trivial | |
| 6020 | Eps_eq -> some_eq_trivial | |
| 6021 | ||
| 36856 
b343091e81d8
reverted parts of 7902dc7ea11d -- note that NEWS of published Isabelle releases are essentially read-only;
 wenzelm parents: 
36849diff
changeset | 6022 | * HOL: exhaust_tac on datatypes superceded by new generic case_tac; | 
| 10003 | 6023 | |
| 6024 | * HOL: removed obsolete theorem binding expand_if (refer to split_if | |
| 6025 | instead); | |
| 6026 | ||
| 6027 | * HOL: the recursion equations generated by 'recdef' are now called | |
| 6028 | f.simps instead of f.rules; | |
| 6029 | ||
| 6030 | * HOL: qed_spec_mp now also handles bounded ALL as well; | |
| 6031 | ||
| 6032 | * HOL: 0 is now overloaded, so the type constraint ":: nat" may | |
| 6033 | sometimes be needed; | |
| 6034 | ||
| 6035 | * HOL: the constant for "f``x" is now "image" rather than "op ``"; | |
| 8014 | 6036 | |
| 10065 | 6037 | * HOL: the constant for "f-``x" is now "vimage" rather than "op -``"; | 
| 6038 | ||
| 9330 
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
 wenzelm parents: 
9288diff
changeset | 6039 | * HOL: the disjoint sum is now "<+>" instead of "Plus"; the cartesian | 
| 
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
 wenzelm parents: 
9288diff
changeset | 6040 | product is now "<*>" instead of "Times"; the lexicographic product is | 
| 
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
 wenzelm parents: 
9288diff
changeset | 6041 | now "<*lex*>" instead of "**"; | 
| 8705 | 6042 | |
| 10003 | 6043 | * HOL: theory Sexp is now in HOL/Induct examples (it used to be part | 
| 6044 | of main HOL, but was unused); better use HOL's datatype package; | |
| 9971 | 6045 | |
| 10137 
d1c2bef01e2f
removed "symbols" syntax for constant "override";
 wenzelm parents: 
10129diff
changeset | 6046 | * HOL: removed "symbols" syntax for constant "override" of theory Map; | 
| 
d1c2bef01e2f
removed "symbols" syntax for constant "override";
 wenzelm parents: 
10129diff
changeset | 6047 | the old syntax may be recovered as follows: | 
| 
d1c2bef01e2f
removed "symbols" syntax for constant "override";
 wenzelm parents: 
10129diff
changeset | 6048 | |
| 
d1c2bef01e2f
removed "symbols" syntax for constant "override";
 wenzelm parents: 
10129diff
changeset | 6049 | syntax (symbols) | 
| 
d1c2bef01e2f
removed "symbols" syntax for constant "override";
 wenzelm parents: 
10129diff
changeset | 6050 |     override  :: "('a ~=> 'b) => ('a ~=> 'b) => ('a ~=> 'b)"
 | 
| 
d1c2bef01e2f
removed "symbols" syntax for constant "override";
 wenzelm parents: 
10129diff
changeset | 6051 | (infixl "\\<oplus>" 100) | 
| 
d1c2bef01e2f
removed "symbols" syntax for constant "override";
 wenzelm parents: 
10129diff
changeset | 6052 | |
| 8848 | 6053 | * HOL/Real: "rabs" replaced by overloaded "abs" function; | 
| 6054 | ||
| 8887 
c0c583ce0b0b
* HOL/ML: even fewer consts are declared as global (see theories Ord,
 wenzelm parents: 
8848diff
changeset | 6055 | * HOL/ML: even fewer consts are declared as global (see theories Ord, | 
| 
c0c583ce0b0b
* HOL/ML: even fewer consts are declared as global (see theories Ord,
 wenzelm parents: 
8848diff
changeset | 6056 | Lfp, Gfp, WF); this only affects ML packages that refer to const names | 
| 
c0c583ce0b0b
* HOL/ML: even fewer consts are declared as global (see theories Ord,
 wenzelm parents: 
8848diff
changeset | 6057 | internally; | 
| 
c0c583ce0b0b
* HOL/ML: even fewer consts are declared as global (see theories Ord,
 wenzelm parents: 
8848diff
changeset | 6058 | |
| 10003 | 6059 | * HOL and ZF: syntax for quotienting wrt an equivalence relation | 
| 6060 | changed from A/r to A//r; | |
| 9908 | 6061 | |
| 10003 | 6062 | * ZF: new treatment of arithmetic (nat & int) may break some old | 
| 6063 | proofs; | |
| 8921 
7c04c98132c4
* Pure: changed syntax of local blocks from {{ }} to { };
 wenzelm parents: 
8887diff
changeset | 6064 | |
| 10003 | 6065 | * Isar: renamed some attributes (RS -> THEN, simplify -> simplified, | 
| 6066 | rulify -> rule_format, elimify -> elim_format, ...); | |
| 9542 | 6067 | |
| 9941 
fe05af7ec816
renamed atts: rulify to rule_format, elimify to elim_format;
 wenzelm parents: 
9937diff
changeset | 6068 | * Isar/Provers: intro/elim/dest attributes changed; renamed | 
| 
fe05af7ec816
renamed atts: rulify to rule_format, elimify to elim_format;
 wenzelm parents: 
9937diff
changeset | 6069 | intro/intro!/intro!! flags to intro!/intro/intro? (in most cases, one | 
| 9937 | 6070 | should have to change intro!! to intro? only); replaced "delrule" by | 
| 6071 | "rule del"; | |
| 9437 
93e91040c286
* Isar/Provers: intro/elim/dest attributes: changed
 wenzelm parents: 
9402diff
changeset | 6072 | |
| 9612 | 6073 | * Isar/HOL: renamed "intrs" to "intros" in inductive definitions; | 
| 6074 | ||
| 9437 
93e91040c286
* Isar/Provers: intro/elim/dest attributes: changed
 wenzelm parents: 
9402diff
changeset | 6075 | * Provers: strengthened force_tac by using new first_best_tac; | 
| 9402 | 6076 | |
| 10003 | 6077 | * LaTeX document preparation: several changes of isabelle.sty (see | 
| 6078 | lib/texinputs); | |
| 8729 
094dbd0fad0c
* improved name spaces: ambiguous output is qualified; support for
 wenzelm parents: 
8705diff
changeset | 6079 | |
| 8014 | 6080 | |
| 8487 | 6081 | *** Document preparation *** | 
| 8358 
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
 wenzelm parents: 
8283diff
changeset | 6082 | |
| 9198 
0ab3c81e9425
* formal comments (text blocks etc.) in new-style theories may now
 wenzelm parents: 
9185diff
changeset | 6083 | * formal comments (text blocks etc.) in new-style theories may now | 
| 9753 | 6084 | contain antiquotations of thm/prop/term/typ/text to be presented | 
| 6085 | according to latex print mode; concrete syntax is like this: | |
| 6086 | @{term[show_types] "f(x) = a + x"};
 | |
| 9198 
0ab3c81e9425
* formal comments (text blocks etc.) in new-style theories may now
 wenzelm parents: 
9185diff
changeset | 6087 | |
| 8358 
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
 wenzelm parents: 
8283diff
changeset | 6088 | * isatool mkdir provides easy setup of Isabelle session directories, | 
| 8518 | 6089 | including proper document sources; | 
| 8358 
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
 wenzelm parents: 
8283diff
changeset | 6090 | |
| 
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
 wenzelm parents: 
8283diff
changeset | 6091 | * generated LaTeX sources are now deleted after successful run | 
| 
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
 wenzelm parents: 
8283diff
changeset | 6092 | (isatool document -c); may retain a copy somewhere else via -D option | 
| 
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
 wenzelm parents: 
8283diff
changeset | 6093 | of isatool usedir; | 
| 
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
 wenzelm parents: 
8283diff
changeset | 6094 | |
| 8566 | 6095 | * isatool usedir -D now lets isatool latex -o sty update the Isabelle | 
| 10003 | 6096 | style files, achieving self-contained LaTeX sources and simplifying | 
| 6097 | LaTeX debugging; | |
| 8566 | 6098 | |
| 8518 | 6099 | * old-style theories now produce (crude) LaTeX output as well; | 
| 8358 
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
 wenzelm parents: 
8283diff
changeset | 6100 | |
| 9057 
af1ca1acf292
* browser info session directories are now self-contained (may be put
 wenzelm parents: 
9052diff
changeset | 6101 | * browser info session directories are now self-contained (may be put | 
| 9437 
93e91040c286
* Isar/Provers: intro/elim/dest attributes: changed
 wenzelm parents: 
9402diff
changeset | 6102 | on WWW server seperately); improved graphs of nested sessions; removed | 
| 
93e91040c286
* Isar/Provers: intro/elim/dest attributes: changed
 wenzelm parents: 
9402diff
changeset | 6103 | graph for 'all sessions'; | 
| 9057 
af1ca1acf292
* browser info session directories are now self-contained (may be put
 wenzelm parents: 
9052diff
changeset | 6104 | |
| 10003 | 6105 | * several improvements in isabelle style files; \isabellestyle{it}
 | 
| 6106 | produces fake math mode output; \isamarkupheader is now \section by | |
| 6107 | default; see lib/texinputs/isabelle.sty etc.; | |
| 9489 
aa757b35b129
* blast(_tac) now handles actual object-logic rules as assumptions;
 wenzelm parents: 
9457diff
changeset | 6108 | |
| 8358 
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
 wenzelm parents: 
8283diff
changeset | 6109 | |
| 8184 | 6110 | *** Isar *** | 
| 6111 | ||
| 10003 | 6112 | * Isar/Pure: local results and corresponding term bindings are now | 
| 6113 | subject to Hindley-Milner polymorphism (similar to ML); this | |
| 6114 | accommodates incremental type-inference very nicely; | |
| 8283 
0a319c5746eb
* Pure now provides its own version of intro/elim/dest attributes;
 wenzelm parents: 
8271diff
changeset | 6115 | |
| 10003 | 6116 | * Isar/Pure: new derived language element 'obtain' supports | 
| 6117 | generalized existence reasoning; | |
| 8621 
8ba0f90f6f35
* Isar/Pure: local results and corresponding term bindings are now
 wenzelm parents: 
8603diff
changeset | 6118 | |
| 10003 | 6119 | * Isar/Pure: new calculational elements 'moreover' and 'ultimately' | 
| 6120 | support accumulation of results, without applying any rules yet; | |
| 6121 | useful to collect intermediate results without explicit name | |
| 6122 | references, and for use with transitivity rules with more than 2 | |
| 6123 | premises; | |
| 8184 | 6124 | |
| 10003 | 6125 | * Isar/Pure: scalable support for case-analysis type proofs: new | 
| 6126 | 'case' language element refers to local contexts symbolically, as | |
| 6127 | produced by certain proof methods; internally, case names are attached | |
| 6128 | to theorems as "tags"; | |
| 8440 
d66f0f14b1ca
* HOL: exhaust_tac on datatypes superceded by new case_tac;
 wenzelm parents: 
8425diff
changeset | 6129 | |
| 10003 | 6130 | * Isar/Pure: theory command 'hide' removes declarations from | 
| 9330 
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
 wenzelm parents: 
9288diff
changeset | 6131 | class/type/const name spaces; | 
| 
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
 wenzelm parents: 
9288diff
changeset | 6132 | |
| 10003 | 6133 | * Isar/Pure: theory command 'defs' supports option "(overloaded)" to | 
| 9330 
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
 wenzelm parents: 
9288diff
changeset | 6134 | indicate potential overloading; | 
| 
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
 wenzelm parents: 
9288diff
changeset | 6135 | |
| 10003 | 6136 | * Isar/Pure: changed syntax of local blocks from {{ }} to { };
 | 
| 8621 
8ba0f90f6f35
* Isar/Pure: local results and corresponding term bindings are now
 wenzelm parents: 
8603diff
changeset | 6137 | |
| 10003 | 6138 | * Isar/Pure: syntax of sorts made 'inner', i.e. have to write | 
| 6139 | "{a,b,c}" instead of {a,b,c};
 | |
| 9011 
0cfc347f8d19
Isar/Pure: removed obsolete 'transfer' attribute (transfer of thms to
 wenzelm parents: 
8994diff
changeset | 6140 | |
| 10003 | 6141 | * Isar/Pure now provides its own version of intro/elim/dest | 
| 6142 | attributes; useful for building new logics, but beware of confusion | |
| 6143 | with the version in Provers/classical; | |
| 9612 | 6144 | |
| 10003 | 6145 | * Isar/Pure: the local context of (non-atomic) goals is provided via | 
| 6146 | case name 'antecedent'; | |
| 8440 
d66f0f14b1ca
* HOL: exhaust_tac on datatypes superceded by new case_tac;
 wenzelm parents: 
8425diff
changeset | 6147 | |
| 10003 | 6148 | * Isar/Pure: removed obsolete 'transfer' attribute (transfer of thms | 
| 6149 | to the current context is now done automatically); | |
| 9383 
c21fa1c48de0
* HOL: removed obsolete expand_if = split_if; theorems if_splits =
 wenzelm parents: 
9349diff
changeset | 6150 | |
| 10003 | 6151 | * Isar/Pure: theory command 'method_setup' provides a simple interface | 
| 6152 | for definining proof methods in ML; | |
| 9612 | 6153 | |
| 10003 | 6154 | * Isar/Provers: intro/elim/dest attributes changed; renamed | 
| 9941 
fe05af7ec816
renamed atts: rulify to rule_format, elimify to elim_format;
 wenzelm parents: 
9937diff
changeset | 6155 | intro/intro!/intro!! flags to intro!/intro/intro? (INCOMPATIBILITY, in | 
| 
fe05af7ec816
renamed atts: rulify to rule_format, elimify to elim_format;
 wenzelm parents: 
9937diff
changeset | 6156 | most cases, one should have to change intro!! to intro? only); | 
| 
fe05af7ec816
renamed atts: rulify to rule_format, elimify to elim_format;
 wenzelm parents: 
9937diff
changeset | 6157 | replaced "delrule" by "rule del"; | 
| 8283 
0a319c5746eb
* Pure now provides its own version of intro/elim/dest attributes;
 wenzelm parents: 
8271diff
changeset | 6158 | |
| 10003 | 6159 | * Isar/Provers: new 'hypsubst' method, plain 'subst' method and | 
| 36856 
b343091e81d8
reverted parts of 7902dc7ea11d -- note that NEWS of published Isabelle releases are essentially read-only;
 wenzelm parents: 
36849diff
changeset | 6160 | 'symmetric' attribute (the latter supercedes [RS sym]); | 
| 10003 | 6161 | |
| 6162 | * Isar/Provers: splitter support (via 'split' attribute and 'simp' | |
| 6163 | method modifier); 'simp' method: 'only:' modifier removes loopers as | |
| 6164 | well (including splits); | |
| 6165 | ||
| 6166 | * Isar/Provers: Simplifier and Classical methods now support all kind | |
| 6167 | of modifiers used in the past, including 'cong', 'iff', etc. | |
| 6168 | ||
| 6169 | * Isar/Provers: added 'fastsimp' and 'clarsimp' methods (combination | |
| 6170 | of Simplifier and Classical reasoner); | |
| 6171 | ||
| 6172 | * Isar/HOL: new proof method 'cases' and improved version of 'induct' | |
| 6173 | now support named cases; major packages (inductive, datatype, primrec, | |
| 6174 | recdef) support case names and properly name parameters; | |
| 9612 | 6175 | |
| 10003 | 6176 | * Isar/HOL: new transitivity rules for substitution in inequalities -- | 
| 6177 | monotonicity conditions are extracted to be proven at end of | |
| 6178 | calculations; | |
| 6179 | ||
| 6180 | * Isar/HOL: removed 'case_split' thm binding, should use 'cases' proof | |
| 6181 | method anyway; | |
| 6182 | ||
| 6183 | * Isar/HOL: removed old expand_if = split_if; theorems if_splits = | |
| 6184 | split_if split_if_asm; datatype package provides theorems foo.splits = | |
| 6185 | foo.split foo.split_asm for each datatype; | |
| 6186 | ||
| 6187 | * Isar/HOL: tuned inductive package, rename "intrs" to "intros" | |
| 6188 | (potential INCOMPATIBILITY), emulation of mk_cases feature for proof | |
| 6189 | scripts: new 'inductive_cases' command and 'ind_cases' method; (Note: | |
| 6190 | use "(cases (simplified))" method in proper proof texts); | |
| 6191 | ||
| 6192 | * Isar/HOL: added global 'arith_split' attribute for 'arith' method; | |
| 6193 | ||
| 6194 | * Isar: names of theorems etc. may be natural numbers as well; | |
| 6195 | ||
| 6196 | * Isar: 'pr' command: optional arguments for goals_limit and | |
| 9724 
2030c5d63741
* 'pr' command: optional argument for ProofContext.prems_limit;
 wenzelm parents: 
9709diff
changeset | 6197 | ProofContext.prems_limit; no longer prints theory contexts, but only | 
| 
2030c5d63741
* 'pr' command: optional argument for ProofContext.prems_limit;
 wenzelm parents: 
9709diff
changeset | 6198 | proof states; | 
| 8487 | 6199 | |
| 10003 | 6200 | * Isar: diagnostic commands 'pr', 'thm', 'prop', 'term', 'typ' admit | 
| 8518 | 6201 | additional print modes to be specified; e.g. "pr(latex)" will print | 
| 6202 | proof state according to the Isabelle LaTeX style; | |
| 8487 | 6203 | |
| 10003 | 6204 | * Isar: improved support for emulating tactic scripts, including proof | 
| 9612 | 6205 | methods 'rule_tac' etc., 'cut_tac', 'thin_tac', 'subgoal_tac', | 
| 6206 | 'rename_tac', 'rotate_tac', 'tactic', and 'case_tac' / 'induct_tac' | |
| 6207 | (for HOL datatypes); | |
| 8534 | 6208 | |
| 10003 | 6209 | * Isar: simplified (more robust) goal selection of proof methods: 1st | 
| 6210 | goal, all goals, or explicit goal specifier (tactic emulation); thus | |
| 6211 | 'proof method scripts' have to be in depth-first order; | |
| 8673 
987ea1a559d0
Isar: simplified (more robust) goal selection of proof methods;
 wenzelm parents: 
8655diff
changeset | 6212 | |
| 10003 | 6213 | * Isar: tuned 'let' syntax: replaced 'as' keyword by 'and'; | 
| 8729 
094dbd0fad0c
* improved name spaces: ambiguous output is qualified; support for
 wenzelm parents: 
8705diff
changeset | 6214 | |
| 10003 | 6215 | * Isar: removed 'help' command, which hasn't been too helpful anyway; | 
| 6216 | should instead use individual commands for printing items | |
| 6217 | (print_commands, print_methods etc.); | |
| 9224 
0da360494917
* Isar: removed 'help' command, which hasn't been too helpful anyway;
 wenzelm parents: 
9198diff
changeset | 6218 | |
| 10003 | 6219 | * Isar: added 'nothing' --- the empty list of theorems; | 
| 9239 | 6220 | |
| 8184 | 6221 | |
| 8014 | 6222 | *** HOL *** | 
| 6223 | ||
| 10080 | 6224 | * HOL/MicroJava: formalization of a fragment of Java, together with a | 
| 6225 | corresponding virtual machine and a specification of its bytecode | |
| 6226 | verifier and a lightweight bytecode verifier, including proofs of | |
| 6227 | type-safety; by Gerwin Klein, Tobias Nipkow, David von Oheimb, and | |
| 6228 | Cornelia Pusch (see also the homepage of project Bali at | |
| 6229 | http://isabelle.in.tum.de/Bali/); | |
| 6230 | ||
| 8518 | 6231 | * HOL/Algebra: new theory of rings and univariate polynomials, by | 
| 6232 | Clemens Ballarin; | |
| 8014 | 6233 | |
| 10157 
6d3987f3aad9
* HOL/Lattice: fundamental concepts of lattice theory and order structures;
 wenzelm parents: 
10137diff
changeset | 6234 | * HOL/NumberTheory: fundamental Theorem of Arithmetic, Chinese | 
| 10003 | 6235 | Remainder Theorem, Fermat/Euler Theorem, Wilson's Theorem, by Thomas M | 
| 6236 | Rasmussen; | |
| 8570 | 6237 | |
| 10157 
6d3987f3aad9
* HOL/Lattice: fundamental concepts of lattice theory and order structures;
 wenzelm parents: 
10137diff
changeset | 6238 | * HOL/Lattice: fundamental concepts of lattice theory and order | 
| 
6d3987f3aad9
* HOL/Lattice: fundamental concepts of lattice theory and order structures;
 wenzelm parents: 
10137diff
changeset | 6239 | structures, including duals, properties of bounds versus algebraic | 
| 
6d3987f3aad9
* HOL/Lattice: fundamental concepts of lattice theory and order structures;
 wenzelm parents: 
10137diff
changeset | 6240 | laws, lattice operations versus set-theoretic ones, the Knaster-Tarski | 
| 
6d3987f3aad9
* HOL/Lattice: fundamental concepts of lattice theory and order structures;
 wenzelm parents: 
10137diff
changeset | 6241 | Theorem for complete lattices etc.; may also serve as a demonstration | 
| 
6d3987f3aad9
* HOL/Lattice: fundamental concepts of lattice theory and order structures;
 wenzelm parents: 
10137diff
changeset | 6242 | for abstract algebraic reasoning using axiomatic type classes, and | 
| 
6d3987f3aad9
* HOL/Lattice: fundamental concepts of lattice theory and order structures;
 wenzelm parents: 
10137diff
changeset | 6243 | mathematics-style proof in Isabelle/Isar; by Markus Wenzel; | 
| 
6d3987f3aad9
* HOL/Lattice: fundamental concepts of lattice theory and order structures;
 wenzelm parents: 
10137diff
changeset | 6244 | |
| 10003 | 6245 | * HOL/Prolog: a (bare-bones) implementation of Lambda-Prolog, by David | 
| 6246 | von Oheimb; | |
| 9542 | 6247 | |
| 10164 
c240747082aa
* HOL/IMPP: extension of IMP with local variables and mutually
 wenzelm parents: 
10157diff
changeset | 6248 | * HOL/IMPP: extension of IMP with local variables and mutually | 
| 
c240747082aa
* HOL/IMPP: extension of IMP with local variables and mutually
 wenzelm parents: 
10157diff
changeset | 6249 | recursive procedures, by David von Oheimb; | 
| 
c240747082aa
* HOL/IMPP: extension of IMP with local variables and mutually
 wenzelm parents: 
10157diff
changeset | 6250 | |
| 10003 | 6251 | * HOL/Lambda: converted into new-style theory and document; | 
| 9542 | 6252 | |
| 10003 | 6253 | * HOL/ex/Multiquote: example of multiple nested quotations and | 
| 6254 | anti-quotations -- basically a generalized version of de-Bruijn | |
| 6255 | representation; very useful in avoiding lifting of operations; | |
| 8848 | 6256 | |
| 9612 | 6257 | * HOL/record: added general record equality rule to simpset; fixed | 
| 6258 | select-update simplification procedure to handle extended records as | |
| 6259 | well; admit "r" as field name; | |
| 9542 | 6260 | |
| 8967 | 6261 | * HOL: 0 is now overloaded over the new sort "zero", allowing its use with | 
| 6262 | other numeric types and also as the identity of groups, rings, etc.; | |
| 6263 | ||
| 6264 | * HOL: new axclass plus_ac0 for addition with the AC-laws and 0 as identity. | |
| 6265 | Types nat and int belong to this axclass; | |
| 6266 | ||
| 10003 | 6267 | * HOL: greatly improved simplification involving numerals of type nat, int, real: | 
| 8788 | 6268 | (i + #8 + j) = Suc k simplifies to #7 + (i + j) = k | 
| 8832 | 6269 | i*j + k + j*#3*i simplifies to #4*(i*j) + k | 
| 6270 | two terms #m*u and #n*u are replaced by #(m+n)*u | |
| 6271 | (where #m, #n and u can implicitly be 1; this is simproc combine_numerals) | |
| 6272 | and the term/formula #m*u+x ~~ #n*u+y simplifies simplifies to #(m-n)+x ~~ y | |
| 6273 | or x ~~ #(n-m)+y, where ~~ is one of = < <= or - (simproc cancel_numerals); | |
| 8736 | 6274 | |
| 10003 | 6275 | * HOL: meson_tac is available (previously in ex/meson.ML); it is a | 
| 6276 | powerful prover for predicate logic but knows nothing of clasets; see | |
| 6277 | ex/mesontest.ML and ex/mesontest2.ML for example applications; | |
| 9835 | 6278 | |
| 8848 | 6279 | * HOL: new version of "case_tac" subsumes both boolean case split and | 
| 8440 
d66f0f14b1ca
* HOL: exhaust_tac on datatypes superceded by new case_tac;
 wenzelm parents: 
8425diff
changeset | 6280 | "exhaust_tac" on datatypes; INCOMPATIBILITY: exhaust_tac no longer | 
| 8518 | 6281 | exists, may define val exhaust_tac = case_tac for ad-hoc portability; | 
| 8440 
d66f0f14b1ca
* HOL: exhaust_tac on datatypes superceded by new case_tac;
 wenzelm parents: 
8425diff
changeset | 6282 | |
| 8848 | 6283 | * HOL: simplification no longer dives into case-expressions: only the | 
| 10129 | 6284 | selector expression is simplified, but not the remaining arms; to | 
| 6285 | enable full simplification of case-expressions for datatype t, you may | |
| 6286 | remove t.weak_case_cong from the simpset, either globally (Delcongs | |
| 6287 | [thm"t.weak_case_cong"];) or locally (delcongs [...]). | |
| 8603 | 6288 | |
| 8848 | 6289 | * HOL/recdef: the recursion equations generated by 'recdef' for | 
| 6290 | function 'f' are now called f.simps instead of f.rules; if all | |
| 6291 | termination conditions are proved automatically, these simplification | |
| 6292 | rules are added to the simpset, as in primrec; rules may be named | |
| 6293 | individually as well, resulting in a separate list of theorems for | |
| 6294 | each equation; | |
| 6295 | ||
| 9489 
aa757b35b129
* blast(_tac) now handles actual object-logic rules as assumptions;
 wenzelm parents: 
9457diff
changeset | 6296 | * HOL/While is a new theory that provides a while-combinator. It | 
| 
aa757b35b129
* blast(_tac) now handles actual object-logic rules as assumptions;
 wenzelm parents: 
9457diff
changeset | 6297 | permits the definition of tail-recursive functions without the | 
| 
aa757b35b129
* blast(_tac) now handles actual object-logic rules as assumptions;
 wenzelm parents: 
9457diff
changeset | 6298 | provision of a termination measure. The latter is necessary once the | 
| 
aa757b35b129
* blast(_tac) now handles actual object-logic rules as assumptions;
 wenzelm parents: 
9457diff
changeset | 6299 | invariant proof rule for while is applied. | 
| 9457 | 6300 | |
| 10003 | 6301 | * HOL: new (overloaded) notation for the set of elements below/above | 
| 6302 | some element: {..u}, {..u(}, {l..}, {)l..}. See theory SetInterval.
 | |
| 8925 | 6303 | |
| 8848 | 6304 | * HOL: theorems impI, allI, ballI bound as "strip"; | 
| 6305 | ||
| 10003 | 6306 | * HOL: new tactic induct_thm_tac: thm -> string -> int -> tactic | 
| 9746 | 6307 | induct_tac th "x1 ... xn" expects th to have a conclusion of the form | 
| 6308 | P v1 ... vn and abbreviates res_inst_tac [("v1","x1"),...,("vn","xn")] th;
 | |
| 6309 | ||
| 10003 | 6310 | * HOL/Real: "rabs" replaced by overloaded "abs" function; | 
| 9737 | 6311 | |
| 10003 | 6312 | * HOL: theory Sexp now in HOL/Induct examples (it used to be part of | 
| 6313 | main HOL, but was unused); | |
| 8626 | 6314 | |
| 10003 | 6315 | * HOL: fewer consts declared as global (e.g. have to refer to | 
| 6316 | "Lfp.lfp" instead of "lfp" internally; affects ML packages only); | |
| 8887 
c0c583ce0b0b
* HOL/ML: even fewer consts are declared as global (see theories Ord,
 wenzelm parents: 
8848diff
changeset | 6317 | |
| 10003 | 6318 | * HOL: tuned AST representation of nested pairs, avoiding bogus output | 
| 6319 | in case of overlap with user translations (e.g. judgements over | |
| 6320 | tuples); (note that the underlying logical represenation is still | |
| 6321 | bogus); | |
| 9349 
d43669fb423d
* tuned AST representation of nested pairs, avoiding bogus output in
 wenzelm parents: 
9335diff
changeset | 6322 | |
| 8412 | 6323 | |
| 9542 | 6324 | *** ZF *** | 
| 6325 | ||
| 10003 | 6326 | * ZF: simplification automatically cancels common terms in arithmetic | 
| 6327 | expressions over nat and int; | |
| 9542 | 6328 | |
| 10003 | 6329 | * ZF: new treatment of nat to minimize type-checking: all operators | 
| 6330 | coerce their operands to a natural number using the function natify, | |
| 6331 | making the algebraic laws unconditional; | |
| 9542 | 6332 | |
| 10003 | 6333 | * ZF: as above, for int: operators coerce their operands to an integer | 
| 6334 | using the function intify; | |
| 9542 | 6335 | |
| 10003 | 6336 | * ZF: the integer library now contains many of the usual laws for the | 
| 6337 | orderings, including $<=, and monotonicity laws for $+ and $*; | |
| 9542 | 6338 | |
| 10003 | 6339 | * ZF: new example ZF/ex/NatSum to demonstrate integer arithmetic | 
| 6340 | simplification; | |
| 9388 | 6341 | |
| 10003 | 6342 | * FOL and ZF: AddIffs now available, giving theorems of the form P<->Q | 
| 6343 | to the simplifier and classical reasoner simultaneously; | |
| 9388 | 6344 | |
| 6345 | ||
| 8358 
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
 wenzelm parents: 
8283diff
changeset | 6346 | *** General *** | 
| 
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
 wenzelm parents: 
8283diff
changeset | 6347 | |
| 10003 | 6348 | * Provers: blast_tac now handles actual object-logic rules as | 
| 6349 | assumptions; note that auto_tac uses blast_tac internally as well; | |
| 6350 | ||
| 6351 | * Provers: new functions rulify/rulify_no_asm: thm -> thm for turning | |
| 6352 | outer -->/All/Ball into ==>/!!; qed_spec_mp now uses rulify_no_asm; | |
| 6353 | ||
| 9941 
fe05af7ec816
renamed atts: rulify to rule_format, elimify to elim_format;
 wenzelm parents: 
9937diff
changeset | 6354 | * Provers: delrules now handles destruct rules as well (no longer need | 
| 
fe05af7ec816
renamed atts: rulify to rule_format, elimify to elim_format;
 wenzelm parents: 
9937diff
changeset | 6355 | explicit make_elim); | 
| 
fe05af7ec816
renamed atts: rulify to rule_format, elimify to elim_format;
 wenzelm parents: 
9937diff
changeset | 6356 | |
| 10003 | 6357 | * Provers: Blast_tac now warns of and ignores "weak elimination rules" e.g. | 
| 6358 | [| inj ?f; ?f ?x = ?f ?y; ?x = ?y ==> ?W |] ==> ?W | |
| 6359 | use instead the strong form, | |
| 6360 | [| inj ?f; ~ ?W ==> ?f ?x = ?f ?y; ?x = ?y ==> ?W |] ==> ?W | |
| 6361 | in HOL, FOL and ZF the function cla_make_elim will create such rules | |
| 6362 | from destruct-rules; | |
| 9489 
aa757b35b129
* blast(_tac) now handles actual object-logic rules as assumptions;
 wenzelm parents: 
9457diff
changeset | 6363 | |
| 9709 
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
 wenzelm parents: 
9701diff
changeset | 6364 | * Provers: Simplifier.easy_setup provides a fast path to basic | 
| 
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
 wenzelm parents: 
9701diff
changeset | 6365 | Simplifier setup for new object-logics; | 
| 
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
 wenzelm parents: 
9701diff
changeset | 6366 | |
| 
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
 wenzelm parents: 
9701diff
changeset | 6367 | * Pure: AST translation rules no longer require constant head on LHS; | 
| 9349 
d43669fb423d
* tuned AST representation of nested pairs, avoiding bogus output in
 wenzelm parents: 
9335diff
changeset | 6368 | |
| 9709 
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
 wenzelm parents: 
9701diff
changeset | 6369 | * Pure: improved name spaces: ambiguous output is qualified; support | 
| 
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
 wenzelm parents: 
9701diff
changeset | 6370 | for hiding of names; | 
| 8729 
094dbd0fad0c
* improved name spaces: ambiguous output is qualified; support for
 wenzelm parents: 
8705diff
changeset | 6371 | |
| 10003 | 6372 | * system: smart setup of canonical ML_HOME, ISABELLE_INTERFACE, and | 
| 6373 | XSYMBOL_HOME; no longer need to do manual configuration in most | |
| 6374 | situations; | |
| 6375 | ||
| 9709 
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
 wenzelm parents: 
9701diff
changeset | 6376 | * system: compression of ML heaps images may now be controlled via -c | 
| 
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
 wenzelm parents: 
9701diff
changeset | 6377 | option of isabelle and isatool usedir (currently only observed by | 
| 
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
 wenzelm parents: 
9701diff
changeset | 6378 | Poly/ML); | 
| 8358 
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
 wenzelm parents: 
8283diff
changeset | 6379 | |
| 9981 
01a0c4772c18
system: isatool installfonts may handle X-Symbol fonts as well;
 wenzelm parents: 
9971diff
changeset | 6380 | * system: isatool installfonts may handle X-Symbol fonts as well (very | 
| 
01a0c4772c18
system: isatool installfonts may handle X-Symbol fonts as well;
 wenzelm parents: 
9971diff
changeset | 6381 | useful for remote X11); | 
| 
01a0c4772c18
system: isatool installfonts may handle X-Symbol fonts as well;
 wenzelm parents: 
9971diff
changeset | 6382 | |
| 9709 
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
 wenzelm parents: 
9701diff
changeset | 6383 | * system: provide TAGS file for Isabelle sources; | 
| 9052 | 6384 | |
| 9288 
06a55195741b
infix 'OF' is a version of 'MRS' with more appropriate argument order;
 wenzelm parents: 
9239diff
changeset | 6385 | * ML: infix 'OF' is a version of 'MRS' with more appropriate argument | 
| 
06a55195741b
infix 'OF' is a version of 'MRS' with more appropriate argument order;
 wenzelm parents: 
9239diff
changeset | 6386 | order; | 
| 
06a55195741b
infix 'OF' is a version of 'MRS' with more appropriate argument order;
 wenzelm parents: 
9239diff
changeset | 6387 | |
| 8994 
803533fbb3ec
* ML: renamed flags Syntax.trace_norm_ast to Syntax.trace_ast; global
 wenzelm parents: 
8991diff
changeset | 6388 | * ML: renamed flags Syntax.trace_norm_ast to Syntax.trace_ast; global | 
| 
803533fbb3ec
* ML: renamed flags Syntax.trace_norm_ast to Syntax.trace_ast; global
 wenzelm parents: 
8991diff
changeset | 6389 | timing flag supersedes proof_timing and Toplevel.trace; | 
| 
803533fbb3ec
* ML: renamed flags Syntax.trace_norm_ast to Syntax.trace_ast; global
 wenzelm parents: 
8991diff
changeset | 6390 | |
| 10003 | 6391 | * ML: new combinators |>> and |>>> for incremental transformations | 
| 6392 | with secondary results (e.g. certain theory extensions): | |
| 6393 | ||
| 9330 
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
 wenzelm parents: 
9288diff
changeset | 6394 | * ML: PureThy.add_defs gets additional argument to indicate potential | 
| 
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
 wenzelm parents: 
9288diff
changeset | 6395 | overloading (usually false); | 
| 
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
 wenzelm parents: 
9288diff
changeset | 6396 | |
| 10003 | 6397 | * ML: PureThy.add_thms/add_axioms/add_defs now return theorems as | 
| 6398 | results; | |
| 8440 
d66f0f14b1ca
* HOL: exhaust_tac on datatypes superceded by new case_tac;
 wenzelm parents: 
8425diff
changeset | 6399 | |
| 8358 
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
 wenzelm parents: 
8283diff
changeset | 6400 | |
| 8015 | 6401 | |
| 7986 | 6402 | New in Isabelle99 (October 1999) | 
| 6403 | -------------------------------- | |
| 4649 | 6404 | |
| 5931 | 6405 | *** Overview of INCOMPATIBILITIES (see below for more details) *** | 
| 6406 | ||
| 6922 | 6407 | * HOL: The THEN and ELSE parts of conditional expressions (if P then x else y) | 
| 6408 | are no longer simplified. (This allows the simplifier to unfold recursive | |
| 6409 | functional programs.) To restore the old behaviour, declare | |
| 7215 | 6410 | |
| 6411 | Delcongs [if_weak_cong]; | |
| 6922 | 6412 | |
| 6269 | 6413 | * HOL: Removed the obsolete syntax "Compl A"; use -A for set | 
| 6414 | complement; | |
| 5931 | 6415 | |
| 6269 | 6416 | * HOL: the predicate "inj" is now defined by translation to "inj_on"; | 
| 6174 | 6417 | |
| 7847 | 6418 | * HOL/datatype: mutual_induct_tac no longer exists -- | 
| 6419 | use induct_tac "x_1 ... x_n" instead of mutual_induct_tac ["x_1", ..., "x_n"] | |
| 6420 | ||
| 6386 
e9e8af97f48f
HOL/typedef: fixed type inference for representing set;
 wenzelm parents: 
6343diff
changeset | 6421 | * HOL/typedef: fixed type inference for representing set; type | 
| 
e9e8af97f48f
HOL/typedef: fixed type inference for representing set;
 wenzelm parents: 
6343diff
changeset | 6422 | arguments now have to occur explicitly on the rhs as type constraints; | 
| 
e9e8af97f48f
HOL/typedef: fixed type inference for representing set;
 wenzelm parents: 
6343diff
changeset | 6423 | |
| 6269 | 6424 | * ZF: The con_defs part of an inductive definition may no longer refer | 
| 6425 | to constants declared in the same theory; | |
| 6057 | 6426 | |
| 6269 | 6427 | * HOL, ZF: the function mk_cases, generated by the inductive | 
| 6428 | definition package, has lost an argument. To simplify its result, it | |
| 6429 | uses the default simpset instead of a supplied list of theorems. | |
| 6141 | 6430 | |
| 7215 | 6431 | * HOL/List: the constructors of type list are now Nil and Cons; | 
| 6432 | ||
| 7619 | 6433 | * Simplifier: the type of the infix ML functions | 
| 8729 
094dbd0fad0c
* improved name spaces: ambiguous output is qualified; support for
 wenzelm parents: 
8705diff
changeset | 6434 | setSSolver addSSolver setSolver addSolver | 
| 7619 | 6435 | is now simpset * solver -> simpset where `solver' is a new abstract type | 
| 6436 | for packaging solvers. A solver is created via | |
| 8729 
094dbd0fad0c
* improved name spaces: ambiguous output is qualified; support for
 wenzelm parents: 
8705diff
changeset | 6437 | mk_solver: string -> (thm list -> int -> tactic) -> solver | 
| 7619 | 6438 | where the string argument is only a comment. | 
| 6057 | 6439 | |
| 7647 
2ceddd91cd0a
proper handling of dangling sort hypotheses (at last!);
 wenzelm parents: 
7619diff
changeset | 6440 | |
| 6069 | 6441 | *** Proof tools *** | 
| 6442 | ||
| 6343 | 6443 | * Provers/Arith/fast_lin_arith.ML contains a functor for creating a | 
| 6444 | decision procedure for linear arithmetic. Currently it is used for | |
| 7593 | 6445 | types `nat', `int', and `real' in HOL (see below); it can, should and | 
| 6446 | will be instantiated for other types and logics as well. | |
| 6069 | 6447 | |
| 7324 | 6448 | * The simplifier now accepts rewrite rules with flexible heads, eg | 
| 6449 | hom ?f ==> ?f(?x+?y) = ?f ?x + ?f ?y | |
| 6450 | They are applied like any rule with a non-pattern lhs, i.e. by first-order | |
| 6451 | matching. | |
| 6069 | 6452 | |
| 7593 | 6453 | |
| 6014 | 6454 | *** General *** | 
| 6455 | ||
| 7986 | 6456 | * New Isabelle/Isar subsystem provides an alternative to traditional | 
| 7215 | 6457 | tactical theorem proving; together with the ProofGeneral/isar user | 
| 6458 | interface it offers an interactive environment for developing human | |
| 6459 | readable proof documents (Isar == Intelligible semi-automated | |
| 7886 
8fa551e22e52
the settings environment is now statically scoped;
 wenzelm parents: 
7863diff
changeset | 6460 | reasoning); for further information see isatool doc isar-ref, | 
| 7986 | 6461 | src/HOL/Isar_examples and http://isabelle.in.tum.de/Isar/ | 
| 7886 
8fa551e22e52
the settings environment is now statically scoped;
 wenzelm parents: 
7863diff
changeset | 6462 | |
| 9612 | 6463 | * improved and simplified presentation of theories: better HTML markup | 
| 6464 | (including colors), graph views in several sizes; isatool usedir now | |
| 6465 | provides a proper interface for user theories (via -P option); actual | |
| 6466 | document preparation based on (PDF)LaTeX is available as well (for | |
| 6467 | new-style theories only); see isatool doc system for more information; | |
| 7215 | 6468 | |
| 7252 | 6469 | * native support for Proof General, both for classic Isabelle and | 
| 7986 | 6470 | Isabelle/Isar; | 
| 7215 | 6471 | |
| 7791 | 6472 | * ML function thm_deps visualizes dependencies of theorems and lemmas, | 
| 6473 | using the graph browser tool; | |
| 6474 | ||
| 6751 | 6475 | * Isabelle manuals now also available as PDF; | 
| 6476 | ||
| 6449 | 6477 | * theory loader rewritten from scratch (may not be fully | 
| 6478 | bug-compatible); old loadpath variable has been replaced by show_path, | |
| 6671 | 6479 | add_path, del_path, reset_path functions; new operations such as | 
| 7593 | 6480 | update_thy, touch_thy, remove_thy, use/update_thy_only (see also | 
| 6481 | isatool doc ref); | |
| 6449 | 6482 | |
| 7215 | 6483 | * improved isatool install: option -k creates KDE application icon, | 
| 6484 | option -p DIR installs standalone binaries; | |
| 6485 | ||
| 6486 | * added ML_PLATFORM setting (useful for cross-platform installations); | |
| 6487 | more robust handling of platform specific ML images for SML/NJ; | |
| 6488 | ||
| 7886 
8fa551e22e52
the settings environment is now statically scoped;
 wenzelm parents: 
7863diff
changeset | 6489 | * the settings environment is now statically scoped, i.e. it is never | 
| 7986 | 6490 | created again in sub-processes invoked from isabelle, isatool, or | 
| 7886 
8fa551e22e52
the settings environment is now statically scoped;
 wenzelm parents: 
7863diff
changeset | 6491 | Isabelle; | 
| 
8fa551e22e52
the settings environment is now statically scoped;
 wenzelm parents: 
7863diff
changeset | 6492 | |
| 7215 | 6493 | * path element specification '~~' refers to '$ISABELLE_HOME'; | 
| 6494 | ||
| 6343 | 6495 | * in locales, the "assumes" and "defines" parts may be omitted if | 
| 6496 | empty; | |
| 5973 | 6497 | |
| 6269 | 6498 | * new print_mode "xsymbols" for extended symbol support (e.g. genuine | 
| 6499 | long arrows); | |
| 6259 
488bdc1bd11a
path element specification '~~' refers to '$ISABELLE_HOME';
 wenzelm parents: 
6174diff
changeset | 6500 | |
| 6343 | 6501 | * new print_mode "HTML"; | 
| 6502 | ||
| 6503 | * new flag show_tags controls display of tags of theorems (which are | |
| 6504 | basically just comments that may be attached by some tools); | |
| 6505 | ||
| 6461 | 6506 | * Isamode 2.6 requires patch to accomodate change of Isabelle font | 
| 6507 | mode and goal output format: | |
| 6508 | ||
| 6509 | diff -r Isamode-2.6/elisp/isa-load.el Isamode/elisp/isa-load.el | |
| 6510 | 244c244 | |
| 6511 | < (list (isa-getenv "ISABELLE") "-msymbols" logic-name) | |
| 6512 | --- | |
| 6533 | 6513 | > (list (isa-getenv "ISABELLE") "-misabelle_font" "-msymbols" logic-name) | 
| 6461 | 6514 | diff -r Isabelle-2.6/elisp/isa-proofstate.el Isamode/elisp/isa-proofstate.el | 
| 6515 | 181c181 | |
| 6516 | < (defconst proofstate-proofstart-regexp "^Level [0-9]+$" | |
| 6517 | --- | |
| 6518 | > (defconst proofstate-proofstart-regexp "^Level [0-9]+" | |
| 6519 | ||
| 7450 | 6520 | * function bind_thms stores lists of theorems (cf. bind_thm); | 
| 6521 | ||
| 7593 | 6522 | * new shorthand tactics ftac, eatac, datac, fatac; | 
| 6523 | ||
| 6524 | * qed (and friends) now accept "" as result name; in that case the | |
| 7986 | 6525 | theorem is not stored, but proper checks and presentation of the | 
| 6526 | result still apply; | |
| 7593 | 6527 | |
| 7805 
0ae9ddc36fe0
theorem database now also indexes constants "Trueprop", "all",
 wenzelm parents: 
7791diff
changeset | 6528 | * theorem database now also indexes constants "Trueprop", "all", | 
| 
0ae9ddc36fe0
theorem database now also indexes constants "Trueprop", "all",
 wenzelm parents: 
7791diff
changeset | 6529 | "==>", "=="; thus thms_containing, findI etc. may retrieve more rules; | 
| 
0ae9ddc36fe0
theorem database now also indexes constants "Trueprop", "all",
 wenzelm parents: 
7791diff
changeset | 6530 | |
| 6028 | 6531 | |
| 6057 | 6532 | *** HOL *** | 
| 6533 | ||
| 7215 | 6534 | ** HOL arithmetic ** | 
| 6535 | ||
| 6343 | 6536 | * There are now decision procedures for linear arithmetic over nat and | 
| 6537 | int: | |
| 6131 | 6538 | |
| 6343 | 6539 | 1. arith_tac copes with arbitrary formulae involving `=', `<', `<=', | 
| 6540 | `+', `-', `Suc', `min', `max' and numerical constants; other subterms | |
| 6541 | are treated as atomic; subformulae not involving type `nat' or `int' | |
| 6542 | are ignored; quantified subformulae are ignored unless they are | |
| 6543 | positive universal or negative existential. The tactic has to be | |
| 6544 | invoked by hand and can be a little bit slow. In particular, the | |
| 6545 | running time is exponential in the number of occurrences of `min' and | |
| 6546 | `max', and `-' on `nat'. | |
| 6131 | 6547 | |
| 6343 | 6548 | 2. fast_arith_tac is a cut-down version of arith_tac: it only takes | 
| 6549 | (negated) (in)equalities among the premises and the conclusion into | |
| 6550 | account (i.e. no compound formulae) and does not know about `min' and | |
| 6551 | `max', and `-' on `nat'. It is fast and is used automatically by the | |
| 6552 | simplifier. | |
| 6131 | 6553 | |
| 6343 | 6554 | NB: At the moment, these decision procedures do not cope with mixed | 
| 6555 | nat/int formulae where the two parts interact, such as `m < n ==> | |
| 6556 | int(m) < int(n)'. | |
| 6028 | 6557 | |
| 7215 | 6558 | * HOL/Numeral provides a generic theory of numerals (encoded | 
| 7313 | 6559 | efficiently as bit strings); setup for types nat/int/real is in place; | 
| 7215 | 6560 | INCOMPATIBILITY: since numeral syntax is now polymorphic, rather than | 
| 6561 | int, existing theories and proof scripts may require a few additional | |
| 6562 | type constraints; | |
| 6563 | ||
| 6564 | * integer division and remainder can now be performed on constant | |
| 6565 | arguments; | |
| 7157 | 6566 | |
| 7215 | 6567 | * many properties of integer multiplication, division and remainder | 
| 6568 | are now available; | |
| 6922 | 6569 | |
| 7287 | 6570 | * An interface to the Stanford Validity Checker (SVC) is available through the | 
| 6571 | tactic svc_tac. Propositional tautologies and theorems of linear arithmetic | |
| 6572 | are proved automatically. SVC must be installed separately, and its results | |
| 6573 | must be TAKEN ON TRUST (Isabelle does not check the proofs, but tags any | |
| 6574 | invocation of the underlying oracle). For SVC see | |
| 7444 | 6575 | http://verify.stanford.edu/SVC | 
| 6922 | 6576 | |
| 7125 | 6577 | * IsaMakefile: the HOL-Real target now builds an actual image; | 
| 6578 | ||
| 7215 | 6579 | |
| 6580 | ** HOL misc ** | |
| 6581 | ||
| 7595 
5f5d575ddac3
* HOL/Real/HahnBanach: the Hahn-Banach theorem for real vector spaces
 wenzelm parents: 
7593diff
changeset | 6582 | * HOL/Real/HahnBanach: the Hahn-Banach theorem for real vector spaces | 
| 
5f5d575ddac3
* HOL/Real/HahnBanach: the Hahn-Banach theorem for real vector spaces
 wenzelm parents: 
7593diff
changeset | 6583 | (in Isabelle/Isar) -- by Gertrud Bauer; | 
| 
5f5d575ddac3
* HOL/Real/HahnBanach: the Hahn-Banach theorem for real vector spaces
 wenzelm parents: 
7593diff
changeset | 6584 | |
| 7691 | 6585 | * HOL/BCV: generic model of bytecode verification, i.e. data-flow | 
| 6586 | analysis for assembly languages with subtypes; | |
| 6587 | ||
| 6278 | 6588 | * HOL/TLA (Lamport's Temporal Logic of Actions): major reorganization | 
| 6589 | -- avoids syntactic ambiguities and treats state, transition, and | |
| 6590 | temporal levels more uniformly; introduces INCOMPATIBILITIES due to | |
| 6591 | changed syntax and (many) tactics; | |
| 6592 | ||
| 7791 | 6593 | * HOL/inductive: Now also handles more general introduction rules such | 
| 6594 | as "ALL y. (y, x) : r --> y : acc r ==> x : acc r"; monotonicity | |
| 6595 | theorems are now maintained within the theory (maintained via the | |
| 6596 | "mono" attribute); | |
| 7780 
099742c562aa
Documented changes to HOL/inductive and function thm_deps.
 berghofe parents: 
7691diff
changeset | 6597 | |
| 7238 
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
 wenzelm parents: 
7216diff
changeset | 6598 | * HOL/datatype: Now also handles arbitrarily branching datatypes | 
| 
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
 wenzelm parents: 
7216diff
changeset | 6599 | (using function types) such as | 
| 
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
 wenzelm parents: 
7216diff
changeset | 6600 | |
| 
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
 wenzelm parents: 
7216diff
changeset | 6601 | datatype 'a tree = Atom 'a | Branch "nat => 'a tree" | 
| 7047 
d103b875ef1d
Datatype package now handles arbitrarily branching datatypes.
 berghofe parents: 
6925diff
changeset | 6602 | |
| 7326 | 6603 | * HOL/record: record_simproc (part of the default simpset) takes care | 
| 6604 | of selectors applied to updated records; record_split_tac is no longer | |
| 7327 | 6605 | part of the default claset; update_defs may now be removed from the | 
| 6606 | simpset in many cases; COMPATIBILITY: old behavior achieved by | |
| 7326 | 6607 | |
| 6608 | claset_ref () := claset() addSWrapper record_split_wrapper; | |
| 6609 | Delsimprocs [record_simproc] | |
| 6610 | ||
| 6386 
e9e8af97f48f
HOL/typedef: fixed type inference for representing set;
 wenzelm parents: 
6343diff
changeset | 6611 | * HOL/typedef: fixed type inference for representing set; type | 
| 
e9e8af97f48f
HOL/typedef: fixed type inference for representing set;
 wenzelm parents: 
6343diff
changeset | 6612 | arguments now have to occur explicitly on the rhs as type constraints; | 
| 
e9e8af97f48f
HOL/typedef: fixed type inference for representing set;
 wenzelm parents: 
6343diff
changeset | 6613 | |
| 7287 | 6614 | * HOL/recdef (TFL): 'congs' syntax now expects comma separated list of theorem | 
| 6615 | names rather than an ML expression; | |
| 6616 | ||
| 6617 | * HOL/defer_recdef (TFL): like recdef but the well-founded relation can be | |
| 6618 | supplied later. Program schemes can be defined, such as | |
| 6619 | "While B C s = (if B s then While B C (C s) else s)" | |
| 6620 | where the well-founded relation can be chosen after B and C have been given. | |
| 6563 | 6621 | |
| 7215 | 6622 | * HOL/List: the constructors of type list are now Nil and Cons; | 
| 6623 | INCOMPATIBILITY: while [] and infix # syntax is still there, of | |
| 6624 | course, ML tools referring to List.list.op # etc. have to be adapted; | |
| 6625 | ||
| 7238 
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
 wenzelm parents: 
7216diff
changeset | 6626 | * HOL_quantifiers flag superseded by "HOL" print mode, which is | 
| 
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
 wenzelm parents: 
7216diff
changeset | 6627 | disabled by default; run isabelle with option -m HOL to get back to | 
| 
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
 wenzelm parents: 
7216diff
changeset | 6628 | the original Gordon/HOL-style output; | 
| 
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
 wenzelm parents: 
7216diff
changeset | 6629 | |
| 
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
 wenzelm parents: 
7216diff
changeset | 6630 | * HOL/Ord.thy: new bounded quantifier syntax (input only): ALL x<y. P, | 
| 
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
 wenzelm parents: 
7216diff
changeset | 6631 | ALL x<=y. P, EX x<y. P, EX x<=y. P; | 
| 
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
 wenzelm parents: 
7216diff
changeset | 6632 | |
| 
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
 wenzelm parents: 
7216diff
changeset | 6633 | * HOL basic syntax simplified (more orthogonal): all variants of | 
| 
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
 wenzelm parents: 
7216diff
changeset | 6634 | All/Ex now support plain / symbolic / HOL notation; plain syntax for | 
| 
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
 wenzelm parents: 
7216diff
changeset | 6635 | Eps operator is provided as well: "SOME x. P[x]"; | 
| 
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
 wenzelm parents: 
7216diff
changeset | 6636 | |
| 7320 | 6637 | * HOL/Sum.thy: sum_case has been moved to HOL/Datatype; | 
| 7261 | 6638 | |
| 7280 | 6639 | * HOL/Univ.thy: infix syntax <*>, <+>, <**>, <+> eliminated and made | 
| 6640 | thus available for user theories; | |
| 6641 | ||
| 7300 
8439bf404c28
* HOLCF/IOA/Sequents: renamed 'Cons' to 'Consq' to avoid clash with HOL/List;
 wenzelm parents: 
7287diff
changeset | 6642 | * HOLCF/IOA/Sequents: renamed 'Cons' to 'Consq' to avoid clash with | 
| 
8439bf404c28
* HOLCF/IOA/Sequents: renamed 'Cons' to 'Consq' to avoid clash with HOL/List;
 wenzelm parents: 
7287diff
changeset | 6643 | HOL/List; hardly an INCOMPATIBILITY since '>>' syntax is used all the | 
| 
8439bf404c28
* HOLCF/IOA/Sequents: renamed 'Cons' to 'Consq' to avoid clash with HOL/List;
 wenzelm parents: 
7287diff
changeset | 6644 | time; | 
| 
8439bf404c28
* HOLCF/IOA/Sequents: renamed 'Cons' to 'Consq' to avoid clash with HOL/List;
 wenzelm parents: 
7287diff
changeset | 6645 | |
| 7986 | 6646 | * HOL: new tactic smp_tac: int -> int -> tactic, which applies spec | 
| 6647 | several times and then mp; | |
| 7492 | 6648 | |
| 7215 | 6649 | |
| 7113 | 6650 | *** LK *** | 
| 6651 | ||
| 7215 | 6652 | * the notation <<...>> is now available as a notation for sequences of | 
| 6653 | formulas; | |
| 7113 | 6654 | |
| 6655 | * the simplifier is now installed | |
| 6656 | ||
| 8729 
094dbd0fad0c
* improved name spaces: ambiguous output is qualified; support for
 wenzelm parents: 
8705diff
changeset | 6657 | * the axiom system has been generalized (thanks to Soren Heilmann) | 
| 7113 | 6658 | |
| 6659 | * the classical reasoner now has a default rule database | |
| 6660 | ||
| 6661 | ||
| 6064 | 6662 | *** ZF *** | 
| 6663 | ||
| 6664 | * new primrec section allows primitive recursive functions to be given | |
| 6269 | 6665 | directly (as in HOL) over datatypes and the natural numbers; | 
| 6064 | 6666 | |
| 6269 | 6667 | * new tactics induct_tac and exhaust_tac for induction (or case | 
| 6668 | analysis) over datatypes and the natural numbers; | |
| 6064 | 6669 | |
| 6670 | * the datatype declaration of type T now defines the recursor T_rec; | |
| 6671 | ||
| 6141 | 6672 | * simplification automatically does freeness reasoning for datatype | 
| 6269 | 6673 | constructors; | 
| 6141 | 6674 | |
| 6269 | 6675 | * automatic type-inference, with AddTCs command to insert new | 
| 6676 | type-checking rules; | |
| 6155 | 6677 | |
| 6269 | 6678 | * datatype introduction rules are now added as Safe Introduction rules | 
| 6679 | to the claset; | |
| 6155 | 6680 | |
| 6269 | 6681 | * the syntax "if P then x else y" is now available in addition to | 
| 6682 | if(P,x,y); | |
| 6683 | ||
| 6069 | 6684 | |
| 6343 | 6685 | *** Internal programming interfaces *** | 
| 6686 | ||
| 7919 
35c18affc1d8
tuned simplifier trace output;  new flag debug_simp
 wenzelm parents: 
7886diff
changeset | 6687 | * tuned simplifier trace output; new flag debug_simp; | 
| 
35c18affc1d8
tuned simplifier trace output;  new flag debug_simp
 wenzelm parents: 
7886diff
changeset | 6688 | |
| 7420 
cba45c114f3b
structures Vartab / Termtab (instances of TableFun);
 wenzelm parents: 
7327diff
changeset | 6689 | * structures Vartab / Termtab (instances of TableFun) offer efficient | 
| 
cba45c114f3b
structures Vartab / Termtab (instances of TableFun);
 wenzelm parents: 
7327diff
changeset | 6690 | tables indexed by indexname_ord / term_ord (compatible with aconv); | 
| 
cba45c114f3b
structures Vartab / Termtab (instances of TableFun);
 wenzelm parents: 
7327diff
changeset | 6691 | |
| 6386 
e9e8af97f48f
HOL/typedef: fixed type inference for representing set;
 wenzelm parents: 
6343diff
changeset | 6692 | * AxClass.axclass_tac lost the theory argument; | 
| 
e9e8af97f48f
HOL/typedef: fixed type inference for representing set;
 wenzelm parents: 
6343diff
changeset | 6693 | |
| 6343 | 6694 | * tuned current_goals_markers semantics: begin / end goal avoids | 
| 6695 | printing empty lines; | |
| 6696 | ||
| 6697 | * removed prs and prs_fn hook, which was broken because it did not | |
| 6698 | include \n in its semantics, forcing writeln to add one | |
| 6699 | uncoditionally; replaced prs_fn by writeln_fn; consider std_output: | |
| 6700 | string -> unit if you really want to output text without newline; | |
| 6701 | ||
| 6702 | * Symbol.output subject to print mode; INCOMPATIBILITY: defaults to | |
| 6703 | plain output, interface builders may have to enable 'isabelle_font' | |
| 6704 | mode to get Isabelle font glyphs as before; | |
| 6705 | ||
| 6706 | * refined token_translation interface; INCOMPATIBILITY: output length | |
| 6707 | now of type real instead of int; | |
| 6708 | ||
| 7196 | 6709 | * theory loader actions may be traced via new ThyInfo.add_hook | 
| 6710 | interface (see src/Pure/Thy/thy_info.ML); example application: keep | |
| 6711 | your own database of information attached to *whole* theories -- as | |
| 6712 | opposed to intra-theory data slots offered via TheoryDataFun; | |
| 6713 | ||
| 7647 
2ceddd91cd0a
proper handling of dangling sort hypotheses (at last!);
 wenzelm parents: 
7619diff
changeset | 6714 | * proper handling of dangling sort hypotheses (at last!); | 
| 
2ceddd91cd0a
proper handling of dangling sort hypotheses (at last!);
 wenzelm parents: 
7619diff
changeset | 6715 | Thm.strip_shyps and Drule.strip_shyps_warning take care of removing | 
| 
2ceddd91cd0a
proper handling of dangling sort hypotheses (at last!);
 wenzelm parents: 
7619diff
changeset | 6716 | extra sort hypotheses that can be witnessed from the type signature; | 
| 7986 | 6717 | the force_strip_shyps flag is gone, any remaining shyps are simply | 
| 6718 | left in the theorem (with a warning issued by strip_shyps_warning); | |
| 7647 
2ceddd91cd0a
proper handling of dangling sort hypotheses (at last!);
 wenzelm parents: 
7619diff
changeset | 6719 | |
| 6343 | 6720 | |
| 6064 | 6721 | |
| 5781 | 6722 | New in Isabelle98-1 (October 1998) | 
| 6723 | ---------------------------------- | |
| 6724 | ||
| 5127 | 6725 | *** Overview of INCOMPATIBILITIES (see below for more details) *** | 
| 4842 | 6726 | |
| 5726 | 6727 | * several changes of automated proof tools; | 
| 5373 | 6728 | |
| 5726 | 6729 | * HOL: major changes to the inductive and datatype packages, including | 
| 6730 | some minor incompatibilities of theory syntax; | |
| 5214 | 6731 | |
| 5726 | 6732 | * HOL: renamed r^-1 to 'converse' from 'inverse'; 'inj_onto' is now | 
| 5217 | 6733 | called `inj_on'; | 
| 5160 | 6734 | |
| 5275 | 6735 | * HOL: removed duplicate thms in Arith: | 
| 6736 | less_imp_add_less should be replaced by trans_less_add1 | |
| 6737 | le_imp_add_le should be replaced by trans_le_add1 | |
| 5160 | 6738 | |
| 5726 | 6739 | * HOL: unary minus is now overloaded (new type constraints may be | 
| 6740 | required); | |
| 5490 | 6741 | |
| 5726 | 6742 | * HOL and ZF: unary minus for integers is now #- instead of #~. In | 
| 6743 | ZF, expressions such as n#-1 must be changed to n#- 1, since #-1 is | |
| 6744 | now taken as an integer constant. | |
| 5541 | 6745 | |
| 5726 | 6746 | * Pure: ML function 'theory_of' renamed to 'theory'; | 
| 5397 
034ed25535b9
* Pure: ML function 'theory_of' replaced by 'theory';
 wenzelm parents: 
5373diff
changeset | 6747 | |
| 5363 | 6748 | |
| 5127 | 6749 | *** Proof tools *** | 
| 4880 | 6750 | |
| 5657 
1a6c9c6a3f8e
  2. The simplifier now knows a little bit about nat-arithmetic.
 nipkow parents: 
5651diff
changeset | 6751 | * Simplifier: | 
| 
1a6c9c6a3f8e
  2. The simplifier now knows a little bit about nat-arithmetic.
 nipkow parents: 
5651diff
changeset | 6752 | 1. Asm_full_simp_tac is now more aggressive. | 
| 
1a6c9c6a3f8e
  2. The simplifier now knows a little bit about nat-arithmetic.
 nipkow parents: 
5651diff
changeset | 6753 | 1. It will sometimes reorient premises if that increases their power to | 
| 
1a6c9c6a3f8e
  2. The simplifier now knows a little bit about nat-arithmetic.
 nipkow parents: 
5651diff
changeset | 6754 | simplify. | 
| 
1a6c9c6a3f8e
  2. The simplifier now knows a little bit about nat-arithmetic.
 nipkow parents: 
5651diff
changeset | 6755 | 2. It does no longer proceed strictly from left to right but may also | 
| 
1a6c9c6a3f8e
  2. The simplifier now knows a little bit about nat-arithmetic.
 nipkow parents: 
5651diff
changeset | 6756 | rotate premises to achieve further simplification. | 
| 
1a6c9c6a3f8e
  2. The simplifier now knows a little bit about nat-arithmetic.
 nipkow parents: 
5651diff
changeset | 6757 | For compatibility reasons there is now Asm_lr_simp_tac which is like the | 
| 
1a6c9c6a3f8e
  2. The simplifier now knows a little bit about nat-arithmetic.
 nipkow parents: 
5651diff
changeset | 6758 | old Asm_full_simp_tac in that it does not rotate premises. | 
| 
1a6c9c6a3f8e
  2. The simplifier now knows a little bit about nat-arithmetic.
 nipkow parents: 
5651diff
changeset | 6759 | 2. The simplifier now knows a little bit about nat-arithmetic. | 
| 4880 | 6760 | |
| 5127 | 6761 | * Classical reasoner: wrapper mechanism for the classical reasoner now | 
| 6762 | allows for selected deletion of wrappers, by introduction of names for | |
| 6763 | wrapper functionals. This implies that addbefore, addSbefore, | |
| 6764 | addaltern, and addSaltern now take a pair (name, tactic) as argument, | |
| 6765 | and that adding two tactics with the same name overwrites the first | |
| 6766 | one (emitting a warning). | |
| 4824 | 6767 | type wrapper = (int -> tactic) -> (int -> tactic) | 
| 4649 | 6768 | setWrapper, setSWrapper, compWrapper and compSWrapper are replaced by | 
| 4824 | 6769 | addWrapper, addSWrapper: claset * (string * wrapper) -> claset | 
| 6770 | delWrapper, delSWrapper: claset * string -> claset | |
| 4649 | 6771 | getWrapper is renamed to appWrappers, getSWrapper to appSWrappers; | 
| 6772 | ||
| 5705 
56f2030c46c6
tuned (all proofs are INSTABLE by David's definition of instability);
 wenzelm parents: 
5671diff
changeset | 6773 | * Classical reasoner: addbefore/addSbefore now have APPEND/ORELSE | 
| 5726 | 6774 | semantics; addbefore now affects only the unsafe part of step_tac | 
| 6775 | etc.; this affects addss/auto_tac/force_tac, so EXISTING PROOFS MAY | |
| 6776 | FAIL, but proofs should be fixable easily, e.g. by replacing Auto_tac | |
| 6777 | by Force_tac; | |
| 5524 | 6778 | |
| 5726 | 6779 | * Classical reasoner: setwrapper to setWrapper and compwrapper to | 
| 6780 | compWrapper; added safe wrapper (and access functions for it); | |
| 5524 | 6781 | |
| 5127 | 6782 | * HOL/split_all_tac is now much faster and fails if there is nothing | 
| 5726 | 6783 | to split. Some EXISTING PROOFS MAY REQUIRE ADAPTION because the order | 
| 6784 | and the names of the automatically generated variables have changed. | |
| 6785 | split_all_tac has moved within claset() from unsafe wrappers to safe | |
| 6786 | wrappers, which means that !!-bound variables are split much more | |
| 6787 | aggressively, and safe_tac and clarify_tac now split such variables. | |
| 6788 | If this splitting is not appropriate, use delSWrapper "split_all_tac". | |
| 6789 | Note: the same holds for record_split_tac, which does the job of | |
| 6790 | split_all_tac for record fields. | |
| 5127 | 6791 | |
| 5726 | 6792 | * HOL/Simplifier: Rewrite rules for case distinctions can now be added | 
| 6793 | permanently to the default simpset using Addsplits just like | |
| 6794 | Addsimps. They can be removed via Delsplits just like | |
| 6795 | Delsimps. Lower-case versions are also available. | |
| 5127 | 6796 | |
| 5726 | 6797 | * HOL/Simplifier: The rule split_if is now part of the default | 
| 6798 | simpset. This means that the simplifier will eliminate all occurrences | |
| 6799 | of if-then-else in the conclusion of a goal. To prevent this, you can | |
| 6800 | either remove split_if completely from the default simpset by | |
| 6801 | `Delsplits [split_if]' or remove it in a specific call of the | |
| 6802 | simplifier using `... delsplits [split_if]'. You can also add/delete | |
| 6803 | other case splitting rules to/from the default simpset: every datatype | |
| 6804 | generates suitable rules `split_t_case' and `split_t_case_asm' (where | |
| 6805 | t is the name of the datatype). | |
| 5127 | 6806 | |
| 5726 | 6807 | * Classical reasoner / Simplifier combination: new force_tac (and | 
| 5127 | 6808 | derivatives Force_tac, force) combines rewriting and classical | 
| 6809 | reasoning (and whatever other tools) similarly to auto_tac, but is | |
| 5726 | 6810 | aimed to solve the given subgoal completely. | 
| 5127 | 6811 | |
| 6812 | ||
| 6813 | *** General *** | |
| 6814 | ||
| 5217 | 6815 | * new top-level commands `Goal' and `Goalw' that improve upon `goal' | 
| 5127 | 6816 | and `goalw': the theory is no longer needed as an explicit argument - | 
| 6817 | the current theory context is used; assumptions are no longer returned | |
| 6818 | at the ML-level unless one of them starts with ==> or !!; it is | |
| 5217 | 6819 | recommended to convert to these new commands using isatool fixgoal | 
| 6820 | (backup your sources first!); | |
| 4842 | 6821 | |
| 5217 | 6822 | * new top-level commands 'thm' and 'thms' for retrieving theorems from | 
| 5207 | 6823 | the current theory context, and 'theory' to lookup stored theories; | 
| 4806 | 6824 | |
| 5722 | 6825 | * new theory section 'locale' for declaring constants, assumptions and | 
| 6826 | definitions that have local scope; | |
| 6827 | ||
| 5127 | 6828 | * new theory section 'nonterminals' for purely syntactic types; | 
| 4858 | 6829 | |
| 5127 | 6830 | * new theory section 'setup' for generic ML setup functions | 
| 6831 | (e.g. package initialization); | |
| 4869 | 6832 | |
| 5131 | 6833 | * the distribution now includes Isabelle icons: see | 
| 6834 | lib/logo/isabelle-{small,tiny}.xpm;
 | |
| 6835 | ||
| 5363 | 6836 | * isatool install - install binaries with absolute references to | 
| 6837 | ISABELLE_HOME/bin; | |
| 6838 | ||
| 5572 | 6839 | * isatool logo -- create instances of the Isabelle logo (as EPS); | 
| 6840 | ||
| 5407 | 6841 | * print mode 'emacs' reserved for Isamode; | 
| 6842 | ||
| 5726 | 6843 | * support multiple print (ast) translations per constant name; | 
| 6844 | ||
| 6925 
8d4d45ec6a3d
theorems involving oracles are now printed with a suffixed [!];
 wenzelm parents: 
6922diff
changeset | 6845 | * theorems involving oracles are now printed with a suffixed [!]; | 
| 
8d4d45ec6a3d
theorems involving oracles are now printed with a suffixed [!];
 wenzelm parents: 
6922diff
changeset | 6846 | |
| 4711 | 6847 | |
| 4661 | 6848 | *** HOL *** | 
| 6849 | ||
| 5710 | 6850 | * there is now a tutorial on Isabelle/HOL (do 'isatool doc tutorial'); | 
| 5709 | 6851 | |
| 5217 | 6852 | * HOL/inductive package reorganized and improved: now supports mutual | 
| 5267 | 6853 | definitions such as | 
| 5217 | 6854 | |
| 6855 | inductive EVEN ODD | |
| 6856 | intrs | |
| 6857 | null "0 : EVEN" | |
| 6858 | oddI "n : EVEN ==> Suc n : ODD" | |
| 6859 | evenI "n : ODD ==> Suc n : EVEN" | |
| 6860 | ||
| 6861 | new theorem list "elims" contains an elimination rule for each of the | |
| 6862 | recursive sets; inductive definitions now handle disjunctive premises | |
| 6863 | correctly (also ZF); | |
| 5214 | 6864 | |
| 5217 | 6865 | INCOMPATIBILITIES: requires Inductive as an ancestor; component | 
| 6866 | "mutual_induct" no longer exists - the induction rule is always | |
| 6867 | contained in "induct"; | |
| 6868 | ||
| 6869 | ||
| 6870 | * HOL/datatype package re-implemented and greatly improved: now | |
| 5267 | 6871 | supports mutually recursive datatypes such as | 
| 5217 | 6872 | |
| 6873 | datatype | |
| 6874 |     'a aexp = IF_THEN_ELSE ('a bexp) ('a aexp) ('a aexp)
 | |
| 6875 |             | SUM ('a aexp) ('a aexp)
 | |
| 6876 |             | DIFF ('a aexp) ('a aexp)
 | |
| 6877 | | NUM 'a | |
| 6878 | and | |
| 6879 |     'a bexp = LESS ('a aexp) ('a aexp)
 | |
| 6880 |             | AND ('a bexp) ('a bexp)
 | |
| 6881 |             | OR ('a bexp) ('a bexp)
 | |
| 6882 | ||
| 5267 | 6883 | as well as indirectly recursive datatypes such as | 
| 5214 | 6884 | |
| 5217 | 6885 | datatype | 
| 6886 |     ('a, 'b) term = Var 'a
 | |
| 6887 |                   | App 'b ((('a, 'b) term) list)
 | |
| 5214 | 6888 | |
| 5217 | 6889 | The new tactic mutual_induct_tac [<var_1>, ..., <var_n>] i performs | 
| 6890 | induction on mutually / indirectly recursive datatypes. | |
| 6891 | ||
| 6892 | Primrec equations are now stored in theory and can be accessed via | |
| 6893 | <function_name>.simps. | |
| 6894 | ||
| 6895 | INCOMPATIBILITIES: | |
| 5214 | 6896 | |
| 5217 | 6897 | - Theories using datatypes must now have theory Datatype as an | 
| 6898 | ancestor. | |
| 6899 | - The specific <typename>.induct_tac no longer exists - use the | |
| 6900 | generic induct_tac instead. | |
| 5226 | 6901 | - natE has been renamed to nat.exhaust - use exhaust_tac | 
| 5217 | 6902 | instead of res_inst_tac ... natE. Note that the variable | 
| 5226 | 6903 | names in nat.exhaust differ from the names in natE, this | 
| 5217 | 6904 | may cause some "fragile" proofs to fail. | 
| 6905 | - The theorems split_<typename>_case and split_<typename>_case_asm | |
| 6906 | have been renamed to <typename>.split and <typename>.split_asm. | |
| 6907 | - Since default sorts of type variables are now handled correctly, | |
| 6908 | some datatype definitions may have to be annotated with explicit | |
| 6909 | sort constraints. | |
| 6910 | - Primrec definitions no longer require function name and type | |
| 6911 | of recursive argument. | |
| 5214 | 6912 | |
| 5217 | 6913 | Consider using isatool fixdatatype to adapt your theories and proof | 
| 6914 | scripts to the new package (backup your sources first!). | |
| 6915 | ||
| 6916 | ||
| 5726 | 6917 | * HOL/record package: considerably improved implementation; now | 
| 6918 | includes concrete syntax for record types, terms, updates; theorems | |
| 6919 | for surjective pairing and splitting !!-bound record variables; proof | |
| 6920 | support is as follows: | |
| 6921 | ||
| 6922 | 1) standard conversions (selectors or updates applied to record | |
| 6923 | constructor terms) are part of the standard simpset; | |
| 6924 | ||
| 6925 | 2) inject equations of the form ((x, y) = (x', y')) == x=x' & y=y' are | |
| 6926 | made part of standard simpset and claset via addIffs; | |
| 6927 | ||
| 6928 | 3) a tactic for record field splitting (record_split_tac) is part of | |
| 6929 | the standard claset (addSWrapper); | |
| 6930 | ||
| 6931 | To get a better idea about these rules you may retrieve them via | |
| 6932 | something like 'thms "foo.simps"' or 'thms "foo.iffs"', where "foo" is | |
| 6933 | the name of your record type. | |
| 6934 | ||
| 6935 | The split tactic 3) conceptually simplifies by the following rule: | |
| 6936 | ||
| 6937 | "(!!x. PROP ?P x) == (!!a b. PROP ?P (a, b))" | |
| 6938 | ||
| 6939 | Thus any record variable that is bound by meta-all will automatically | |
| 6940 | blow up into some record constructor term, consequently the | |
| 6941 | simplifications of 1), 2) apply. Thus force_tac, auto_tac etc. shall | |
| 6942 | solve record problems automatically. | |
| 6943 | ||
| 5214 | 6944 | |
| 5125 | 6945 | * reorganized the main HOL image: HOL/Integ and String loaded by | 
| 6946 | default; theory Main includes everything; | |
| 6947 | ||
| 5650 | 6948 | * automatic simplification of integer sums and comparisons, using cancellation; | 
| 6949 | ||
| 5526 | 6950 | * added option_map_eq_Some and not_Some_eq to the default simpset and claset; | 
| 5127 | 6951 | |
| 6952 | * added disj_not1 = "(~P | Q) = (P --> Q)" to the default simpset; | |
| 6953 | ||
| 6954 | * many new identities for unions, intersections, set difference, etc.; | |
| 6955 | ||
| 6956 | * expand_if, expand_split, expand_sum_case and expand_nat_case are now | |
| 6957 | called split_if, split_split, split_sum_case and split_nat_case (to go | |
| 6958 | with add/delsplits); | |
| 5125 | 6959 | |
| 5127 | 6960 | * HOL/Prod introduces simplification procedure unit_eq_proc rewriting | 
| 6961 | (?x::unit) = (); this is made part of the default simpset, which COULD | |
| 6962 | MAKE EXISTING PROOFS FAIL under rare circumstances (consider | |
| 5207 | 6963 | 'Delsimprocs [unit_eq_proc];' as last resort); also note that | 
| 6964 | unit_abs_eta_conv is added in order to counter the effect of | |
| 6965 | unit_eq_proc on (%u::unit. f u), replacing it by f rather than by | |
| 6966 | %u.f(); | |
| 5125 | 6967 | |
| 5217 | 6968 | * HOL/Fun INCOMPATIBILITY: `inj_onto' is now called `inj_on' (which | 
| 6969 | makes more sense); | |
| 5109 | 6970 | |
| 5475 | 6971 | * HOL/Set INCOMPATIBILITY: rule `equals0D' is now a well-formed destruct rule; | 
| 6972 | It and 'sym RS equals0D' are now in the default claset, giving automatic | |
| 6973 | disjointness reasoning but breaking a few old proofs. | |
| 5267 | 6974 | |
| 5217 | 6975 | * HOL/Relation INCOMPATIBILITY: renamed the relational operator r^-1 | 
| 6976 | to 'converse' from 'inverse' (for compatibility with ZF and some | |
| 6977 | literature); | |
| 5085 
8e5a7942fdea
simplification procedure unit_eq_proc rewrites (?x::unit) = ();
 wenzelm parents: 
5077diff
changeset | 6978 | |
| 5127 | 6979 | * HOL/recdef can now declare non-recursive functions, with {} supplied as
 | 
| 6980 | the well-founded relation; | |
| 4838 | 6981 | |
| 5490 | 6982 | * HOL/Set INCOMPATIBILITY: the complement of set A is now written -A instead of | 
| 6983 | Compl A. The "Compl" syntax remains available as input syntax for this | |
| 6984 | release ONLY. | |
| 6985 | ||
| 5127 | 6986 | * HOL/Update: new theory of function updates: | 
| 6987 | f(a:=b) == %x. if x=a then b else f x | |
| 6988 | may also be iterated as in f(a:=b,c:=d,...); | |
| 5077 
71043526295f
* HOL/List: new function list_update written xs[i:=v] that updates the i-th
 nipkow parents: 
5075diff
changeset | 6989 | |
| 5127 | 6990 | * HOL/Vimage: new theory for inverse image of a function, syntax f-``B; | 
| 4899 | 6991 | |
| 5282 | 6992 | * HOL/List: | 
| 6993 | - new function list_update written xs[i:=v] that updates the i-th | |
| 6994 | list position. May also be iterated as in xs[i:=a,j:=b,...]. | |
| 5428 | 6995 | - new function `upt' written [i..j(] which generates the list | 
| 6996 | [i,i+1,...,j-1], i.e. the upper bound is excluded. To include the upper | |
| 6997 | bound write [i..j], which is a shorthand for [i..j+1(]. | |
| 5282 | 6998 | - new lexicographic orderings and corresponding wellfoundedness theorems. | 
| 4779 | 6999 | |
| 5127 | 7000 | * HOL/Arith: | 
| 7001 | - removed 'pred' (predecessor) function; | |
| 7002 | - generalized some theorems about n-1; | |
| 7003 | - many new laws about "div" and "mod"; | |
| 7004 | - new laws about greatest common divisors (see theory ex/Primes); | |
| 4766 | 7005 | |
| 5127 | 7006 | * HOL/Relation: renamed the relational operator r^-1 "converse" | 
| 4842 | 7007 | instead of "inverse"; | 
| 4711 | 7008 | |
| 5651 | 7009 | * HOL/Induct/Multiset: a theory of multisets, including the wellfoundedness | 
| 7010 | of the multiset ordering; | |
| 7011 | ||
| 5127 | 7012 | * directory HOL/Real: a construction of the reals using Dedekind cuts | 
| 5651 | 7013 | (not included by default); | 
| 4835 | 7014 | |
| 5127 | 7015 | * directory HOL/UNITY: Chandy and Misra's UNITY formalism; | 
| 4711 | 7016 | |
| 5651 | 7017 | * directory HOL/Hoare: a new version of Hoare logic which permits many-sorted | 
| 7018 | programs, i.e. different program variables may have different types. | |
| 7019 | ||
| 5142 | 7020 | * calling (stac rew i) now fails if "rew" has no effect on the goal | 
| 7021 | [previously, this check worked only if the rewrite rule was unconditional] | |
| 5308 | 7022 | Now rew can involve either definitions or equalities (either == or =). | 
| 5002 
7b4c2a153738
* improved the theory data mechanism to support real encapsulation;
 wenzelm parents: 
4981diff
changeset | 7023 | |
| 5363 | 7024 | |
| 4879 
58656c6a3551
"let" is no longer restricted to FOL terms and allows any logical terms
 paulson parents: 
4869diff
changeset | 7025 | *** ZF *** | 
| 
58656c6a3551
"let" is no longer restricted to FOL terms and allows any logical terms
 paulson parents: 
4869diff
changeset | 7026 | |
| 5332 | 7027 | * theory Main includes everything; INCOMPATIBILITY: theory ZF.thy contains | 
| 7028 | only the theorems proved on ZF.ML; | |
| 5160 | 7029 | |
| 5475 | 7030 | * ZF INCOMPATIBILITY: rule `equals0D' is now a well-formed destruct rule; | 
| 7031 | It and 'sym RS equals0D' are now in the default claset, giving automatic | |
| 7032 | disjointness reasoning but breaking a few old proofs. | |
| 5267 | 7033 | |
| 5160 | 7034 | * ZF/Update: new theory of function updates | 
| 7035 | with default rewrite rule f(x:=y) ` z = if(z=x, y, f`z) | |
| 7036 | may also be iterated as in f(a:=b,c:=d,...); | |
| 7037 | ||
| 4879 
58656c6a3551
"let" is no longer restricted to FOL terms and allows any logical terms
 paulson parents: 
4869diff
changeset | 7038 | * in let x=t in u(x), neither t nor u(x) has to be an FOL term. | 
| 4649 | 7039 | |
| 5142 | 7040 | * calling (stac rew i) now fails if "rew" has no effect on the goal | 
| 7041 | [previously, this check worked only if the rewrite rule was unconditional] | |
| 5308 | 7042 | Now rew can involve either definitions or equalities (either == or =). | 
| 5142 | 7043 | |
| 5160 | 7044 | * case_tac provided for compatibility with HOL | 
| 7045 | (like the old excluded_middle_tac, but with subgoals swapped) | |
| 7046 | ||
| 4842 | 7047 | |
| 5127 | 7048 | *** Internal programming interfaces *** | 
| 5002 
7b4c2a153738
* improved the theory data mechanism to support real encapsulation;
 wenzelm parents: 
4981diff
changeset | 7049 | |
| 5251 | 7050 | * Pure: several new basic modules made available for general use, see | 
| 7051 | also src/Pure/README; | |
| 5207 | 7052 | |
| 5008 | 7053 | * improved the theory data mechanism to support encapsulation (data | 
| 7054 | kind name replaced by private Object.kind, acting as authorization | |
| 5373 | 7055 | key); new type-safe user interface via functor TheoryDataFun; generic | 
| 7056 | print_data function becomes basically useless; | |
| 5002 
7b4c2a153738
* improved the theory data mechanism to support real encapsulation;
 wenzelm parents: 
4981diff
changeset | 7057 | |
| 5251 | 7058 | * removed global_names compatibility flag -- all theory declarations | 
| 7059 | are qualified by default; | |
| 7060 | ||
| 5085 
8e5a7942fdea
simplification procedure unit_eq_proc rewrites (?x::unit) = ();
 wenzelm parents: 
5077diff
changeset | 7061 | * module Pure/Syntax now offers quote / antiquote translation | 
| 
8e5a7942fdea
simplification procedure unit_eq_proc rewrites (?x::unit) = ();
 wenzelm parents: 
5077diff
changeset | 7062 | functions (useful for Hoare logic etc. with implicit dependencies); | 
| 5373 | 7063 | see HOL/ex/Antiquote for an example use; | 
| 5085 
8e5a7942fdea
simplification procedure unit_eq_proc rewrites (?x::unit) = ();
 wenzelm parents: 
5077diff
changeset | 7064 | |
| 5127 | 7065 | * Simplifier now offers conversions (asm_)(full_)rewrite: simpset -> | 
| 7066 | cterm -> thm; | |
| 7067 | ||
| 5207 | 7068 | * new tactical CHANGED_GOAL for checking that a tactic modifies a | 
| 7069 | subgoal; | |
| 5142 | 7070 | |
| 5251 | 7071 | * Display.print_goals function moved to Locale.print_goals; | 
| 7072 | ||
| 5731 | 7073 | * standard print function for goals supports current_goals_markers | 
| 7074 | variable for marking begin of proof, end of proof, start of goal; the | |
| 7075 | default is ("", "", ""); setting current_goals_markers := ("<proof>",
 | |
| 7076 | "</proof>", "<goal>") causes SGML like tagged proof state printing, | |
| 7077 | for example; | |
| 7078 | ||
| 5002 
7b4c2a153738
* improved the theory data mechanism to support real encapsulation;
 wenzelm parents: 
4981diff
changeset | 7079 | |
| 
7b4c2a153738
* improved the theory data mechanism to support real encapsulation;
 wenzelm parents: 
4981diff
changeset | 7080 | |
| 4410 | 7081 | New in Isabelle98 (January 1998) | 
| 7082 | -------------------------------- | |
| 7083 | ||
| 7084 | *** Overview of INCOMPATIBILITIES (see below for more details) *** | |
| 7085 | ||
| 7086 | * changed lexical syntax of terms / types: dots made part of long | |
| 7087 | identifiers, e.g. "%x.x" no longer possible, should be "%x. x"; | |
| 7088 | ||
| 7089 | * simpset (and claset) reference variable replaced by functions | |
| 7090 | simpset / simpset_ref; | |
| 7091 | ||
| 7092 | * no longer supports theory aliases (via merge) and non-trivial | |
| 7093 | implicit merge of thms' signatures; | |
| 7094 | ||
| 7095 | * most internal names of constants changed due to qualified names; | |
| 7096 | ||
| 7097 | * changed Pure/Sequence interface (see Pure/seq.ML); | |
| 7098 | ||
| 3454 | 7099 | |
| 3715 | 7100 | *** General Changes *** | 
| 7101 | ||
| 4174 | 7102 | * hierachically structured name spaces (for consts, types, axms, thms | 
| 3943 | 7103 | etc.); new lexical class 'longid' (e.g. Foo.bar.x) may render much of | 
| 4108 | 7104 | old input syntactically incorrect (e.g. "%x.x"); COMPATIBILITY: | 
| 7105 | isatool fixdots ensures space after dots (e.g. "%x. x"); set | |
| 4174 | 7106 | long_names for fully qualified output names; NOTE: ML programs | 
| 7107 | (special tactics, packages etc.) referring to internal names may have | |
| 7108 | to be adapted to cope with fully qualified names; in case of severe | |
| 7109 | backward campatibility problems try setting 'global_names' at compile | |
| 7110 | time to have enrything declared within a flat name space; one may also | |
| 7111 | fine tune name declarations in theories via the 'global' and 'local' | |
| 7112 | section; | |
| 4108 | 7113 | |
| 7114 | * reimplemented the implicit simpset and claset using the new anytype | |
| 7115 | data filed in signatures; references simpset:simpset ref etc. are | |
| 7116 | replaced by functions simpset:unit->simpset and | |
| 7117 | simpset_ref:unit->simpset ref; COMPATIBILITY: use isatool fixclasimp | |
| 7118 | to patch your ML files accordingly; | |
| 3856 | 7119 | |
| 3857 | 7120 | * HTML output now includes theory graph data for display with Java | 
| 7121 | applet or isatool browser; data generated automatically via isatool | |
| 3901 | 7122 | usedir (see -i option, ISABELLE_USEDIR_OPTIONS); | 
| 3857 | 7123 | |
| 3856 | 7124 | * defs may now be conditional; improved rewrite_goals_tac to handle | 
| 7125 | conditional equations; | |
| 7126 | ||
| 4174 | 7127 | * defs now admits additional type arguments, using TYPE('a) syntax;
 | 
| 7128 | ||
| 3901 | 7129 | * theory aliases via merge (e.g. M=A+B+C) no longer supported, always | 
| 7130 | creates a new theory node; implicit merge of thms' signatures is | |
| 4112 | 7131 | restricted to 'trivial' ones; COMPATIBILITY: one may have to use | 
| 3901 | 7132 | transfer:theory->thm->thm in (rare) cases; | 
| 7133 | ||
| 3968 
ec138de716d9
improved handling of draft signatures / theories; draft thms (and
 wenzelm parents: 
3964diff
changeset | 7134 | * improved handling of draft signatures / theories; draft thms (and | 
| 
ec138de716d9
improved handling of draft signatures / theories; draft thms (and
 wenzelm parents: 
3964diff
changeset | 7135 | ctyps, cterms) are automatically promoted to real ones; | 
| 
ec138de716d9
improved handling of draft signatures / theories; draft thms (and
 wenzelm parents: 
3964diff
changeset | 7136 | |
| 3901 | 7137 | * slightly changed interfaces for oracles: admit many per theory, named | 
| 7138 | (e.g. oracle foo = mlfun), additional name argument for invoke_oracle; | |
| 7139 | ||
| 7140 | * print_goals: optional output of const types (set show_consts and | |
| 7141 | show_types); | |
| 3851 
fe9932a7cd46
print_goals: optional output of const types (set show_consts);
 wenzelm parents: 
3846diff
changeset | 7142 | |
| 4388 | 7143 | * improved output of warnings (###) and errors (***); | 
| 3697 
c5833dfcc2cc
Pure: fixed idt/idts vs. pttrn/pttrns syntactic categories;
 wenzelm parents: 
3671diff
changeset | 7144 | |
| 4178 
e64ff1c1bc70
subgoal_tac displays a warning if the new subgoal has type variables
 paulson parents: 
4174diff
changeset | 7145 | * subgoal_tac displays a warning if the new subgoal has type variables; | 
| 
e64ff1c1bc70
subgoal_tac displays a warning if the new subgoal has type variables
 paulson parents: 
4174diff
changeset | 7146 | |
| 3715 | 7147 | * removed old README and Makefiles; | 
| 3697 
c5833dfcc2cc
Pure: fixed idt/idts vs. pttrn/pttrns syntactic categories;
 wenzelm parents: 
3671diff
changeset | 7148 | |
| 3856 | 7149 | * replaced print_goals_ref hook by print_current_goals_fn and result_error_fn; | 
| 3670 
9fea3562f8c7
replaced print_goals_ref hook by print_current_goals_fn and
 wenzelm parents: 
3658diff
changeset | 7150 | |
| 3715 | 7151 | * removed obsolete init_pps and init_database; | 
| 7152 | ||
| 7153 | * deleted the obsolete tactical STATE, which was declared by | |
| 7154 | fun STATE tacfun st = tacfun st st; | |
| 7155 | ||
| 4388 | 7156 | * cd and use now support path variables, e.g. $ISABELLE_HOME, or ~ | 
| 7157 | (which abbreviates $HOME); | |
| 4269 | 7158 | |
| 7159 | * changed Pure/Sequence interface (see Pure/seq.ML); COMPATIBILITY: | |
| 7160 | use isatool fixseq to adapt your ML programs (this works for fully | |
| 7161 | qualified references to the Sequence structure only!); | |
| 7162 | ||
| 4381 | 7163 | * use_thy no longer requires writable current directory; it always | 
| 7164 | reloads .ML *and* .thy file, if either one is out of date; | |
| 4269 | 7165 | |
| 3715 | 7166 | |
| 7167 | *** Classical Reasoner *** | |
| 7168 | ||
| 3744 | 7169 | * Clarify_tac, clarify_tac, clarify_step_tac, Clarify_step_tac: new | 
| 7170 | tactics that use classical reasoning to simplify a subgoal without | |
| 7171 | splitting it into several subgoals; | |
| 3715 | 7172 | |
| 3719 | 7173 | * Safe_tac: like safe_tac but uses the default claset; | 
| 7174 | ||
| 3715 | 7175 | |
| 7176 | *** Simplifier *** | |
| 7177 | ||
| 7178 | * added simplification meta rules: | |
| 7179 | (asm_)(full_)simplify: simpset -> thm -> thm; | |
| 7180 | ||
| 7181 | * simplifier.ML no longer part of Pure -- has to be loaded by object | |
| 7182 | logics (again); | |
| 7183 | ||
| 7184 | * added prems argument to simplification procedures; | |
| 7185 | ||
| 4325 | 7186 | * HOL, FOL, ZF: added infix function `addsplits': | 
| 7187 | instead of `<simpset> setloop (split_tac <thms>)' | |
| 7188 | you can simply write `<simpset> addsplits <thms>' | |
| 7189 | ||
| 3715 | 7190 | |
| 7191 | *** Syntax *** | |
| 7192 | ||
| 4174 | 7193 | * TYPE('a) syntax for type reflection terms;
 | 
| 7194 | ||
| 3985 | 7195 | * no longer handles consts with name "" -- declare as 'syntax' instead; | 
| 3856 | 7196 | |
| 7197 | * pretty printer: changed order of mixfix annotation preference (again!); | |
| 3846 | 7198 | |
| 3715 | 7199 | * Pure: fixed idt/idts vs. pttrn/pttrns syntactic categories; | 
| 7200 | ||
| 7201 | ||
| 7202 | *** HOL *** | |
| 7203 | ||
| 5726 | 7204 | * HOL: there is a new splitter `split_asm_tac' that can be used e.g. | 
| 4189 | 7205 | with `addloop' of the simplifier to faciliate case splitting in premises. | 
| 7206 | ||
| 4035 | 7207 | * HOL/TLA: Stephan Merz's formalization of Lamport's Temporal Logic of Actions; | 
| 3985 | 7208 | |
| 7209 | * HOL/Auth: new protocol proofs including some for the Internet | |
| 4035 | 7210 | protocol TLS; | 
| 3985 | 7211 | |
| 4125 | 7212 | * HOL/Map: new theory of `maps' a la VDM; | 
| 3982 | 7213 | |
| 4335 | 7214 | * HOL/simplifier: simplification procedures nat_cancel_sums for | 
| 7215 | cancelling out common nat summands from =, <, <= (in)equalities, or | |
| 7216 | differences; simplification procedures nat_cancel_factor for | |
| 7217 | cancelling common factor from =, <, <= (in)equalities over natural | |
| 4373 | 7218 | sums; nat_cancel contains both kinds of procedures, it is installed by | 
| 7219 | default in Arith.thy -- this COULD MAKE EXISTING PROOFS FAIL; | |
| 4335 | 7220 | |
| 3580 | 7221 | * HOL/simplifier: terms of the form | 
| 4325 | 7222 | `? x. P1(x) & ... & Pn(x) & x=t & Q1(x) & ... Qn(x)' (or t=x) | 
| 3580 | 7223 | are rewritten to | 
| 4035 | 7224 | `P1(t) & ... & Pn(t) & Q1(t) & ... Qn(t)', | 
| 7225 | and those of the form | |
| 4325 | 7226 | `! x. P1(x) & ... & Pn(x) & x=t & Q1(x) & ... Qn(x) --> R(x)' (or t=x) | 
| 4035 | 7227 | are rewritten to | 
| 7228 | `P1(t) & ... & Pn(t) & Q1(t) & ... Qn(t) --> R(t)', | |
| 7229 | ||
| 7230 | * HOL/datatype | |
| 7231 | Each datatype `t' now comes with a theorem `split_t_case' of the form | |
| 3580 | 7232 | |
| 4035 | 7233 | P(t_case f1 ... fn x) = | 
| 7234 | ( (!y1 ... ym1. x = C1 y1 ... ym1 --> P(f1 y1 ... ym1)) & | |
| 7235 | ... | |
| 4189 | 7236 | (!y1 ... ymn. x = Cn y1 ... ymn --> P(f1 y1 ... ymn)) | 
| 4035 | 7237 | ) | 
| 7238 | ||
| 4930 
89271bc4e7ed
extended addsplits and delsplits to handle also split rules for assumptions
 oheimb parents: 
4915diff
changeset | 7239 | and a theorem `split_t_case_asm' of the form | 
| 4189 | 7240 | |
| 7241 | P(t_case f1 ... fn x) = | |
| 7242 | ~( (? y1 ... ym1. x = C1 y1 ... ym1 & ~P(f1 y1 ... ym1)) | | |
| 7243 | ... | |
| 7244 | (? y1 ... ymn. x = Cn y1 ... ymn & ~P(f1 y1 ... ymn)) | |
| 7245 | ) | |
| 4930 
89271bc4e7ed
extended addsplits and delsplits to handle also split rules for assumptions
 oheimb parents: 
4915diff
changeset | 7246 | which can be added to a simpset via `addsplits'. The existing theorems | 
| 
89271bc4e7ed
extended addsplits and delsplits to handle also split rules for assumptions
 oheimb parents: 
4915diff
changeset | 7247 | expand_list_case and expand_option_case have been renamed to | 
| 
89271bc4e7ed
extended addsplits and delsplits to handle also split rules for assumptions
 oheimb parents: 
4915diff
changeset | 7248 | split_list_case and split_option_case. | 
| 4189 | 7249 | |
| 4361 | 7250 | * HOL/Arithmetic: | 
| 7251 | - `pred n' is automatically converted to `n-1'. | |
| 7252 | Users are strongly encouraged not to use `pred' any longer, | |
| 7253 | because it will disappear altogether at some point. | |
| 7254 | - Users are strongly encouraged to write "0 < n" rather than | |
| 7255 | "n ~= 0". Theorems and proof tools have been modified towards this | |
| 7256 | `standard'. | |
| 4357 | 7257 | |
| 4502 | 7258 | * HOL/Lists: | 
| 7259 | the function "set_of_list" has been renamed "set" (and its theorems too); | |
| 7260 | the function "nth" now takes its arguments in the reverse order and | |
| 7261 | has acquired the infix notation "!" as in "xs!n". | |
| 3570 | 7262 | |
| 4154 | 7263 | * HOL/Set: UNIV is now a constant and is no longer translated to Compl{};
 | 
| 7264 | ||
| 7265 | * HOL/Set: The operator (UN x.B x) now abbreviates (UN x:UNIV. B x) and its | |
| 7266 | specialist theorems (like UN1_I) are gone. Similarly for (INT x.B x); | |
| 7267 | ||
| 4575 | 7268 | * HOL/record: extensible records with schematic structural subtyping | 
| 7269 | (single inheritance); EXPERIMENTAL version demonstrating the encoding, | |
| 7270 | still lacks various theorems and concrete record syntax; | |
| 7271 | ||
| 4125 | 7272 | |
| 3715 | 7273 | *** HOLCF *** | 
| 3535 | 7274 | |
| 4125 | 7275 | * removed "axioms" and "generated by" sections; | 
| 7276 | ||
| 4123 | 7277 | * replaced "ops" section by extended "consts" section, which is capable of | 
| 4125 | 7278 | handling the continuous function space "->" directly; | 
| 7279 | ||
| 7280 | * domain package: | |
| 7281 | . proves theorems immediately and stores them in the theory, | |
| 7282 | . creates hierachical name space, | |
| 7283 | . now uses normal mixfix annotations (instead of cinfix...), | |
| 7284 | . minor changes to some names and values (for consistency), | |
| 7285 | . e.g. cases -> casedist, dists_eq -> dist_eqs, [take_lemma] -> take_lemmas, | |
| 7286 | . separator between mutual domain defs: changed "," to "and", | |
| 7287 | . improved handling of sort constraints; now they have to | |
| 7288 | appear on the left-hand side of the equations only; | |
| 4123 | 7289 | |
| 7290 | * fixed LAM <x,y,zs>.b syntax; | |
| 3567 | 7291 | |
| 3744 | 7292 | * added extended adm_tac to simplifier in HOLCF -- can now discharge | 
| 7293 | adm (%x. P (t x)), where P is chainfinite and t continuous; | |
| 3579 | 7294 | |
| 7295 | ||
| 3719 | 7296 | *** FOL and ZF *** | 
| 7297 | ||
| 5726 | 7298 | * FOL: there is a new splitter `split_asm_tac' that can be used e.g. | 
| 4189 | 7299 | with `addloop' of the simplifier to faciliate case splitting in premises. | 
| 7300 | ||
| 3744 | 7301 | * qed_spec_mp, qed_goal_spec_mp, qed_goalw_spec_mp are available, as | 
| 7302 | in HOL, they strip ALL and --> from proved theorems; | |
| 7303 | ||
| 3719 | 7304 | |
| 3579 | 7305 | |
| 3006 | 7306 | New in Isabelle94-8 (May 1997) | 
| 7307 | ------------------------------ | |
| 2654 | 7308 | |
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7309 | *** General Changes *** | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7310 | |
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7311 | * new utilities to build / run / maintain Isabelle etc. (in parts | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7312 | still somewhat experimental); old Makefiles etc. still functional; | 
| 2971 | 7313 | |
| 3205 | 7314 | * new 'Isabelle System Manual'; | 
| 7315 | ||
| 2825 | 7316 | * INSTALL text, together with ./configure and ./build scripts; | 
| 2773 | 7317 | |
| 3006 | 7318 | * reimplemented type inference for greater efficiency, better error | 
| 7319 | messages and clean internal interface; | |
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7320 | |
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7321 | * prlim command for dealing with lots of subgoals (an easier way of | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7322 | setting goals_limit); | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7323 | |
| 3006 | 7324 | |
| 7325 | *** Syntax *** | |
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7326 | |
| 3116 | 7327 | * supports alternative (named) syntax tables (parser and pretty | 
| 7328 | printer); internal interface is provided by add_modesyntax(_i); | |
| 7329 | ||
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7330 | * Pure, FOL, ZF, HOL, HOLCF now support symbolic input and output; to | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7331 | be used in conjunction with the Isabelle symbol font; uses the | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7332 | "symbols" syntax table; | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7333 | |
| 2705 | 7334 | * added token_translation interface (may translate name tokens in | 
| 2756 | 7335 | arbitrary ways, dependent on their type (free, bound, tfree, ...) and | 
| 3116 | 7336 | the current print_mode); IMPORTANT: user print translation functions | 
| 7337 | are responsible for marking newly introduced bounds | |
| 7338 | (Syntax.mark_boundT); | |
| 2705 | 7339 | |
| 2730 | 7340 | * token translations for modes "xterm" and "xterm_color" that display | 
| 3006 | 7341 | names in bold, underline etc. or colors (which requires a color | 
| 7342 | version of xterm); | |
| 2730 | 7343 | |
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7344 | * infixes may now be declared with names independent of their syntax; | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7345 | |
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7346 | * added typed_print_translation (like print_translation, but may | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7347 | access type of constant); | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7348 | |
| 3006 | 7349 | |
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7350 | *** Classical Reasoner *** | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7351 | |
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7352 | Blast_tac: a new tactic! It is often more powerful than fast_tac, but has | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7353 | some limitations. Blast_tac... | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7354 | + ignores addss, addbefore, addafter; this restriction is intrinsic | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7355 | + ignores elimination rules that don't have the correct format | 
| 5726 | 7356 | (the conclusion MUST be a formula variable) | 
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7357 | + ignores types, which can make HOL proofs fail | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7358 | + rules must not require higher-order unification, e.g. apply_type in ZF | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7359 | [message "Function Var's argument not a bound variable" relates to this] | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7360 | + its proof strategy is more general but can actually be slower | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7361 | |
| 3107 | 7362 | * substitution with equality assumptions no longer permutes other | 
| 7363 | assumptions; | |
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7364 | |
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7365 | * minor changes in semantics of addafter (now called addaltern); renamed | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7366 | setwrapper to setWrapper and compwrapper to compWrapper; added safe wrapper | 
| 3107 | 7367 | (and access functions for it); | 
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7368 | |
| 5726 | 7369 | * improved combination of classical reasoner and simplifier: | 
| 3317 | 7370 | + functions for handling clasimpsets | 
| 7371 | + improvement of addss: now the simplifier is called _after_ the | |
| 7372 | safe steps. | |
| 7373 | + safe variant of addss called addSss: uses safe simplifications | |
| 5726 | 7374 | _during_ the safe steps. It is more complete as it allows multiple | 
| 3317 | 7375 | instantiations of unknowns (e.g. with slow_tac). | 
| 3006 | 7376 | |
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7377 | *** Simplifier *** | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7378 | |
| 3006 | 7379 | * added interface for simplification procedures (functions that | 
| 7380 | produce *proven* rewrite rules on the fly, depending on current | |
| 7381 | redex); | |
| 7382 | ||
| 7383 | * ordering on terms as parameter (used for ordered rewriting); | |
| 7384 | ||
| 3107 | 7385 | * new functions delcongs, deleqcongs, and Delcongs. richer rep_ss; | 
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7386 | |
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7387 | * the solver is now split into a safe and an unsafe part. | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7388 | This should be invisible for the normal user, except that the | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7389 | functions setsolver and addsolver have been renamed to setSolver and | 
| 3107 | 7390 | addSolver; added safe_asm_full_simp_tac; | 
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7391 | |
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7392 | |
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7393 | *** HOL *** | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7394 | |
| 3042 | 7395 | * a generic induction tactic `induct_tac' which works for all datatypes and | 
| 3107 | 7396 | also for type `nat'; | 
| 3042 | 7397 | |
| 3316 | 7398 | * a generic case distinction tactic `exhaust_tac' which works for all | 
| 7399 | datatypes and also for type `nat'; | |
| 7400 | ||
| 7401 | * each datatype comes with a function `size'; | |
| 7402 | ||
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7403 | * patterns in case expressions allow tuple patterns as arguments to | 
| 3107 | 7404 | constructors, for example `case x of [] => ... | (x,y,z)#ps => ...'; | 
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7405 | |
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7406 | * primrec now also works with type nat; | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7407 | |
| 3338 | 7408 | * recdef: a new declaration form, allows general recursive functions to be | 
| 7409 | defined in theory files. See HOL/ex/Fib, HOL/ex/Primes, HOL/Subst/Unify. | |
| 7410 | ||
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7411 | * the constant for negation has been renamed from "not" to "Not" to | 
| 3107 | 7412 | harmonize with FOL, ZF, LK, etc.; | 
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7413 | |
| 3107 | 7414 | * HOL/ex/LFilter theory of a corecursive "filter" functional for | 
| 7415 | infinite lists; | |
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7416 | |
| 3227 | 7417 | * HOL/Modelcheck demonstrates invocation of model checker oracle; | 
| 7418 | ||
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7419 | * HOL/ex/Ring.thy declares cring_simp, which solves equational | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7420 | problems in commutative rings, using axiomatic type classes for + and *; | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7421 | |
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7422 | * more examples in HOL/MiniML and HOL/Auth; | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7423 | |
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7424 | * more default rewrite rules for quantifiers, union/intersection; | 
| 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7425 | |
| 3321 | 7426 | * a new constant `arbitrary == @x.False'; | 
| 7427 | ||
| 3107 | 7428 | * HOLCF/IOA replaces old HOL/IOA; | 
| 7429 | ||
| 5726 | 7430 | * HOLCF changes: derived all rules and arities | 
| 7431 | + axiomatic type classes instead of classes | |
| 2653 
f1a6997cdc06
described changes for HOLCF-Version without rules and arities
 slotosch parents: 
2649diff
changeset | 7432 | + typedef instead of faking type definitions | 
| 2747 | 7433 | + eliminated the internal constants less_fun, less_cfun, UU_fun, UU_cfun etc. | 
| 2730 | 7434 | + new axclasses cpo, chfin, flat with flat < chfin < pcpo < cpo < po | 
| 2653 
f1a6997cdc06
described changes for HOLCF-Version without rules and arities
 slotosch parents: 
2649diff
changeset | 7435 | + eliminated the types void, one, tr | 
| 
f1a6997cdc06
described changes for HOLCF-Version without rules and arities
 slotosch parents: 
2649diff
changeset | 7436 | + use unit lift and bool lift (with translations) instead of one and tr | 
| 
f1a6997cdc06
described changes for HOLCF-Version without rules and arities
 slotosch parents: 
2649diff
changeset | 7437 | + eliminated blift from Lift3.thy (use Def instead of blift) | 
| 3107 | 7438 | all eliminated rules are derived as theorems --> no visible changes ; | 
| 2649 | 7439 | |
| 3006 | 7440 | |
| 3002 
223e5d65faaa
Reorganized under headings.  Also documented Blast_tac and LFilter
 paulson parents: 
2993diff
changeset | 7441 | *** ZF *** | 
| 2553 | 7442 | |
| 2865 | 7443 | * ZF now has Fast_tac, Simp_tac and Auto_tac. Union_iff is a now a default | 
| 7444 | rewrite rule; this may affect some proofs. eq_cs is gone but can be put back | |
| 7445 | as ZF_cs addSIs [equalityI]; | |
| 2553 | 7446 | |
| 2554 | 7447 | |
| 2732 | 7448 | |
| 2553 | 7449 | New in Isabelle94-7 (November 96) | 
| 7450 | --------------------------------- | |
| 7451 | ||
| 7452 | * allowing negative levels (as offsets) in prlev and choplev; | |
| 7453 | ||
| 2554 | 7454 | * super-linear speedup for large simplifications; | 
| 7455 | ||
| 7456 | * FOL, ZF and HOL now use miniscoping: rewriting pushes | |
| 7457 | quantifications in as far as possible (COULD MAKE EXISTING PROOFS | |
| 7458 | FAIL); can suppress it using the command Delsimps (ex_simps @ | |
| 7459 | all_simps); De Morgan laws are also now included, by default; | |
| 7460 | ||
| 7461 | * improved printing of ==> : ~: | |
| 7462 | ||
| 7463 | * new object-logic "Sequents" adds linear logic, while replacing LK | |
| 7464 | and Modal (thanks to Sara Kalvala); | |
| 7465 | ||
| 7466 | * HOL/Auth: correctness proofs for authentication protocols; | |
| 7467 | ||
| 7468 | * HOL: new auto_tac combines rewriting and classical reasoning (many | |
| 7469 | examples on HOL/Auth); | |
| 7470 | ||
| 7471 | * HOL: new command AddIffs for declaring theorems of the form P=Q to | |
| 7472 | the rewriter and classical reasoner simultaneously; | |
| 7473 | ||
| 7474 | * function uresult no longer returns theorems in "standard" format; | |
| 7475 | regain previous version by: val uresult = standard o uresult; | |
| 7476 | ||
| 7477 | ||
| 7478 | ||
| 7479 | New in Isabelle94-6 | |
| 7480 | ------------------- | |
| 7481 | ||
| 7482 | * oracles -- these establish an interface between Isabelle and trusted | |
| 7483 | external reasoners, which may deliver results as theorems; | |
| 7484 | ||
| 7485 | * proof objects (in particular record all uses of oracles); | |
| 7486 | ||
| 7487 | * Simp_tac, Fast_tac, etc. that refer to implicit simpset / claset; | |
| 7488 | ||
| 7489 | * "constdefs" section in theory files; | |
| 7490 | ||
| 7491 | * "primrec" section (HOL) no longer requires names; | |
| 7492 | ||
| 7493 | * internal type "tactic" now simply "thm -> thm Sequence.seq"; | |
| 7494 | ||
| 7495 | ||
| 7496 | ||
| 7497 | New in Isabelle94-5 | |
| 7498 | ------------------- | |
| 7499 | ||
| 7500 | * reduced space requirements; | |
| 7501 | ||
| 7502 | * automatic HTML generation from theories; | |
| 7503 | ||
| 7504 | * theory files no longer require "..." (quotes) around most types; | |
| 7505 | ||
| 7506 | * new examples, including two proofs of the Church-Rosser theorem; | |
| 7507 | ||
| 7508 | * non-curried (1994) version of HOL is no longer distributed; | |
| 7509 | ||
| 2553 | 7510 | |
| 2557 | 7511 | |
| 7512 | New in Isabelle94-4 | |
| 7513 | ------------------- | |
| 7514 | ||
| 2747 | 7515 | * greatly reduced space requirements; | 
| 2557 | 7516 | |
| 7517 | * theory files (.thy) no longer require \...\ escapes at line breaks; | |
| 7518 | ||
| 5726 | 7519 | * searchable theorem database (see the section "Retrieving theorems" on | 
| 2557 | 7520 | page 8 of the Reference Manual); | 
| 7521 | ||
| 7522 | * new examples, including Grabczewski's monumental case study of the | |
| 7523 | Axiom of Choice; | |
| 7524 | ||
| 7525 | * The previous version of HOL renamed to Old_HOL; | |
| 7526 | ||
| 5726 | 7527 | * The new version of HOL (previously called CHOL) uses a curried syntax | 
| 2557 | 7528 | for functions. Application looks like f a b instead of f(a,b); | 
| 7529 | ||
| 7530 | * Mutually recursive inductive definitions finally work in HOL; | |
| 7531 | ||
| 7532 | * In ZF, pattern-matching on tuples is now available in all abstractions and | |
| 7533 | translates to the operator "split"; | |
| 7534 | ||
| 7535 | ||
| 7536 | ||
| 7537 | New in Isabelle94-3 | |
| 7538 | ------------------- | |
| 7539 | ||
| 5726 | 7540 | * new infix operator, addss, allowing the classical reasoner to | 
| 2557 | 7541 | perform simplification at each step of its search. Example: | 
| 5726 | 7542 | fast_tac (cs addss ss) | 
| 2557 | 7543 | |
| 5726 | 7544 | * a new logic, CHOL, the same as HOL, but with a curried syntax | 
| 7545 | for functions. Application looks like f a b instead of f(a,b). Also pairs | |
| 2557 | 7546 | look like (a,b) instead of <a,b>; | 
| 7547 | ||
| 7548 | * PLEASE NOTE: CHOL will eventually replace HOL! | |
| 7549 | ||
| 7550 | * In CHOL, pattern-matching on tuples is now available in all abstractions. | |
| 7551 | It translates to the operator "split". A new theory of integers is available; | |
| 7552 | ||
| 7553 | * In ZF, integer numerals now denote two's-complement binary integers. | |
| 7554 | Arithmetic operations can be performed by rewriting. See ZF/ex/Bin.ML; | |
| 7555 | ||
| 5726 | 7556 | * Many new examples: I/O automata, Church-Rosser theorem, equivalents | 
| 2557 | 7557 | of the Axiom of Choice; | 
| 7558 | ||
| 7559 | ||
| 7560 | ||
| 7561 | New in Isabelle94-2 | |
| 7562 | ------------------- | |
| 7563 | ||
| 5726 | 7564 | * Significantly faster resolution; | 
| 2557 | 7565 | |
| 7566 | * the different sections in a .thy file can now be mixed and repeated | |
| 7567 | freely; | |
| 7568 | ||
| 7569 | * Database of theorems for FOL, HOL and ZF. New | |
| 7570 | commands including qed, qed_goal and bind_thm store theorems in the database. | |
| 7571 | ||
| 7572 | * Simple database queries: return a named theorem (get_thm) or all theorems of | |
| 7573 | a given theory (thms_of), or find out what theory a theorem was proved in | |
| 7574 | (theory_of_thm); | |
| 7575 | ||
| 7576 | * Bugs fixed in the inductive definition and datatype packages; | |
| 7577 | ||
| 7578 | * The classical reasoner provides deepen_tac and depth_tac, making FOL_dup_cs | |
| 7579 | and HOL_dup_cs obsolete; | |
| 7580 | ||
| 7581 | * Syntactic ambiguities caused by the new treatment of syntax in Isabelle94-1 | |
| 7582 | have been removed; | |
| 7583 | ||
| 7584 | * Simpler definition of function space in ZF; | |
| 7585 | ||
| 7586 | * new results about cardinal and ordinal arithmetic in ZF; | |
| 7587 | ||
| 7588 | * 'subtype' facility in HOL for introducing new types as subsets of existing | |
| 7589 | types; | |
| 7590 | ||
| 24213 | 7591 | :mode=text:wrap=hard:maxLineLen=72: |