NEWS
changeset 56846 9df717fef2bb
parent 56845 691da43fbdd4
child 56850 13a7bca533a3
equal deleted inserted replaced
56845:691da43fbdd4 56846:9df717fef2bb
   304 
   304 
   305 * Old datatype package:
   305 * Old datatype package:
   306   * The generated theorems "xxx.cases" and "xxx.recs" have been renamed
   306   * The generated theorems "xxx.cases" and "xxx.recs" have been renamed
   307     "xxx.case" and "xxx.rec" (e.g., "sum.cases" -> "sum.case").
   307     "xxx.case" and "xxx.rec" (e.g., "sum.cases" -> "sum.case").
   308     INCOMPATIBILITY.
   308     INCOMPATIBILITY.
   309   * The generated constants "xxx_case" and "xxx_rec" have been renamed
   309   * The generated constants "xxx_case", "xxx_rec", and "xxx_size" have been
   310     "case_xxx" and "rec_xxx" (e.g., "prod_case" ~> "case_prod").
   310     renamed "case_xxx", "rec_xxx", and "size_xxx" (e.g., "prod_case" ~>
       
   311     "case_prod").
   311     INCOMPATIBILITY.
   312     INCOMPATIBILITY.
   312 
   313 
   313 * The types "'a list" and "'a option", their set and map functions, their
   314 * The types "'a list" and "'a option", their set and map functions, their
   314   relators, and their selectors are now produced using the new BNF-based
   315   relators, and their selectors are now produced using the new BNF-based
   315   datatype package.
   316   datatype package.
   316   Renamed constants:
   317   Renamed constants:
   317     Option.set ~> set_option
   318     Option.set ~> set_option
   318     Option.map ~> map_option
   319     Option.map ~> map_option
   319     option_rel ~> rel_option
   320     option_rel ~> rel_option
   320     list_size ~> size_list
       
   321     option_size ~> size_option
       
   322   Renamed theorems:
   321   Renamed theorems:
   323     set_def ~> set_rec[abs_def]
   322     set_def ~> set_rec[abs_def]
   324     map_def ~> map_rec[abs_def]
   323     map_def ~> map_rec[abs_def]
   325     Option.map_def ~> map_option_case[abs_def] (with "case_option" instead of "rec_option")
   324     Option.map_def ~> map_option_case[abs_def] (with "case_option" instead of "rec_option")
   326     option.recs ~> option.rec
   325     option.recs ~> option.rec
  6148 proofs: Measure functions can be declared by proving a rule of the
  6147 proofs: Measure functions can be declared by proving a rule of the
  6149 form "is_measure f" and giving it the [measure_function] attribute.
  6148 form "is_measure f" and giving it the [measure_function] attribute.
  6150 The "is_measure" predicate is logically meaningless (always true), and
  6149 The "is_measure" predicate is logically meaningless (always true), and
  6151 just guides the heuristic.  To find suitable measure functions, the
  6150 just guides the heuristic.  To find suitable measure functions, the
  6152 termination prover sets up the goal "is_measure ?f" of the appropriate
  6151 termination prover sets up the goal "is_measure ?f" of the appropriate
  6153 type and generates all solutions by prolog-style backwards proof using
  6152 type and generates all solutions by Prolog-style backward proof using
  6154 the declared rules.
  6153 the declared rules.
  6155 
  6154 
  6156 This setup also deals with rules like 
  6155 This setup also deals with rules like 
  6157 
  6156 
  6158   "is_measure f ==> is_measure (list_size f)"
  6157   "is_measure f ==> is_measure (list_size f)"