NEWS
changeset 18446 6c558efcc754
parent 18422 875451c9d253
child 18450 e57731ba01dd
equal deleted inserted replaced
18445:74c5481a23e6 18446:6c558efcc754
   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