src/HOL/Spec_Check/README
changeset 52248 2c893e0c1def
child 52260 e7c47fe56fbd
equal deleted inserted replaced
52247:3244ccb7e9db 52248:2c893e0c1def
       
     1 This is a Quickcheck tool for Isabelle's ML environment.
       
     2 
       
     3 Authors
       
     4 
       
     5   Lukas Bulwahn
       
     6   Nicolai Schaffroth
       
     7 
       
     8 Quick Usage
       
     9 
       
    10   - Import Spec_Check.thy in your development
       
    11   - Look at examples in Examples.thy
       
    12   - write specifications with the ML function
       
    13       Spec_Check.check_property @{context} "ALL x. P x"
       
    14 
       
    15 Notes
       
    16 
       
    17 Our specification-based testing tool originated from Christopher League's
       
    18 QCheck tool for SML (cf. https://github.com/league/qcheck). As Isabelle
       
    19 provides a rich and uniform ML platform (called Isabelle/ML), this
       
    20 testing tools is very different than the one for a typical ML developer.
       
    21 
       
    22 1. Isabelle/ML provides common data structures, which we can use in the
       
    23 tool's implementation for storing data and printing output.
       
    24 
       
    25 2. The implementation in Isabelle that will be checked with this tool
       
    26 commonly use Isabelle/ML's int type (which corresponds ML's IntInf.int),
       
    27 but they do not use other integer types in ML, such as ML's Int.int,
       
    28 Word.word and others.
       
    29 
       
    30 3. As Isabelle can run heavily in parallel, we avoid reference types.
       
    31 
       
    32 4. Isabelle has special naming conventions and documentation of source
       
    33 code is only minimal to avoid parroting.
       
    34 
       
    35 Next steps:
       
    36   - Remove all references and store the neccessary random seed in the
       
    37     Isabelle's context.
       
    38   - Simplify some existing random generators.
       
    39     The original ones from Christopher League are so complicated to
       
    40     support many integer types uniformly.
       
    41 
       
    42 License
       
    43 
       
    44   The source code originated from Christopher League's QCheck, which is
       
    45   licensed under the 2-clause BSD license. The current source code is
       
    46   licensed under the compatible 3-clause BSD license of Isabelle.
       
    47