src/HOL/Library/SML_Quickcheck.thy
author bulwahn
Fri, 11 Mar 2011 15:21:13 +0100
changeset 41919 e180c2a9873b
parent 40919 cdb34f393a7e
child 42029 da92153d6dff
permissions -rw-r--r--
correcting dependencies after renaming
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",
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    11
    fn ctxt => fn t =>
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    12
      let
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    13
        val test_fun = Codegen.test_term ctxt t 
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    14
        val iterations = Config.get ctxt Quickcheck.iterations
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    15
        fun iterate size 0 = NONE
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    16
          | iterate size j =
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    17
            let
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    18
              val result = test_fun size handle Match => 
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    19
                (if Config.get ctxt Quickcheck.quiet then ()
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    20
                 else warning "Exception Match raised during quickcheck"; NONE)
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    21
            in
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    22
              case result of NONE => iterate size (j - 1) | SOME q => SOME q
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    23
            end
cdb34f393a7e adapting SML_Quickcheck to recent changes
bulwahn
parents: 39252
diff changeset
    24
     in fn size => (iterate size iterations, NONE) end))
33084
cd1579e0997a turned off old quickcheck
haftmann
parents:
diff changeset
    25
*}
cd1579e0997a turned off old quickcheck
haftmann
parents:
diff changeset
    26
cd1579e0997a turned off old quickcheck
haftmann
parents:
diff changeset
    27
end