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 |