adjust vm correctness property, update diffs

This commit is contained in:
Burke Fetscher 2014-03-20 23:45:46 -05:00
parent bb1d23cb1d
commit 9d70f35ec4
15 changed files with 317 additions and 241 deletions

View File

@ -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)
> >

View File

@ -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)

View File

@ -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

View 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)
> >

View File

@ -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)
>
> >

View File

@ -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)
>
> >

View File

@ -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

View 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 '())

View File

@ -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 '())

View File

@ -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)
@ -484,4 +484,10 @@
void)) void))
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 '())

View File

@ -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 '())

View File

@ -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 '())

View File

@ -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 '())

View File

@ -431,53 +431,59 @@
[`(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
(case-lam (lam (val) () (loc-noclr 34))) (case-lam (lam (val) () (loc-noclr 34)))
'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 '())

View File

@ -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 '())