On Sun, 19 Oct 2008 00:39:32 +0200, Norman Ramsey <[EMAIL PROTECTED]> wrote:
I guess what I would like is to reuse most of the mechanisms in QuickCheck to have it say one of these two things: 1. Found an satisfying instance after 73 tries: [gives instance] 2. After 100 tries, could not find a satisfying instance. Like failure, the first tells you something definite about your program. And like passing 100 tests, the second tells you nothing.
In ScalaCheck (QuickCheck for Scala, www.scalacheck.org) there is an "exists" combinator which naively tries to find a value satisfying the property. So you can do the following: val p = exists(arbitrary[Int])( n => (n > 0) ==> (n+n == n*n) ) scala> p.check + OK, proved property. > ARG_0: "2" val q = exists(arbitrary[Int])( n => (n > 10) ==> (n+n == n*n) ) scala> q.check ! Gave up after only 0 passed tests. 500 tests were discarded. As you can see, there is a notion of proved properties in ScalaCheck, which was introduced to support the "exists" method. Of course, if the property is non-trivial ScalaCheck has a hard time finding a proof. Regards, Rickard Nilsson _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell