From 0010a8ebaee1ec08866f087b1c6a8d8a83f32bd7 Mon Sep 17 00:00:00 2001 From: Burke Fetscher Date: Mon, 17 Feb 2014 14:57:27 -0600 Subject: [PATCH] add enum generation to stlc --- .../redex/examples/benchmark/make-mutants.rkt | 1 - .../redex/examples/benchmark/stlc/stlc-10.rkt | 6 ++- .../redex/examples/benchmark/stlc/stlc-2.rkt | 6 ++- .../redex/examples/benchmark/stlc/stlc-3.rkt | 6 ++- .../redex/examples/benchmark/stlc/stlc-4.rkt | 6 ++- .../redex/examples/benchmark/stlc/stlc-5.rkt | 6 ++- .../redex/examples/benchmark/stlc/stlc-6.rkt | 6 ++- .../redex/examples/benchmark/stlc/stlc-7.rkt | 6 ++- .../redex/examples/benchmark/stlc/stlc-8.rkt | 6 ++- .../redex/examples/benchmark/stlc/stlc-9.rkt | 6 ++- .../examples/benchmark/stlc/stlc-base.rkt | 8 +++- .../redex/examples/benchmark/test-file.rkt | 39 +++++++++++-------- 12 files changed, 74 insertions(+), 28 deletions(-) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/make-mutants.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/make-mutants.rkt index 2175d998a6..548489761b 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/make-mutants.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/make-mutants.rkt @@ -8,7 +8,6 @@ (define-runtime-path stlc "stlc") (define-runtime-path stlc-sub "stlc-sub") - (define-runtime-path poly-stlc "poly-stlc") (define-runtime-path rbtrees "rbtrees") (define-runtime-path delim-cont "delim-cont") diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-10.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-10.rkt index 14996f880b..0d96196038 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-10.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-10.rkt @@ -6,6 +6,7 @@ racket/list racket/match racket/contract + math/base "tut-subst.rkt") (provide (all-defined-out)) @@ -245,6 +246,9 @@ [t-type (type-check term)]) (and (= (length red-res) 1) - (or + (or (equal? (car red-res) "error") (equal? t-type (type-check (car red-res)))))))) + +(define (generate-enum-term) + (generate-term stlc M #:i-th (random-natural #e10e200))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-2.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-2.rkt index b0fb68c337..2f32bc46d6 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-2.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-2.rkt @@ -6,6 +6,7 @@ racket/list racket/contract racket/match + math/base "tut-subst.rkt") (provide (all-defined-out)) @@ -245,6 +246,9 @@ [t-type (type-check term)]) (and (= (length red-res) 1) - (or + (or (equal? (car red-res) "error") (equal? t-type (type-check (car red-res)))))))) + +(define (generate-enum-term) + (generate-term stlc M #:i-th (random-natural #e10e200))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-3.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-3.rkt index 35a840ae38..1f39484d7d 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-3.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-3.rkt @@ -6,6 +6,7 @@ racket/list racket/match racket/contract + math/base "tut-subst.rkt") (provide (all-defined-out)) @@ -246,6 +247,9 @@ [t-type (type-check term)]) (and (= (length red-res) 1) - (or + (or (equal? (car red-res) "error") (equal? t-type (type-check (car red-res)))))))) + +(define (generate-enum-term) + (generate-term stlc M #:i-th (random-natural #e10e200))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-4.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-4.rkt index ea5a2cb853..48577f5737 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-4.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-4.rkt @@ -6,6 +6,7 @@ racket/list racket/match racket/contract + math/base "tut-subst.rkt") (provide (all-defined-out)) @@ -246,6 +247,9 @@ [t-type (type-check term)]) (and (= (length red-res) 1) - (or + (or (equal? (car red-res) "error") (equal? t-type (type-check (car red-res)))))))) + +(define (generate-enum-term) + (generate-term stlc M #:i-th (random-natural #e10e200))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-5.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-5.rkt index 7f8fa0ebf2..437ed7de71 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-5.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-5.rkt @@ -6,6 +6,7 @@ racket/list racket/match racket/contract + math/base "tut-subst.rkt") (provide (all-defined-out)) @@ -245,6 +246,9 @@ [t-type (type-check term)]) (and (= (length red-res) 1) - (or + (or (equal? (car red-res) "error") (equal? t-type (type-check (car red-res)))))))) + +(define (generate-enum-term) + (generate-term stlc M #:i-th (random-natural #e10e200))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-6.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-6.rkt index 19179b8832..8b8155eb80 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-6.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-6.rkt @@ -6,6 +6,7 @@ racket/list racket/match racket/contract + math/base "tut-subst.rkt") (provide (all-defined-out)) @@ -245,6 +246,9 @@ [t-type (type-check term)]) (and (= (length red-res) 1) - (or + (or (equal? (car red-res) "error") (equal? t-type (type-check (car red-res)))))))) + +(define (generate-enum-term) + (generate-term stlc M #:i-th (random-natural #e10e200))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-7.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-7.rkt index c6f1d461c6..10dd18a235 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-7.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-7.rkt @@ -6,6 +6,7 @@ racket/list racket/match racket/contract + math/base "tut-subst.rkt") (provide (all-defined-out)) @@ -244,6 +245,9 @@ [t-type (type-check term)]) (and (= (length red-res) 1) - (or + (or (equal? (car red-res) "error") (equal? t-type (type-check (car red-res)))))))) + +(define (generate-enum-term) + (generate-term stlc M #:i-th (random-natural #e10e200))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-8.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-8.rkt index e3ef714bcc..24be9124fa 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-8.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-8.rkt @@ -6,6 +6,7 @@ racket/list racket/match racket/contract + math/base "tut-subst.rkt") (provide (all-defined-out)) @@ -245,6 +246,9 @@ [t-type (type-check term)]) (and (= (length red-res) 1) - (or + (or (equal? (car red-res) "error") (equal? t-type (type-check (car red-res)))))))) + +(define (generate-enum-term) + (generate-term stlc M #:i-th (random-natural #e10e200))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-9.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-9.rkt index 71ae8d0b19..7ff10e41ab 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-9.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-9.rkt @@ -6,6 +6,7 @@ racket/list racket/match racket/contract + math/base "tut-subst.rkt") (provide (all-defined-out)) @@ -245,6 +246,9 @@ [t-type (type-check term)]) (and (= (length red-res) 1) - (or + (or (equal? (car red-res) "error") (equal? t-type (type-check (car red-res)))))))) + +(define (generate-enum-term) + (generate-term stlc M #:i-th (random-natural #e10e200))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-base.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-base.rkt index b96e189331..52bb9b5ea2 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-base.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc/stlc-base.rkt @@ -6,6 +6,7 @@ racket/list racket/contract racket/match + math/base "tut-subst.rkt") (provide (all-defined-out)) @@ -245,7 +246,10 @@ (let ([red-res (apply-reduction-relation red term)] [t-type (type-check term)]) (and - (= (length red-res) 1) - (or + (= (length red-res) 1) + (or (equal? (car red-res) "error") (equal? t-type (type-check (car red-res)))))))) + +(define (generate-enum-term) + (generate-term stlc M #:i-th (random-natural #e10e200))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/test-file.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/test-file.rkt index e0914edde2..060951edcf 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/test-file.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/test-file.rkt @@ -11,7 +11,9 @@ (define verbose #f) (define output-file #f) -(define all-types '(search grammar search-gen search-gen-ref search-gen-enum search-gen-enum-ref)) +(define all-types '(search grammar search-gen search-gen-ref + search-gen-enum search-gen-enum-ref + enum)) (define types '()) (define filename @@ -24,7 +26,7 @@ [("-o" "--output") out-file "Output file name" (set! output-file out-file)] #:multi - [("-t" "--type") t "Generation type to run, one of: search, grammar, search-gen, search-gen-ref, search-gen-enum, search-gen-enum-ref" + [("-t" "--type") t "Generation type to run, one of: search, grammar, search-gen, search-gen-ref, search-gen-enum, search-gen-enum-ref, enum" (set! types (cons (string->symbol t) types))] #:args filenames (match filenames @@ -100,24 +102,29 @@ ((/ dev avg) . > . 0.1))) (define (test-file fname verbose? no-errs? gen-type seconds) - (define fpath (string->path fname)) - (define tc (dynamic-require fpath 'type-check)) - (define check (dynamic-require fpath 'check)) - (define gen-term (dynamic-require fpath 'generate-M-term)) - (define gen-typed-term (dynamic-require fpath 'generate-typed-term)) - (define typed-generator (dynamic-require fpath 'typed-generator)) - (define err (dynamic-require fpath 'the-error)) + (define tc (dynamic-require fname 'type-check)) + (define check (dynamic-require fname 'check)) + (define gen-term (dynamic-require fname 'generate-M-term)) + (define gen-typed-term (dynamic-require fname 'generate-typed-term)) + (define typed-generator (dynamic-require fname 'typed-generator)) + (define gen-enum (dynamic-require fname 'generate-enum-term)) + (define err (dynamic-require fname 'the-error)) (printf "\n-------------------------------------------------------------------\n") - (printf "~s has the error: ~a\n\n" fname err) - (printf "Running ~s....\n" fname) + (printf "~a has the error: ~a\n\n" fname err) + (printf "Running ~a....\n" fname) (printf "Using generator: ~s\n" gen-type) + (define (gen-and-type gen) + (λ () + (λ () + (define t (gen)) + (and (tc t) + t)))) (cond [(equal? gen-type 'grammar) - (define (gen-and-type) - (define t (gen-term)) - (and (tc t) - t)) - (run-generations fname verbose? no-errs? (λ () gen-and-type) + (run-generations fname verbose? no-errs? (gen-and-type gen-term) + check seconds gen-type)] + [(equal? gen-type 'enum) + (run-generations fname verbose? no-errs? (gen-and-type gen-enum) check seconds gen-type)] [(equal? gen-type 'search) (run-generations fname verbose? no-errs? (λ () gen-typed-term)