adjust vm correctness property, update diffs
This commit is contained in:
parent
bb1d23cb1d
commit
9d70f35ec4
|
@ -16,11 +16,13 @@
|
||||||
> ;; bug 14
|
> ;; bug 14
|
||||||
> [(closure-intact? (box-nc ṽ_1 ...) (imm ṽ_2 ...))
|
> [(closure-intact? (box-nc ṽ_1 ...) (imm ṽ_2 ...))
|
||||||
> (closure-intact? (ṽ_1 ...) (ṽ_2 ...))]
|
> (closure-intact? (ṽ_1 ...) (ṽ_2 ...))]
|
||||||
475a481,487
|
475a481,489
|
||||||
> (test-equal
|
>
|
||||||
> (bytecode-ok?
|
> (define small-counter-example
|
||||||
> '(let-one 'x
|
> '(let-one 'x
|
||||||
> (let-rec ((lam () (0) (application (loc-noclr 0))))
|
> (application (proc-const (val val) (loc 0))
|
||||||
> 'x)))
|
> (loc-noclr 2)
|
||||||
> #t)
|
> (install-value 2 'y 'z))))
|
||||||
|
>
|
||||||
|
> (test-equal (check small-counter-example) #f)
|
||||||
>
|
>
|
||||||
|
|
|
@ -14,11 +14,11 @@
|
||||||
---
|
---
|
||||||
> `(case-lam ,@(map (curry recur depth #t) ls))]
|
> `(case-lam ,@(map (curry recur depth #t) ls))]
|
||||||
475a478,485
|
475a478,485
|
||||||
> (test-equal
|
>
|
||||||
> (bytecode-ok?
|
> (define small-counter-example
|
||||||
> '(let-one 42
|
> '(let-one 42
|
||||||
> (boxenv 0
|
> (boxenv 0
|
||||||
> (application (case-lam (lam (ref) () (loc-box 0)))
|
> (application (case-lam (lam (ref) () (loc-box 0)))
|
||||||
> (loc-box 1)))))
|
> (loc-box 1)))))
|
||||||
> #t)
|
|
||||||
>
|
>
|
||||||
|
> (test-equal (check small-counter-example) #f)
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
338c338,339
|
||||||
|
< (side-condition (< (term n_0) (term n_h)))]
|
||||||
|
---
|
||||||
|
> ;; bug 2
|
||||||
|
> #;(side-condition (< (term n_0) (term n_h)))]
|
||||||
|
475a477,487
|
||||||
|
>
|
||||||
|
> (define small-counter-example
|
||||||
|
> '(proc-const (val)
|
||||||
|
> (branch (loc 0)
|
||||||
|
> (let-one 'x
|
||||||
|
> (branch (loc 1)
|
||||||
|
> (loc-clr 0)
|
||||||
|
> void))
|
||||||
|
> void)))
|
||||||
|
>
|
||||||
|
> (test-equal (check small-counter-example) #f)
|
||||||
|
\ No newline at end of file
|
|
@ -14,12 +14,13 @@
|
||||||
< (where (s_1 γ_1 η_1) (verify* (e_0 e_1 ...) (abs-push n not s) n_l* #f γ η))
|
< (where (s_1 γ_1 η_1) (verify* (e_0 e_1 ...) (abs-push n not s) n_l* #f γ η))
|
||||||
---
|
---
|
||||||
> (where (s_1 γ_1 η_1) (verify* (e_0 e_1 ...) (abs-push n uninit s) n_l* #f γ η))
|
> (where (s_1 γ_1 η_1) (verify* (e_0 e_1 ...) (abs-push n uninit s) n_l* #f γ η))
|
||||||
475a476,483
|
475a476,484
|
||||||
> (test-equal
|
>
|
||||||
> (bytecode-ok?
|
> (define small-counter-example
|
||||||
> '(application
|
> '(application
|
||||||
> (proc-const (val val) (branch (loc-noclr 0) 'a 'b))
|
> (proc-const (val val) (branch (loc-noclr 0) 'a 'b))
|
||||||
> 'x
|
> 'x
|
||||||
> (install-value 0 'y (boxenv 0 'z))))
|
> (install-value 0 'y (boxenv 0 'z))))
|
||||||
> #t)
|
>
|
||||||
|
> (test-equal (check small-counter-example) #f)
|
||||||
>
|
>
|
||||||
|
|
|
@ -7,10 +7,12 @@
|
||||||
---
|
---
|
||||||
> ;; bug 4
|
> ;; bug 4
|
||||||
> #;(side-condition (< (term n_p) (term n_l)))]
|
> #;(side-condition (< (term n_p) (term n_l)))]
|
||||||
475a477,482
|
475a477,484
|
||||||
> (test-equal
|
>
|
||||||
> (bytecode-ok?
|
> (define small-counter-example
|
||||||
> '(let-one 'x
|
> '(let-one 'x
|
||||||
> (branch #f (boxenv 0 'y) (loc-box 0))))
|
> (branch #f (boxenv 0 'y) (loc-box 0))))
|
||||||
> #t)
|
>
|
||||||
|
> (test-equal (check small-counter-example) #f)
|
||||||
|
>
|
||||||
>
|
>
|
||||||
|
|
|
@ -7,12 +7,14 @@
|
||||||
---
|
---
|
||||||
> ;;bug 5
|
> ;;bug 5
|
||||||
> ;;(side-condition (<= (term n) (term n_l)))
|
> ;;(side-condition (<= (term n) (term n_l)))
|
||||||
475a477,484
|
475a477,486
|
||||||
> (test-equal
|
>
|
||||||
> (bytecode-ok?
|
> (define small-counter-example
|
||||||
> '(let-void 1
|
> '(let-void 1
|
||||||
> (branch #f
|
> (branch #f
|
||||||
> (let-rec ((lam () (0) 'x)) 'y)
|
> (let-rec ((lam () (0) 'x)) 'y)
|
||||||
> (loc-noclr 0))))
|
> (loc-noclr 0))))
|
||||||
> #t)
|
>
|
||||||
|
> (test-equal (check small-counter-example) #f)
|
||||||
|
>
|
||||||
>
|
>
|
||||||
|
|
|
@ -3,9 +3,12 @@
|
||||||
---
|
---
|
||||||
> ;; bug 6
|
> ;; bug 6
|
||||||
> #;(side-condition (term (AND (lam-verified? l s ?) ...)))]
|
> #;(side-condition (term (AND (lam-verified? l s ?) ...)))]
|
||||||
474a476,480
|
475a477,483
|
||||||
> (test-equal
|
|
||||||
> (bytecode-ok?
|
|
||||||
> '(let-one 'x (case-lam (lam (val) () (loc-noclr 34)))))
|
|
||||||
> #t)
|
|
||||||
>
|
>
|
||||||
|
> (define small-counter-example
|
||||||
|
> '(application
|
||||||
|
> (case-lam (lam (val) () (loc-noclr 34)))
|
||||||
|
> 'x))
|
||||||
|
>
|
||||||
|
> (test-equal (check small-counter-example) #f)
|
||||||
|
\ No newline at end of file
|
||||||
|
|
|
@ -435,49 +435,49 @@
|
||||||
[`(quote ,_) expr]
|
[`(quote ,_) expr]
|
||||||
[(? boolean?) expr])))
|
[(? boolean?) expr])))
|
||||||
|
|
||||||
(define (check e0)
|
(define (check e)
|
||||||
(define e (fix e0))
|
(let/ec fail
|
||||||
(or (not e)
|
(or (not e)
|
||||||
(not (bytecode-ok? e))
|
(implies (with-handlers ([exn:fail? (λ (exc)
|
||||||
(match
|
(maybe-log-exn exc e)
|
||||||
(with-handlers
|
(fail #f))])
|
||||||
([exn:fail? (λ (exc)
|
(bytecode-ok? e))
|
||||||
(unless
|
(match
|
||||||
(regexp-match?
|
(with-handlers
|
||||||
#"counterexample|domain|clauses"
|
([exn:fail? (λ (exc)
|
||||||
(exn-message exc))
|
(maybe-log-exn exc e)
|
||||||
(printf "exception on ~s\n~s\n" e
|
#f)])
|
||||||
(exn-message exc)))
|
(run e '() 100))
|
||||||
#f)])
|
[(cutoff) #t]
|
||||||
(run e '() 100))
|
[(answer _) #t]
|
||||||
[(cutoff) #t]
|
[_ #f])))))
|
||||||
[(answer _) #t]
|
|
||||||
[_ #f])))
|
(define (maybe-log-exn exc e)
|
||||||
|
(unless
|
||||||
|
(regexp-match?
|
||||||
|
#"counterexample|domain|clauses"
|
||||||
|
(exn-message exc))
|
||||||
|
(printf "exception on ~s\n~s\n" e
|
||||||
|
(exn-message exc))))
|
||||||
|
|
||||||
|
|
||||||
(define (generate-M-term)
|
(define (generate-M-term)
|
||||||
(generate-term bytecode e 5))
|
(fix (generate-term bytecode e 5)))
|
||||||
|
|
||||||
(define (generate-typed-term)
|
(define (generate-typed-term)
|
||||||
(error "not currently implemented for rvm in the benchmark"))
|
(error "not currently implemented for rvm in the benchmark"))
|
||||||
|
|
||||||
(define (type-check e)
|
(define (type-check e)
|
||||||
(bytecode-ok? (fix e)))
|
(bytecode-ok? e))
|
||||||
|
|
||||||
(define (typed-generator)
|
(define (typed-generator)
|
||||||
(error "not currently implemented for rvm in the benchmark"))
|
(error "not currently implemented for rvm in the benchmark"))
|
||||||
|
|
||||||
(define (generate-enum-term)
|
(define (generate-enum-term)
|
||||||
(generate-term bytecode e #:i-th (pick-an-index 0.03)))
|
(fix (generate-term bytecode e #:i-th (pick-an-index 0.03))))
|
||||||
|
|
||||||
(define (ordered-enum-generator)
|
(define (ordered-enum-generator)
|
||||||
(let ([index 0])
|
(let ([index 0])
|
||||||
(λ ()
|
|
||||||
(begin0
|
|
||||||
(generate-term bytecode e #:i-th index)
|
|
||||||
(set! index (add1 index))))))
|
|
||||||
|
|
||||||
(define fixed '())
|
|
||||||
|
|
||||||
(define small-counter-example
|
(define small-counter-example
|
||||||
'(let-one 'x
|
'(let-one 'x
|
||||||
|
@ -487,3 +487,9 @@
|
||||||
|
|
||||||
(test-equal (check small-counter-example) #f)
|
(test-equal (check small-counter-example) #f)
|
||||||
|
|
||||||
|
(λ ()
|
||||||
|
(begin0
|
||||||
|
(fix (generate-term bytecode e #:i-th index))
|
||||||
|
(set! index (add1 index))))))
|
||||||
|
|
||||||
|
(define fixed '())
|
||||||
|
|
|
@ -432,49 +432,49 @@
|
||||||
[`(quote ,_) expr]
|
[`(quote ,_) expr]
|
||||||
[(? boolean?) expr])))
|
[(? boolean?) expr])))
|
||||||
|
|
||||||
(define (check e0)
|
(define (check e)
|
||||||
(define e (fix e0))
|
(let/ec fail
|
||||||
(or (not e)
|
(or (not e)
|
||||||
(not (bytecode-ok? e))
|
(implies (with-handlers ([exn:fail? (λ (exc)
|
||||||
(match
|
(maybe-log-exn exc e)
|
||||||
(with-handlers
|
(fail #f))])
|
||||||
([exn:fail? (λ (exc)
|
(bytecode-ok? e))
|
||||||
(unless
|
(match
|
||||||
(regexp-match?
|
(with-handlers
|
||||||
#"counterexample|domain|clauses"
|
([exn:fail? (λ (exc)
|
||||||
(exn-message exc))
|
(maybe-log-exn exc e)
|
||||||
(printf "exception on ~s\n~s\n" e
|
#f)])
|
||||||
(exn-message exc)))
|
(run e '() 100))
|
||||||
#f)])
|
[(cutoff) #t]
|
||||||
(run e '() 100))
|
[(answer _) #t]
|
||||||
[(cutoff) #t]
|
[_ #f])))))
|
||||||
[(answer _) #t]
|
|
||||||
[_ #f])))
|
(define (maybe-log-exn exc e)
|
||||||
|
(unless
|
||||||
|
(regexp-match?
|
||||||
|
#"counterexample|domain|clauses"
|
||||||
|
(exn-message exc))
|
||||||
|
(printf "exception on ~s\n~s\n" e
|
||||||
|
(exn-message exc))))
|
||||||
|
|
||||||
|
|
||||||
(define (generate-M-term)
|
(define (generate-M-term)
|
||||||
(generate-term bytecode e 5))
|
(fix (generate-term bytecode e 5)))
|
||||||
|
|
||||||
(define (generate-typed-term)
|
(define (generate-typed-term)
|
||||||
(error "not currently implemented for rvm in the benchmark"))
|
(error "not currently implemented for rvm in the benchmark"))
|
||||||
|
|
||||||
(define (type-check e)
|
(define (type-check e)
|
||||||
(bytecode-ok? (fix e)))
|
(bytecode-ok? e))
|
||||||
|
|
||||||
(define (typed-generator)
|
(define (typed-generator)
|
||||||
(error "not currently implemented for rvm in the benchmark"))
|
(error "not currently implemented for rvm in the benchmark"))
|
||||||
|
|
||||||
(define (generate-enum-term)
|
(define (generate-enum-term)
|
||||||
(generate-term bytecode e #:i-th (pick-an-index 0.03)))
|
(fix (generate-term bytecode e #:i-th (pick-an-index 0.03))))
|
||||||
|
|
||||||
(define (ordered-enum-generator)
|
(define (ordered-enum-generator)
|
||||||
(let ([index 0])
|
(let ([index 0])
|
||||||
(λ ()
|
|
||||||
(begin0
|
|
||||||
(generate-term bytecode e #:i-th index)
|
|
||||||
(set! index (add1 index))))))
|
|
||||||
|
|
||||||
(define fixed '())
|
|
||||||
|
|
||||||
(define small-counter-example
|
(define small-counter-example
|
||||||
'(let-one 42
|
'(let-one 42
|
||||||
|
@ -483,3 +483,9 @@
|
||||||
(loc-box 1)))))
|
(loc-box 1)))))
|
||||||
|
|
||||||
(test-equal (check small-counter-example) #f)
|
(test-equal (check small-counter-example) #f)
|
||||||
|
(λ ()
|
||||||
|
(begin0
|
||||||
|
(fix (generate-term bytecode e #:i-th index))
|
||||||
|
(set! index (add1 index))))))
|
||||||
|
|
||||||
|
(define fixed '())
|
||||||
|
|
|
@ -431,49 +431,49 @@
|
||||||
[`(quote ,_) expr]
|
[`(quote ,_) expr]
|
||||||
[(? boolean?) expr])))
|
[(? boolean?) expr])))
|
||||||
|
|
||||||
(define (check e0)
|
(define (check e)
|
||||||
(define e (fix e0))
|
(let/ec fail
|
||||||
(or (not e)
|
(or (not e)
|
||||||
(not (bytecode-ok? e))
|
(implies (with-handlers ([exn:fail? (λ (exc)
|
||||||
(match
|
(maybe-log-exn exc e)
|
||||||
(with-handlers
|
(fail #f))])
|
||||||
([exn:fail? (λ (exc)
|
(bytecode-ok? e))
|
||||||
(unless
|
(match
|
||||||
(regexp-match?
|
(with-handlers
|
||||||
#"counterexample|domain|clauses"
|
([exn:fail? (λ (exc)
|
||||||
(exn-message exc))
|
(maybe-log-exn exc e)
|
||||||
(printf "exception on ~s\n~s\n" e
|
#f)])
|
||||||
(exn-message exc)))
|
(run e '() 100))
|
||||||
#f)])
|
[(cutoff) #t]
|
||||||
(run e '() 100))
|
[(answer _) #t]
|
||||||
[(cutoff) #t]
|
[_ #f])))))
|
||||||
[(answer _) #t]
|
|
||||||
[_ #f])))
|
(define (maybe-log-exn exc e)
|
||||||
|
(unless
|
||||||
|
(regexp-match?
|
||||||
|
#"counterexample|domain|clauses"
|
||||||
|
(exn-message exc))
|
||||||
|
(printf "exception on ~s\n~s\n" e
|
||||||
|
(exn-message exc))))
|
||||||
|
|
||||||
|
|
||||||
(define (generate-M-term)
|
(define (generate-M-term)
|
||||||
(generate-term bytecode e 5))
|
(fix (generate-term bytecode e 5)))
|
||||||
|
|
||||||
(define (generate-typed-term)
|
(define (generate-typed-term)
|
||||||
(error "not currently implemented for rvm in the benchmark"))
|
(error "not currently implemented for rvm in the benchmark"))
|
||||||
|
|
||||||
(define (type-check e)
|
(define (type-check e)
|
||||||
(bytecode-ok? (fix e)))
|
(bytecode-ok? e))
|
||||||
|
|
||||||
(define (typed-generator)
|
(define (typed-generator)
|
||||||
(error "not currently implemented for rvm in the benchmark"))
|
(error "not currently implemented for rvm in the benchmark"))
|
||||||
|
|
||||||
(define (generate-enum-term)
|
(define (generate-enum-term)
|
||||||
(generate-term bytecode e #:i-th (pick-an-index 0.03)))
|
(fix (generate-term bytecode e #:i-th (pick-an-index 0.03))))
|
||||||
|
|
||||||
(define (ordered-enum-generator)
|
(define (ordered-enum-generator)
|
||||||
(let ([index 0])
|
(let ([index 0])
|
||||||
(λ ()
|
|
||||||
(begin0
|
|
||||||
(generate-term bytecode e #:i-th index)
|
|
||||||
(set! index (add1 index))))))
|
|
||||||
|
|
||||||
(define fixed '())
|
|
||||||
|
|
||||||
(define small-counter-example
|
(define small-counter-example
|
||||||
'(proc-const (val)
|
'(proc-const (val)
|
||||||
|
@ -485,3 +485,9 @@
|
||||||
void)))
|
void)))
|
||||||
|
|
||||||
(test-equal (check small-counter-example) #f)
|
(test-equal (check small-counter-example) #f)
|
||||||
|
(λ ()
|
||||||
|
(begin0
|
||||||
|
(fix (generate-term bytecode e #:i-th index))
|
||||||
|
(set! index (add1 index))))))
|
||||||
|
|
||||||
|
(define fixed '())
|
||||||
|
|
|
@ -430,49 +430,49 @@
|
||||||
[`(quote ,_) expr]
|
[`(quote ,_) expr]
|
||||||
[(? boolean?) expr])))
|
[(? boolean?) expr])))
|
||||||
|
|
||||||
(define (check e0)
|
(define (check e)
|
||||||
(define e (fix e0))
|
(let/ec fail
|
||||||
(or (not e)
|
(or (not e)
|
||||||
(not (bytecode-ok? e))
|
(implies (with-handlers ([exn:fail? (λ (exc)
|
||||||
(match
|
(maybe-log-exn exc e)
|
||||||
(with-handlers
|
(fail #f))])
|
||||||
([exn:fail? (λ (exc)
|
(bytecode-ok? e))
|
||||||
(unless
|
(match
|
||||||
(regexp-match?
|
(with-handlers
|
||||||
#"counterexample|domain|clauses"
|
([exn:fail? (λ (exc)
|
||||||
(exn-message exc))
|
(maybe-log-exn exc e)
|
||||||
(printf "exception on ~s\n~s\n" e
|
#f)])
|
||||||
(exn-message exc)))
|
(run e '() 100))
|
||||||
#f)])
|
[(cutoff) #t]
|
||||||
(run e '() 100))
|
[(answer _) #t]
|
||||||
[(cutoff) #t]
|
[_ #f])))))
|
||||||
[(answer _) #t]
|
|
||||||
[_ #f])))
|
(define (maybe-log-exn exc e)
|
||||||
|
(unless
|
||||||
|
(regexp-match?
|
||||||
|
#"counterexample|domain|clauses"
|
||||||
|
(exn-message exc))
|
||||||
|
(printf "exception on ~s\n~s\n" e
|
||||||
|
(exn-message exc))))
|
||||||
|
|
||||||
|
|
||||||
(define (generate-M-term)
|
(define (generate-M-term)
|
||||||
(generate-term bytecode e 5))
|
(fix (generate-term bytecode e 5)))
|
||||||
|
|
||||||
(define (generate-typed-term)
|
(define (generate-typed-term)
|
||||||
(error "not currently implemented for rvm in the benchmark"))
|
(error "not currently implemented for rvm in the benchmark"))
|
||||||
|
|
||||||
(define (type-check e)
|
(define (type-check e)
|
||||||
(bytecode-ok? (fix e)))
|
(bytecode-ok? e))
|
||||||
|
|
||||||
(define (typed-generator)
|
(define (typed-generator)
|
||||||
(error "not currently implemented for rvm in the benchmark"))
|
(error "not currently implemented for rvm in the benchmark"))
|
||||||
|
|
||||||
(define (generate-enum-term)
|
(define (generate-enum-term)
|
||||||
(generate-term bytecode e #:i-th (pick-an-index 0.03)))
|
(fix (generate-term bytecode e #:i-th (pick-an-index 0.03))))
|
||||||
|
|
||||||
(define (ordered-enum-generator)
|
(define (ordered-enum-generator)
|
||||||
(let ([index 0])
|
(let ([index 0])
|
||||||
(λ ()
|
|
||||||
(begin0
|
|
||||||
(generate-term bytecode e #:i-th index)
|
|
||||||
(set! index (add1 index))))))
|
|
||||||
|
|
||||||
(define fixed '())
|
|
||||||
|
|
||||||
(define small-counter-example
|
(define small-counter-example
|
||||||
'(application
|
'(application
|
||||||
|
@ -482,3 +482,9 @@
|
||||||
|
|
||||||
(test-equal (check small-counter-example) #f)
|
(test-equal (check small-counter-example) #f)
|
||||||
|
|
||||||
|
(λ ()
|
||||||
|
(begin0
|
||||||
|
(fix (generate-term bytecode e #:i-th index))
|
||||||
|
(set! index (add1 index))))))
|
||||||
|
|
||||||
|
(define fixed '())
|
||||||
|
|
|
@ -431,49 +431,49 @@
|
||||||
[`(quote ,_) expr]
|
[`(quote ,_) expr]
|
||||||
[(? boolean?) expr])))
|
[(? boolean?) expr])))
|
||||||
|
|
||||||
(define (check e0)
|
(define (check e)
|
||||||
(define e (fix e0))
|
(let/ec fail
|
||||||
(or (not e)
|
(or (not e)
|
||||||
(not (bytecode-ok? e))
|
(implies (with-handlers ([exn:fail? (λ (exc)
|
||||||
(match
|
(maybe-log-exn exc e)
|
||||||
(with-handlers
|
(fail #f))])
|
||||||
([exn:fail? (λ (exc)
|
(bytecode-ok? e))
|
||||||
(unless
|
(match
|
||||||
(regexp-match?
|
(with-handlers
|
||||||
#"counterexample|domain|clauses"
|
([exn:fail? (λ (exc)
|
||||||
(exn-message exc))
|
(maybe-log-exn exc e)
|
||||||
(printf "exception on ~s\n~s\n" e
|
#f)])
|
||||||
(exn-message exc)))
|
(run e '() 100))
|
||||||
#f)])
|
[(cutoff) #t]
|
||||||
(run e '() 100))
|
[(answer _) #t]
|
||||||
[(cutoff) #t]
|
[_ #f])))))
|
||||||
[(answer _) #t]
|
|
||||||
[_ #f])))
|
(define (maybe-log-exn exc e)
|
||||||
|
(unless
|
||||||
|
(regexp-match?
|
||||||
|
#"counterexample|domain|clauses"
|
||||||
|
(exn-message exc))
|
||||||
|
(printf "exception on ~s\n~s\n" e
|
||||||
|
(exn-message exc))))
|
||||||
|
|
||||||
|
|
||||||
(define (generate-M-term)
|
(define (generate-M-term)
|
||||||
(generate-term bytecode e 5))
|
(fix (generate-term bytecode e 5)))
|
||||||
|
|
||||||
(define (generate-typed-term)
|
(define (generate-typed-term)
|
||||||
(error "not currently implemented for rvm in the benchmark"))
|
(error "not currently implemented for rvm in the benchmark"))
|
||||||
|
|
||||||
(define (type-check e)
|
(define (type-check e)
|
||||||
(bytecode-ok? (fix e)))
|
(bytecode-ok? e))
|
||||||
|
|
||||||
(define (typed-generator)
|
(define (typed-generator)
|
||||||
(error "not currently implemented for rvm in the benchmark"))
|
(error "not currently implemented for rvm in the benchmark"))
|
||||||
|
|
||||||
(define (generate-enum-term)
|
(define (generate-enum-term)
|
||||||
(generate-term bytecode e #:i-th (pick-an-index 0.03)))
|
(fix (generate-term bytecode e #:i-th (pick-an-index 0.03))))
|
||||||
|
|
||||||
(define (ordered-enum-generator)
|
(define (ordered-enum-generator)
|
||||||
(let ([index 0])
|
(let ([index 0])
|
||||||
(λ ()
|
|
||||||
(begin0
|
|
||||||
(generate-term bytecode e #:i-th index)
|
|
||||||
(set! index (add1 index))))))
|
|
||||||
|
|
||||||
(define fixed '())
|
|
||||||
|
|
||||||
(define small-counter-example
|
(define small-counter-example
|
||||||
'(let-one 'x
|
'(let-one 'x
|
||||||
|
@ -482,3 +482,9 @@
|
||||||
(test-equal (check small-counter-example) #f)
|
(test-equal (check small-counter-example) #f)
|
||||||
|
|
||||||
|
|
||||||
|
(λ ()
|
||||||
|
(begin0
|
||||||
|
(fix (generate-term bytecode e #:i-th index))
|
||||||
|
(set! index (add1 index))))))
|
||||||
|
|
||||||
|
(define fixed '())
|
||||||
|
|
|
@ -431,49 +431,49 @@
|
||||||
[`(quote ,_) expr]
|
[`(quote ,_) expr]
|
||||||
[(? boolean?) expr])))
|
[(? boolean?) expr])))
|
||||||
|
|
||||||
(define (check e0)
|
(define (check e)
|
||||||
(define e (fix e0))
|
(let/ec fail
|
||||||
(or (not e)
|
(or (not e)
|
||||||
(not (bytecode-ok? e))
|
(implies (with-handlers ([exn:fail? (λ (exc)
|
||||||
(match
|
(maybe-log-exn exc e)
|
||||||
(with-handlers
|
(fail #f))])
|
||||||
([exn:fail? (λ (exc)
|
(bytecode-ok? e))
|
||||||
(unless
|
(match
|
||||||
(regexp-match?
|
(with-handlers
|
||||||
#"counterexample|domain|clauses"
|
([exn:fail? (λ (exc)
|
||||||
(exn-message exc))
|
(maybe-log-exn exc e)
|
||||||
(printf "exception on ~s\n~s\n" e
|
#f)])
|
||||||
(exn-message exc)))
|
(run e '() 100))
|
||||||
#f)])
|
[(cutoff) #t]
|
||||||
(run e '() 100))
|
[(answer _) #t]
|
||||||
[(cutoff) #t]
|
[_ #f])))))
|
||||||
[(answer _) #t]
|
|
||||||
[_ #f])))
|
(define (maybe-log-exn exc e)
|
||||||
|
(unless
|
||||||
|
(regexp-match?
|
||||||
|
#"counterexample|domain|clauses"
|
||||||
|
(exn-message exc))
|
||||||
|
(printf "exception on ~s\n~s\n" e
|
||||||
|
(exn-message exc))))
|
||||||
|
|
||||||
|
|
||||||
(define (generate-M-term)
|
(define (generate-M-term)
|
||||||
(generate-term bytecode e 5))
|
(fix (generate-term bytecode e 5)))
|
||||||
|
|
||||||
(define (generate-typed-term)
|
(define (generate-typed-term)
|
||||||
(error "not currently implemented for rvm in the benchmark"))
|
(error "not currently implemented for rvm in the benchmark"))
|
||||||
|
|
||||||
(define (type-check e)
|
(define (type-check e)
|
||||||
(bytecode-ok? (fix e)))
|
(bytecode-ok? e))
|
||||||
|
|
||||||
(define (typed-generator)
|
(define (typed-generator)
|
||||||
(error "not currently implemented for rvm in the benchmark"))
|
(error "not currently implemented for rvm in the benchmark"))
|
||||||
|
|
||||||
(define (generate-enum-term)
|
(define (generate-enum-term)
|
||||||
(generate-term bytecode e #:i-th (pick-an-index 0.03)))
|
(fix (generate-term bytecode e #:i-th (pick-an-index 0.03))))
|
||||||
|
|
||||||
(define (ordered-enum-generator)
|
(define (ordered-enum-generator)
|
||||||
(let ([index 0])
|
(let ([index 0])
|
||||||
(λ ()
|
|
||||||
(begin0
|
|
||||||
(generate-term bytecode e #:i-th index)
|
|
||||||
(set! index (add1 index))))))
|
|
||||||
|
|
||||||
(define fixed '())
|
|
||||||
|
|
||||||
(define small-counter-example
|
(define small-counter-example
|
||||||
'(let-void 1
|
'(let-void 1
|
||||||
|
@ -484,3 +484,9 @@
|
||||||
(test-equal (check small-counter-example) #f)
|
(test-equal (check small-counter-example) #f)
|
||||||
|
|
||||||
|
|
||||||
|
(λ ()
|
||||||
|
(begin0
|
||||||
|
(fix (generate-term bytecode e #:i-th index))
|
||||||
|
(set! index (add1 index))))))
|
||||||
|
|
||||||
|
(define fixed '())
|
||||||
|
|
|
@ -431,49 +431,49 @@
|
||||||
[`(quote ,_) expr]
|
[`(quote ,_) expr]
|
||||||
[(? boolean?) expr])))
|
[(? boolean?) expr])))
|
||||||
|
|
||||||
(define (check e0)
|
(define (check e)
|
||||||
(define e (fix e0))
|
(let/ec fail
|
||||||
(or (not e)
|
(or (not e)
|
||||||
(not (bytecode-ok? e))
|
(implies (with-handlers ([exn:fail? (λ (exc)
|
||||||
(match
|
(maybe-log-exn exc e)
|
||||||
(with-handlers
|
(fail #f))])
|
||||||
([exn:fail? (λ (exc)
|
(bytecode-ok? e))
|
||||||
(unless
|
(match
|
||||||
(regexp-match?
|
(with-handlers
|
||||||
#"counterexample|domain|clauses"
|
([exn:fail? (λ (exc)
|
||||||
(exn-message exc))
|
(maybe-log-exn exc e)
|
||||||
(printf "exception on ~s\n~s\n" e
|
#f)])
|
||||||
(exn-message exc)))
|
(run e '() 100))
|
||||||
#f)])
|
[(cutoff) #t]
|
||||||
(run e '() 100))
|
[(answer _) #t]
|
||||||
[(cutoff) #t]
|
[_ #f])))))
|
||||||
[(answer _) #t]
|
|
||||||
[_ #f])))
|
(define (maybe-log-exn exc e)
|
||||||
|
(unless
|
||||||
|
(regexp-match?
|
||||||
|
#"counterexample|domain|clauses"
|
||||||
|
(exn-message exc))
|
||||||
|
(printf "exception on ~s\n~s\n" e
|
||||||
|
(exn-message exc))))
|
||||||
|
|
||||||
|
|
||||||
(define (generate-M-term)
|
(define (generate-M-term)
|
||||||
(generate-term bytecode e 5))
|
(fix (generate-term bytecode e 5)))
|
||||||
|
|
||||||
(define (generate-typed-term)
|
(define (generate-typed-term)
|
||||||
(error "not currently implemented for rvm in the benchmark"))
|
(error "not currently implemented for rvm in the benchmark"))
|
||||||
|
|
||||||
(define (type-check e)
|
(define (type-check e)
|
||||||
(bytecode-ok? (fix e)))
|
(bytecode-ok? e))
|
||||||
|
|
||||||
(define (typed-generator)
|
(define (typed-generator)
|
||||||
(error "not currently implemented for rvm in the benchmark"))
|
(error "not currently implemented for rvm in the benchmark"))
|
||||||
|
|
||||||
(define (generate-enum-term)
|
(define (generate-enum-term)
|
||||||
(generate-term bytecode e #:i-th (pick-an-index 0.03)))
|
(fix (generate-term bytecode e #:i-th (pick-an-index 0.03))))
|
||||||
|
|
||||||
(define (ordered-enum-generator)
|
(define (ordered-enum-generator)
|
||||||
(let ([index 0])
|
(let ([index 0])
|
||||||
(λ ()
|
|
||||||
(begin0
|
|
||||||
(generate-term bytecode e #:i-th index)
|
|
||||||
(set! index (add1 index))))))
|
|
||||||
|
|
||||||
(define fixed '())
|
|
||||||
|
|
||||||
(define small-counter-example
|
(define small-counter-example
|
||||||
'(application
|
'(application
|
||||||
|
@ -481,3 +481,9 @@
|
||||||
'x))
|
'x))
|
||||||
|
|
||||||
(test-equal (check small-counter-example) #f)
|
(test-equal (check small-counter-example) #f)
|
||||||
|
(λ ()
|
||||||
|
(begin0
|
||||||
|
(fix (generate-term bytecode e #:i-th index))
|
||||||
|
(set! index (add1 index))))))
|
||||||
|
|
||||||
|
(define fixed '())
|
||||||
|
|
|
@ -430,46 +430,52 @@
|
||||||
[`(quote ,_) expr]
|
[`(quote ,_) expr]
|
||||||
[(? boolean?) expr])))
|
[(? boolean?) expr])))
|
||||||
|
|
||||||
(define (check e0)
|
(define (check e)
|
||||||
(define e (fix e0))
|
(let/ec fail
|
||||||
(or (not e)
|
(or (not e)
|
||||||
(not (bytecode-ok? e))
|
(implies (with-handlers ([exn:fail? (λ (exc)
|
||||||
(match
|
(maybe-log-exn exc e)
|
||||||
(with-handlers
|
(fail #f))])
|
||||||
([exn:fail? (λ (exc)
|
(bytecode-ok? e))
|
||||||
(unless
|
(match
|
||||||
(regexp-match?
|
(with-handlers
|
||||||
#"counterexample|domain|clauses"
|
([exn:fail? (λ (exc)
|
||||||
(exn-message exc))
|
(maybe-log-exn exc e)
|
||||||
(printf "exception on ~s\n~s\n" e
|
#f)])
|
||||||
(exn-message exc)))
|
(run e '() 100))
|
||||||
#f)])
|
[(cutoff) #t]
|
||||||
(run e '() 100))
|
[(answer _) #t]
|
||||||
[(cutoff) #t]
|
[_ #f])))))
|
||||||
[(answer _) #t]
|
|
||||||
[_ #f])))
|
(define (maybe-log-exn exc e)
|
||||||
|
(unless
|
||||||
|
(regexp-match?
|
||||||
|
#"counterexample|domain|clauses"
|
||||||
|
(exn-message exc))
|
||||||
|
(printf "exception on ~s\n~s\n" e
|
||||||
|
(exn-message exc))))
|
||||||
|
|
||||||
|
|
||||||
(define (generate-M-term)
|
(define (generate-M-term)
|
||||||
(generate-term bytecode e 5))
|
(fix (generate-term bytecode e 5)))
|
||||||
|
|
||||||
(define (generate-typed-term)
|
(define (generate-typed-term)
|
||||||
(error "not currently implemented for rvm in the benchmark"))
|
(error "not currently implemented for rvm in the benchmark"))
|
||||||
|
|
||||||
(define (type-check e)
|
(define (type-check e)
|
||||||
(bytecode-ok? (fix e)))
|
(bytecode-ok? e))
|
||||||
|
|
||||||
(define (typed-generator)
|
(define (typed-generator)
|
||||||
(error "not currently implemented for rvm in the benchmark"))
|
(error "not currently implemented for rvm in the benchmark"))
|
||||||
|
|
||||||
(define (generate-enum-term)
|
(define (generate-enum-term)
|
||||||
(generate-term bytecode e #:i-th (pick-an-index 0.03)))
|
(fix (generate-term bytecode e #:i-th (pick-an-index 0.03))))
|
||||||
|
|
||||||
(define (ordered-enum-generator)
|
(define (ordered-enum-generator)
|
||||||
(let ([index 0])
|
(let ([index 0])
|
||||||
(λ ()
|
(λ ()
|
||||||
(begin0
|
(begin0
|
||||||
(generate-term bytecode e #:i-th index)
|
(fix (generate-term bytecode e #:i-th index))
|
||||||
(set! index (add1 index))))))
|
(set! index (add1 index))))))
|
||||||
|
|
||||||
(define fixed '())
|
(define fixed '())
|
||||||
|
|
Loading…
Reference in New Issue
Block a user