src/HOL/Tools/Nitpick/nitpick.ML
changeset 42959 ee829022381d
parent 42486 01b03a124b81
child 43020 abb5d1f907e4
equal deleted inserted replaced
42958:034fc4d0c909 42959:ee829022381d
   350       let val pretties = map (pretty_maybe_quote o pretty_for_type ctxt) Ts in
   350       let val pretties = map (pretty_maybe_quote o pretty_for_type ctxt) Ts in
   351         Pretty.blk (0,
   351         Pretty.blk (0,
   352           pstrs ("The type" ^ plural_s_for_list pretties ^ " ") @
   352           pstrs ("The type" ^ plural_s_for_list pretties ^ " ") @
   353           pretty_serial_commas "and" pretties @
   353           pretty_serial_commas "and" pretties @
   354           pstrs (" " ^
   354           pstrs (" " ^
   355           (if none_true monos then
   355                  (if none_true monos then
   356              "passed the monotonicity test"
   356                     "passed the monotonicity test"
   357            else
   357                   else
   358              (if length pretties = 1 then "is" else "are") ^ " considered monotonic") ^
   358                     (if length pretties = 1 then "is" else "are") ^
   359           ". " ^ extra))
   359                     " considered monotonic") ^
       
   360                  ". " ^ extra))
   360       end
   361       end
   361     fun is_type_fundamentally_monotonic T =
   362     fun is_type_fundamentally_monotonic T =
   362       (is_datatype ctxt stds T andalso not (is_quot_type ctxt T) andalso
   363       (is_datatype ctxt stds T andalso not (is_quot_type ctxt T) andalso
   363        (not (is_pure_typedef ctxt T) orelse is_univ_typedef ctxt T)) orelse
   364        (not (is_pure_typedef ctxt T) orelse is_univ_typedef ctxt T)) orelse
   364       is_number_type ctxt T orelse is_bit_type T
   365       is_number_type ctxt T orelse is_bit_type T