423 fun read_expectation "no_expectation" = No_Expectation |
423 fun read_expectation "no_expectation" = No_Expectation |
424 | read_expectation "no_counterexample" = No_Counterexample |
424 | read_expectation "no_counterexample" = No_Counterexample |
425 | read_expectation "counterexample" = Counterexample |
425 | read_expectation "counterexample" = Counterexample |
426 | read_expectation s = error ("Not an expectation value: " ^ s); |
426 | read_expectation s = error ("Not an expectation value: " ^ s); |
427 |
427 |
428 fun valid_tester_name genctxt name = |
428 fun valid_tester_name context name = |
429 AList.defined (op =) (#1 (Data.get genctxt)) name; |
429 AList.defined (op =) (#1 (Data.get context)) name; |
430 |
430 |
431 fun parse_tester name (testers, genctxt) = |
431 fun parse_tester name (testers, context) = |
432 if valid_tester_name genctxt name then |
432 if valid_tester_name context name then |
433 (insert (op =) name testers, genctxt) |
433 (insert (op =) name testers, context) |
434 else error ("Unknown tester: " ^ name); |
434 else error ("Unknown tester: " ^ name); |
435 |
435 |
436 fun parse_test_param ("tester", args) = fold parse_tester args |
436 fun parse_test_param ("tester", args) = fold parse_tester args |
437 | parse_test_param ("size", [arg]) = apsnd (Config.put_generic size (read_nat arg)) |
437 | parse_test_param ("size", [arg]) = apsnd (Config.put_generic size (read_nat arg)) |
438 | parse_test_param ("iterations", [arg]) = apsnd (Config.put_generic iterations (read_nat arg)) |
438 | parse_test_param ("iterations", [arg]) = apsnd (Config.put_generic iterations (read_nat arg)) |
460 | parse_test_param ("allow_function_inversion", [arg]) = |
460 | parse_test_param ("allow_function_inversion", [arg]) = |
461 apsnd (Config.put_generic allow_function_inversion (read_bool arg)) |
461 apsnd (Config.put_generic allow_function_inversion (read_bool arg)) |
462 | parse_test_param ("finite_type_size", [arg]) = |
462 | parse_test_param ("finite_type_size", [arg]) = |
463 apsnd (Config.put_generic finite_type_size (read_nat arg)) |
463 apsnd (Config.put_generic finite_type_size (read_nat arg)) |
464 | parse_test_param (name, _) = |
464 | parse_test_param (name, _) = |
465 (fn (testers, genctxt) => |
465 (fn (testers, context) => |
466 if valid_tester_name genctxt name then |
466 if valid_tester_name context name then |
467 (insert (op =) name testers, genctxt) |
467 (insert (op =) name testers, context) |
468 else error ("Unknown tester or test parameter: " ^ name)); |
468 else error ("Unknown tester or test parameter: " ^ name)); |
469 |
469 |
470 fun parse_test_param_inst (name, arg) ((insts, eval_terms), (testers, ctxt)) = |
470 fun parse_test_param_inst (name, arg) ((insts, eval_terms), (testers, ctxt)) = |
471 (case try (Proof_Context.read_typ ctxt) name of |
471 (case try (Proof_Context.read_typ ctxt) name of |
472 SOME (TFree (v, _)) => |
472 SOME (TFree (v, _)) => |