src/HOL/Tools/Nitpick/nitpick_isar.ML
changeset 42959 ee829022381d
parent 42361 23f352990944
child 43018 121aa59b4d17
equal deleted inserted replaced
42958:034fc4d0c909 42959:ee829022381d
    36            "Run Nitpick automatically.")
    36            "Run Nitpick automatically.")
    37 
    37 
    38 type raw_param = string * string list
    38 type raw_param = string * string list
    39 
    39 
    40 val default_default_params =
    40 val default_default_params =
    41   [("card", "1\<midarrow>10"),
    41   [("card", "1\<emdash>10"),
    42    ("iter", "0,1,2,4,8,12,16,20,24,28"),
    42    ("iter", "0,1,2,4,8,12,16,20,24,28"),
    43    ("bits", "1,2,3,4,6,8,10,12,14,16"),
    43    ("bits", "1,2,3,4,6,8,10,12,14,16"),
    44    ("bisim_depth", "9"),
    44    ("bisim_depth", "9"),
    45    ("box", "smart"),
    45    ("box", "smart"),
    46    ("finitize", "smart"),
    46    ("finitize", "smart"),
   146 
   146 
   147 val set_default_raw_param =
   147 val set_default_raw_param =
   148   Data.map o fold (AList.update (op =)) o normalize_raw_param
   148   Data.map o fold (AList.update (op =)) o normalize_raw_param
   149 val default_raw_params = Data.get
   149 val default_raw_params = Data.get
   150 
   150 
   151 fun is_punctuation s = (s = "," orelse s = "-" orelse s = "\<midarrow>")
   151 fun is_punctuation s = (s = "," orelse s = "-" orelse s = "\<emdash>")
   152 
   152 
   153 fun stringify_raw_param_value [] = ""
   153 fun stringify_raw_param_value [] = ""
   154   | stringify_raw_param_value [s] = s
   154   | stringify_raw_param_value [s] = s
   155   | stringify_raw_param_value (s1 :: s2 :: ss) =
   155   | stringify_raw_param_value (s1 :: s2 :: ss) =
   156     s1 ^ (if is_punctuation s1 orelse is_punctuation s2 then "" else " ") ^
   156     s1 ^ (if is_punctuation s1 orelse is_punctuation s2 then "" else " ") ^
   185       | value => SOME (do_int name value)
   185       | value => SOME (do_int name value)
   186     fun int_range_from_string name min_int s =
   186     fun int_range_from_string name min_int s =
   187       let
   187       let
   188         val (k1, k2) =
   188         val (k1, k2) =
   189           (case space_explode "-" s of
   189           (case space_explode "-" s of
   190              [s] => the_default (s, s) (first_field "\<midarrow>" s)
   190              [s] => the_default (s, s) (first_field "\<emdash>" s)
   191            | ["", s2] => ("-" ^ s2, "-" ^ s2)
   191            | ["", s2] => ("-" ^ s2, "-" ^ s2)
   192            | [s1, s2] => (s1, s2)
   192            | [s1, s2] => (s1, s2)
   193            | _ => raise Option)
   193            | _ => raise Option)
   194           |> pairself (maxed_int_from_string min_int)
   194           |> pairself (maxed_int_from_string min_int)
   195       in if k1 <= k2 then k1 upto k2 else k1 downto k2 end
   195       in if k1 <= k2 then k1 upto k2 else k1 downto k2 end