src/HOL/Tools/Quickcheck/narrowing_generators.ML
changeset 73284 a97ae083cad1
parent 73283 057d8a164a7b
child 73285 0e7a3c055f39
equal deleted inserted replaced
73283:057d8a164a7b 73284:a97ae083cad1
   262                 (map fst includes @ [code_file, narrowing_engine_file, main_file]))) ^
   262                 (map fst includes @ [code_file, narrowing_engine_file, main_file]))) ^
   263           " -o " ^ File.bash_platform_path executable ^ ";"
   263           " -o " ^ File.bash_platform_path executable ^ ";"
   264         val compilation_time =
   264         val compilation_time =
   265           Isabelle_System.bash_process cmd
   265           Isabelle_System.bash_process cmd
   266           |> Process_Result.print
   266           |> Process_Result.print
   267           |> Process_Result.timing |> #elapsed |> Time.toMilliseconds;
   267           |> Process_Result.timing_elapsed |> Time.toMilliseconds;
   268         val _ = Quickcheck.add_timing ("Haskell compilation", compilation_time) current_result
   268         val _ = Quickcheck.add_timing ("Haskell compilation", compilation_time) current_result
   269         fun haskell_string_of_bool v = if v then "True" else "False"
   269         fun haskell_string_of_bool v = if v then "True" else "False"
   270         val _ = if Isabelle_System.bash cmd <> 0 then error "Compilation with GHC failed" else ()
   270         val _ = if Isabelle_System.bash cmd <> 0 then error "Compilation with GHC failed" else ()
   271         fun with_size genuine_only k =
   271         fun with_size genuine_only k =
   272           if k > size then (NONE, !current_result)
   272           if k > size then (NONE, !current_result)
   278                 Isabelle_System.bash_process
   278                 Isabelle_System.bash_process
   279                   (File.bash_path executable ^ " " ^ haskell_string_of_bool genuine_only ^ " " ^
   279                   (File.bash_path executable ^ " " ^ haskell_string_of_bool genuine_only ^ " " ^
   280                     string_of_int k);
   280                     string_of_int k);
   281               val _ = warning (Process_Result.err res);
   281               val _ = warning (Process_Result.err res);
   282               val response = Process_Result.out res;
   282               val response = Process_Result.out res;
   283               val timing = res |> Process_Result.timing |> #elapsed |> Time.toMilliseconds;
   283               val timing = res |> Process_Result.timing_elapsed |> Time.toMilliseconds;
   284               val _ =
   284               val _ =
   285                 Quickcheck.add_timing
   285                 Quickcheck.add_timing
   286                   ("execution of size " ^ string_of_int k, timing) current_result
   286                   ("execution of size " ^ string_of_int k, timing) current_result
   287             in
   287             in
   288               if response = "NONE" then with_size genuine_only (k + 1)
   288               if response = "NONE" then with_size genuine_only (k + 1)