A new approach to property based testing
drmaciver.com
drmaciver.com
I've been doing similar property based testing on some math/physics heavy code, with a somewhat similar idea but without minimization. I have test cases that take a number of floating point arguments in range 0..1, which are generated from a 64 bit integer "seed" value picked from a special sequence that is ordered to produce failures as early as possible (failures are usually at 0, 1 or 1/2). Any failure can be reproduced by re-running the test case with the same seed value.
In my case, minimization doesn't make sense since each test case takes a certain number of floats as input. I use about a minute of CPU time per test case (running with 8M different seeds).
Example test case (it's about orbital mechanics): https://github.com/rikusalminen/twobody/blob/master/test/two...
We're all still figuring out the details, but this sort of testing definitely works for testing your applications as well as your algorithms.
ETA: Oh, and thanks for the kind words. :-)
data Action = DoFoo | DoBar | DoSequence [Action] | DoParallel [Action]
We can then write an "run" function which executes these action, and use it in our properties.