src/HOL/Tools/inductive_codegen.ML
changeset 41636 934b4ad9b611
parent 41489 8e2b8649507d
child 42027 5e40c152c396
equal deleted inserted replaced
41635:f938a6022d2e 41636:934b4ad9b611
     5 *)
     5 *)
     6 
     6 
     7 signature INDUCTIVE_CODEGEN =
     7 signature INDUCTIVE_CODEGEN =
     8 sig
     8 sig
     9   val add : string option -> int option -> attribute
     9   val add : string option -> int option -> attribute
    10   val test_fn : (int * int * int -> term list option) Unsynchronized.ref
    10   val test_fn : (int * int * int -> term list option) Unsynchronized.ref  (* FIXME *)
    11   val test_term:
    11   val test_term:
    12     Proof.context -> term -> int -> term list option * Quickcheck.report option
    12     Proof.context -> term -> int -> term list option * Quickcheck.report option
    13   val setup : theory -> theory
    13   val setup : theory -> theory
    14   val quickcheck_setup : theory -> theory
    14   val quickcheck_setup : theory -> theory
    15 end;
    15 end;
   843             (map (fn (s, T) => Pretty.block
   843             (map (fn (s, T) => Pretty.block
   844               [Codegen.mk_term_of gr "Generated" false T, Pretty.brk 1, Codegen.str s]) args'),
   844               [Codegen.mk_term_of gr "Generated" false T, Pretty.brk 1, Codegen.str s]) args'),
   845           Pretty.brk 1,
   845           Pretty.brk 1,
   846           Codegen.str "| NONE => NONE);"]) ^
   846           Codegen.str "| NONE => NONE);"]) ^
   847       "\n\nend;\n";
   847       "\n\nend;\n";
   848     val _ = ML_Context.eval_text_in (SOME ctxt) false Position.none s;
   848     val test_fn' = NAMED_CRITICAL "codegen" (fn () =>
       
   849      (ML_Context.eval_text_in (SOME ctxt) false Position.none s; ! test_fn));
   849     val values = Config.get ctxt random_values;
   850     val values = Config.get ctxt random_values;
   850     val bound = Config.get ctxt depth_bound;
   851     val bound = Config.get ctxt depth_bound;
   851     val start = Config.get ctxt depth_start;
   852     val start = Config.get ctxt depth_start;
   852     val offset = Config.get ctxt size_offset;
   853     val offset = Config.get ctxt size_offset;
   853     val test_fn' = !test_fn;
       
   854     fun test k = (deepen bound (fn i =>
   854     fun test k = (deepen bound (fn i =>
   855       (Output.urgent_message ("Search depth: " ^ string_of_int i);
   855       (Output.urgent_message ("Search depth: " ^ string_of_int i);
   856        test_fn' (i, values, k+offset))) start, NONE);
   856        test_fn' (i, values, k+offset))) start, NONE);
   857   in test end;
   857   in test end;
   858 
   858