src/HOL/Library/SML_Quickcheck.thy
author wenzelm
Tue, 05 Apr 2011 14:25:18 +0200
changeset 42224 578a51fae383
parent 42161 d1b39536e1fb
child 42427 5611f178a747
permissions -rw-r--r--
discontinued special treatment of structure Ast: no pervasive content, no inclusion in structure Syntax;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33084
cd1579e0997a turned off old quickcheck
haftmann
parents:
diff changeset
     1
cd1579e0997a turned off old quickcheck
haftmann
parents:
diff changeset
     2
header {* Install quickcheck of SML code generator *}
cd1579e0997a turned off old quickcheck
haftmann
parents:
diff changeset
     3
cd1579e0997a turned off old quickcheck
haftmann
parents:
diff changeset
     4
theory SML_Quickcheck
cd1579e0997a turned off old quickcheck
haftmann
parents:
diff changeset
     5
imports Main
cd1579e0997a turned off old quickcheck
haftmann
parents:
diff changeset
     6
begin
cd1579e0997a turned off old quickcheck
haftmann
parents:
diff changeset
     7
cd1579e0997a turned off old quickcheck
haftmann
parents:
diff changeset
     8
setup {*
37390
8781d80026fc moved inductive_codegen to place where product type is available; tuned structure name
haftmann
parents: 33771
diff changeset
     9
  Inductive_Codegen.quickcheck_setup #>
40919
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    10
  Context.theory_map (Quickcheck.add_generator ("SML",
42159
234ec7011e5d generalizing compilation scheme of quickcheck generators to multiple arguments; changing random and exhaustive tester to use one code invocation for polymorphic instances with multiple cardinalities
bulwahn
parents: 42029
diff changeset
    11
    fn ctxt => fn [(t, eval_terms)] =>
40919
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    12
      let
42161
d1b39536e1fb adding a regression test for SML_Quickcheck; putting SML_Quickcheck back in shape
bulwahn
parents: 42159
diff changeset
    13
        val prop = list_abs_free (Term.add_frees t [], t)
d1b39536e1fb adding a regression test for SML_Quickcheck; putting SML_Quickcheck back in shape
bulwahn
parents: 42159
diff changeset
    14
        val test_fun = Codegen.test_term ctxt prop 
40919
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    15
        val iterations = Config.get ctxt Quickcheck.iterations
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    16
        fun iterate size 0 = NONE
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    17
          | iterate size j =
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    18
            let
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    19
              val result = test_fun size handle Match => 
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    20
                (if Config.get ctxt Quickcheck.quiet then ()
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    21
                 else warning "Exception Match raised during quickcheck"; NONE)
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    22
            in
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    23
              case result of NONE => iterate size (j - 1) | SOME q => SOME q
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    24
            end
42161
d1b39536e1fb adding a regression test for SML_Quickcheck; putting SML_Quickcheck back in shape
bulwahn
parents: 42159
diff changeset
    25
     in fn [_, size] => (iterate size iterations, NONE) end))
33084
cd1579e0997a turned off old quickcheck
haftmann
parents:
diff changeset
    26
*}
cd1579e0997a turned off old quickcheck
haftmann
parents:
diff changeset
    27
cd1579e0997a turned off old quickcheck
haftmann
parents:
diff changeset
    28
end