[racket-dev] Announcing Soft Contract Verification tool

From: Asumu Takikawa (asumu at ccs.neu.edu)
Date: Thu Jan 15 14:13:02 EST 2015

On 2015-01-14 19:11:59 -0500, David Van Horn wrote:
> If you have questions, comments, bugs, or any other feedback, let us
> know, or just file bug reports on the GitHub source code.

Nice tool! I like the web interface too.

I was confused by this interaction though. Clicking verify on this:

  (module fact racket
    (define (factorial x)
      (if (zero? x)
          1
          (* x (factorial (sub1 x)))))
    (provide (contract-out [factorial (-> (>=/c 0) (>=/c 0))])))

gives me:

  Contract violation: 'fact' violates '>='.
  Value
    0.105
  violates predicate
    real?
  An example module that breaks it:
    (module user racket (require (submod ".." fact)) (factorial 0.105))
  (Verification takes 0.05s)

but the value 0.105 shouldn't violate the predicate real? I think.

Cheers,
Asumu

Posted on the dev mailing list.