155 * Tactics 'sat' and 'satx' reimplemented, several improvements: goals |
155 * Tactics 'sat' and 'satx' reimplemented, several improvements: goals |
156 no longer need to be stated as "<prems> ==> False", equivalences (i.e. |
156 no longer need to be stated as "<prems> ==> False", equivalences (i.e. |
157 "=" on type bool) are handled, variable names of the form "lit_<n>" |
157 "=" on type bool) are handled, variable names of the form "lit_<n>" |
158 are no longer reserved, significant speedup. |
158 are no longer reserved, significant speedup. |
159 |
159 |
160 * Library: added theory Coinductive_List of potentially infinite lists as |
160 * Library: added theory Coinductive_List of potentially infinite lists |
161 greatest fixed-point. |
161 as greatest fixed-point. |
162 |
162 |
163 |
163 |
164 *** ML *** |
164 *** ML *** |
165 |
165 |
166 * Pure: functions of signature "... -> theory -> theory * ..." have been reoriented |
166 * Pure/library: functions map2 and fold2 with curried syntax for |
167 to "... -> theory -> ... * theory" in order to allow natural usage in combination |
167 simultanous mapping and folding: |
168 with the ||>, ||>>, |-> and fold_map combinators. |
168 |
169 |
|
170 * Library: new module Pure/General/name_mangler providing a functor for generic |
|
171 name mangling (bijective mapping from any expression values to strings). |
|
172 |
|
173 * SML systems: added |
|
174 print: 'a -> 'a |
|
175 to smlnj. PolyML provides such a function which as a side effect prints out |
|
176 a string representation of its argument. By adding print to smlnj, it is possible |
|
177 to use "print" for debugging purpose without breaking smlnj compatibility. |
|
178 |
|
179 * Library: functions map2 and fold2 with curried syntax for simultanous |
|
180 mapping and folding: |
|
181 val map2: ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list |
169 val map2: ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list |
182 val fold2: ('a -> 'b -> 'c -> 'c) -> 'a list -> 'b list -> 'c -> 'c |
170 val fold2: ('a -> 'b -> 'c -> 'c) -> 'a list -> 'b list -> 'c -> 'c |
183 |
171 |
184 * Library: new module Pure/General/rat.ML implementing rational numbers, |
172 * Pure/library: indexed lists - some functions in the Isabelle library |
185 replacing the former functions in the Isabelle library. |
173 treating lists over 'a as finite mappings from [0...n] to 'a have been |
186 |
174 given more convenient names and signatures reminiscent of similar |
187 * Library: indexed lists - some functions in the Isabelle library |
175 functions for alists, tables, etc: |
188 treating lists over 'a as finite mappings from [0...n] to 'a |
|
189 have been given more convenient names and signatures reminiscent |
|
190 of similar functions for alists, tables, etc: |
|
191 |
176 |
192 val nth: 'a list -> int -> 'a |
177 val nth: 'a list -> int -> 'a |
193 val nth_update: int * 'a -> 'a list -> 'a list |
178 val nth_update: int * 'a -> 'a list -> 'a list |
194 val nth_map: int -> ('a -> 'a) -> 'a list -> 'a list |
179 val nth_map: int -> ('a -> 'a) -> 'a list -> 'a list |
195 val fold_index: (int * 'a -> 'b -> 'b) -> 'a list -> 'b -> 'b |
180 val fold_index: (int * 'a -> 'b -> 'b) -> 'a list -> 'b -> 'b |
196 |
181 |
197 Note that fold_index starts counting at index 0, not 1 like foldln used to. |
182 Note that fold_index starts counting at index 0, not 1 like foldln |
|
183 used to. |
|
184 |
|
185 * Pure/General: name_mangler.ML provides a functor for generic name |
|
186 mangling (bijective mapping from any expression values to strings). |
|
187 |
|
188 * Pure/General: rat.ML implements rational numbers. |
|
189 |
|
190 * Pure: several functions of signature "... -> theory -> theory * ..." |
|
191 have been reoriented to "... -> theory -> ... * theory" in order to |
|
192 allow natural usage in combination with the ||>, ||>>, |-> and |
|
193 fold_map combinators. |
198 |
194 |
199 * Pure: primitive rule lift_rule now takes goal cterm instead of an |
195 * Pure: primitive rule lift_rule now takes goal cterm instead of an |
200 actual goal state (thm). Use Thm.lift_rule (Thm.cprem_of st i) to |
196 actual goal state (thm). Use Thm.lift_rule (Thm.cprem_of st i) to |
201 achieve the old behaviour. |
197 achieve the old behaviour. |
202 |
198 |