src/Tools/quickcheck.ML
changeset 59437 2c8f88925465
parent 59436 570bea2407ea
child 59438 621ac078f7b0
equal deleted inserted replaced
59436:570bea2407ea 59437:2c8f88925465
   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, _)) =>