diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/delim-cont/delim-cont-1.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/delim-cont/delim-cont-1.rkt index bac87cc207..d05527ef2f 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/delim-cont/delim-cont-1.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/delim-cont/delim-cont-1.rkt @@ -943,3 +943,10 @@ (define (generate-enum-term) (generate-term abort-lang e #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (define index 0) + (λ () + (begin0 + (generate-term abort-lang e #:i-th index) + (set! index (add1 index))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/delim-cont/delim-cont-2.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/delim-cont/delim-cont-2.rkt index eef1e783d4..4ddcf329ab 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/delim-cont/delim-cont-2.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/delim-cont/delim-cont-2.rkt @@ -941,3 +941,10 @@ (define (generate-enum-term) (generate-term abort-lang e #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (define index 0) + (λ () + (begin0 + (generate-term abort-lang e #:i-th index) + (set! index (add1 index))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/delim-cont/delim-cont-3.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/delim-cont/delim-cont-3.rkt index 05bc0755a9..521af9cd40 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/delim-cont/delim-cont-3.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/delim-cont/delim-cont-3.rkt @@ -941,3 +941,10 @@ (define (generate-enum-term) (generate-term abort-lang e #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (define index 0) + (λ () + (begin0 + (generate-term abort-lang e #:i-th index) + (set! index (add1 index))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/delim-cont/delim-cont-base.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/delim-cont/delim-cont-base.rkt index 2444bbbb81..93a8f478a4 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/delim-cont/delim-cont-base.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/delim-cont/delim-cont-base.rkt @@ -938,3 +938,10 @@ (define (generate-enum-term) (generate-term abort-lang e #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (define index 0) + (λ () + (begin0 + (generate-term abort-lang e #:i-th index) + (set! index (add1 index))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/list-machine/list-machine-1.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/list-machine/list-machine-1.rkt index 7b15d31659..cb433e9deb 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/list-machine/list-machine-1.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/list-machine/list-machine-1.rkt @@ -435,3 +435,11 @@ (define (generate-enum-term) (generate-term list-machine-typing (l0 : ι p) #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term list-machine-typing (l0 : ι p) #:i-th index) + (set! index (add1 index)))))) + diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/list-machine/list-machine-2.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/list-machine/list-machine-2.rkt index e0ceb119a2..45e4dd8d78 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/list-machine/list-machine-2.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/list-machine/list-machine-2.rkt @@ -435,3 +435,11 @@ (define (generate-enum-term) (generate-term list-machine-typing (l0 : ι p) #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term list-machine-typing (l0 : ι p) #:i-th index) + (set! index (add1 index)))))) + diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/list-machine/list-machine-3.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/list-machine/list-machine-3.rkt index 9072a5c8f8..dc3f39aa62 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/list-machine/list-machine-3.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/list-machine/list-machine-3.rkt @@ -431,3 +431,11 @@ (define (generate-enum-term) (generate-term list-machine-typing (l0 : ι p) #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term list-machine-typing (l0 : ι p) #:i-th index) + (set! index (add1 index)))))) + diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/list-machine/list-machine-base.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/list-machine/list-machine-base.rkt index acd9445502..52e1397880 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/list-machine/list-machine-base.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/list-machine/list-machine-base.rkt @@ -431,3 +431,11 @@ (define (generate-enum-term) (generate-term list-machine-typing (l0 : ι p) #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term list-machine-typing (l0 : ι p) #:i-th index) + (set! index (add1 index)))))) + diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-10.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-10.rkt index b9e49404f1..f7c15ddcc9 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-10.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-10.rkt @@ -282,3 +282,10 @@ (define (generate-enum-term) (generate-term poly-stlc M #:i-th (pick-an-index 0.001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term poly-stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-2.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-2.rkt index 85ee8670da..eac830027e 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-2.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-2.rkt @@ -280,3 +280,10 @@ (define (generate-enum-term) (generate-term poly-stlc M #:i-th (pick-an-index 0.001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term poly-stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-3.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-3.rkt index 9e7063ec71..ac66e902e2 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-3.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-3.rkt @@ -282,3 +282,10 @@ (define (generate-enum-term) (generate-term poly-stlc M #:i-th (pick-an-index 0.001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term poly-stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-4.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-4.rkt index 0b2be997ba..4ed2a404f0 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-4.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-4.rkt @@ -282,3 +282,10 @@ (define (generate-enum-term) (generate-term poly-stlc M #:i-th (pick-an-index 0.001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term poly-stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-5.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-5.rkt index 266f46f78c..b728025588 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-5.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-5.rkt @@ -282,3 +282,10 @@ (define (generate-enum-term) (generate-term poly-stlc M #:i-th (pick-an-index 0.001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term poly-stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-6.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-6.rkt index 003e0eb79e..63eeecc84a 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-6.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-6.rkt @@ -282,3 +282,10 @@ (define (generate-enum-term) (generate-term poly-stlc M #:i-th (pick-an-index 0.001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term poly-stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-7.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-7.rkt index 20241b6357..8549119199 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-7.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-7.rkt @@ -281,3 +281,10 @@ (define (generate-enum-term) (generate-term poly-stlc M #:i-th (pick-an-index 0.001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term poly-stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-8.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-8.rkt index 4455912eef..2dccacbe64 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-8.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-8.rkt @@ -282,3 +282,10 @@ (define (generate-enum-term) (generate-term poly-stlc M #:i-th (pick-an-index 0.001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term poly-stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-9.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-9.rkt index 8dc98f316d..b0aaea1db2 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-9.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-9.rkt @@ -282,3 +282,10 @@ (define (generate-enum-term) (generate-term poly-stlc M #:i-th (pick-an-index 0.001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term poly-stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-base.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-base.rkt index a1e1e51535..0e091a778c 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-base.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/poly-stlc/poly-stlc-base.rkt @@ -282,3 +282,10 @@ (define (generate-enum-term) (generate-term poly-stlc M #:i-th (pick-an-index 0.001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term poly-stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/rbtrees/rbtrees-1.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/rbtrees/rbtrees-1.rkt index ab5c7f85eb..509c927df3 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/rbtrees/rbtrees-1.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/rbtrees/rbtrees-1.rkt @@ -291,3 +291,10 @@ (define (generate-enum-term) (generate-term rbtrees t #:i-th (pick-an-index 0.2))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term rbtrees t #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/rbtrees/rbtrees-2.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/rbtrees/rbtrees-2.rkt index 40f25671c5..b9b81c9009 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/rbtrees/rbtrees-2.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/rbtrees/rbtrees-2.rkt @@ -289,3 +289,10 @@ (define (generate-enum-term) (generate-term rbtrees t #:i-th (pick-an-index 0.2))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term rbtrees t #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/rbtrees/rbtrees-3.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/rbtrees/rbtrees-3.rkt index 3c319bbe53..8ed6275477 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/rbtrees/rbtrees-3.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/rbtrees/rbtrees-3.rkt @@ -291,3 +291,10 @@ (define (generate-enum-term) (generate-term rbtrees t #:i-th (pick-an-index 0.2))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term rbtrees t #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/rbtrees/rbtrees-base.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/rbtrees/rbtrees-base.rkt index aaa4491840..dd80dd872b 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/rbtrees/rbtrees-base.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/rbtrees/rbtrees-base.rkt @@ -291,3 +291,10 @@ (define (generate-enum-term) (generate-term rbtrees t #:i-th (pick-an-index 0.2))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term rbtrees t #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/run-muts.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/run-muts.rkt index 9c4f8c16f4..ebc7f189d1 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/run-muts.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/run-muts.rkt @@ -33,7 +33,7 @@ [("-f" "--file") fname "Run tests for a single file" (set! files (list fname))] #: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, ordered" (set! gen-types (cons (string->symbol t) gen-types))]) (define-runtime-path here ".") @@ -78,7 +78,8 @@ (string-append "-m " (number->string minutes)) (string-append "-o " output-name) (string-append "-t " - (symbol->string type))) + (symbol->string type)) + (if (equal? type 'ordered) "-f" "")) " "))) (define command (apply string-append (add-between (list "racket" (path->string (build-path here "test-file.rkt")) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-1.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-1.rkt index 9722c65bc1..24d40c2615 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-1.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-1.rkt @@ -277,3 +277,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-2.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-2.rkt index 379fcd9c89..ef954c1879 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-2.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-2.rkt @@ -276,3 +276,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-3.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-3.rkt index b786a32d9c..4b0f552ceb 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-3.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-3.rkt @@ -277,3 +277,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-4.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-4.rkt index 927be999a9..da48df93a6 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-4.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-4.rkt @@ -275,3 +275,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-5.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-5.rkt index b229421ca4..b29f14f942 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-5.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-5.rkt @@ -277,3 +277,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-6.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-6.rkt index fa27233a76..5f6024d52a 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-6.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-6.rkt @@ -277,3 +277,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-7.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-7.rkt index 5b13a0080f..ee6a640d39 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-7.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-7.rkt @@ -277,3 +277,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-8.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-8.rkt index 23e3cc97c9..4e79d0f34f 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-8.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-8.rkt @@ -276,3 +276,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-9.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-9.rkt index 46ba80afd2..b0e80cc09c 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-9.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-9.rkt @@ -277,3 +277,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) diff --git a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-base.rkt b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-base.rkt index 768bdd90ee..6809f135ba 100644 --- a/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-base.rkt +++ b/pkgs/redex-pkgs/redex-examples/redex/examples/benchmark/stlc-sub/stlc-sub-base.rkt @@ -276,3 +276,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) 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 e23aedfe19..29b914580d 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 @@ -252,3 +252,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) \ No newline at end of file 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 5e00d0735c..78a513eccd 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 @@ -252,3 +252,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) \ No newline at end of file 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 b40e413e27..eeaba61278 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 @@ -253,3 +253,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) \ No newline at end of file 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 5d5d0314d4..40d827796f 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 @@ -253,3 +253,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) \ No newline at end of file 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 8cc7a5480e..396c7b6016 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 @@ -252,3 +252,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) \ No newline at end of file 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 a0087ee598..7a2d22b3a0 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 @@ -252,3 +252,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) \ No newline at end of file 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 cba11ac300..425af3b610 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 @@ -251,3 +251,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) \ No newline at end of file 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 b0ce8472f3..106aa9f123 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 @@ -252,3 +252,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) \ No newline at end of file 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 112819a955..976d04494a 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 @@ -252,3 +252,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) \ No newline at end of file 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 a2b2c7d30f..5084abe4b6 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 @@ -253,3 +253,10 @@ (define (generate-enum-term) (generate-term stlc M #:i-th (pick-an-index 0.0001))) + +(define (ordered-enum-generator) + (let ([index 0]) + (λ () + (begin0 + (generate-term stlc M #:i-th index) + (set! index (add1 index)))))) \ No newline at end of file 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 42d785a982..5fd27fe5bf 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 @@ -6,15 +6,19 @@ racket/set racket/match racket/path + racket/system + (only-in redex/reduction-semantics caching-enabled?) math/statistics) (define minutes 1) (define verbose #f) (define output-file #f) +(define n-procs #f) +(define first-only #f) (define all-types '(search grammar search-gen search-gen-ref search-gen-enum search-gen-enum-ref - enum)) + enum ordered)) (define types '()) (define (set-type! arg) @@ -31,8 +35,12 @@ (set! verbose #t)] [("-o" "--output") out-file "Output file name" (set! output-file out-file)] + [("-n" "--num-processes") nps "Number of parallel processes to use" + (set! n-procs (string->number nps))] + [("-f" "--first-only") "Find the first counterexample only" + (set! first-only #t)] #:multi - [("-t" "--type") t "Generation type to run, one of: search, grammar, search-gen, search-gen-ref, search-gen-enum, search-gen-enum-ref, enum" + [("-t" "--type") t "Generation type to run, one of: search, grammar, search-gen, search-gen-ref, search-gen-enum, search-gen-enum-ref, enum, ordered" (set-type! t)] #:args filenames (match filenames @@ -74,6 +82,30 @@ (handle-evt res-chan (λ (result-of-thunk) result-of-thunk)))) +(define (run/spawn-generations fname verbose? no-errs? get-gen check seconds type) + (if n-procs + (spawn-parallel fname verbose? no-errs? get-gen check seconds type) + (run-generations fname verbose? no-errs? get-gen check seconds type))) + +(define (spawn-parallel fname verbose? no-errs? get-gen check seconds type) + (define (make-cmd n) + (define oname (string-append + (first + (regexp-split #rx"\\." + (last (regexp-split #rx"/" (path->string fname))))) + "-" + (symbol->string type) + "-results-" (number->string n) ".rktd")) + (format "racket test-file.rkt -m ~s -t ~s -o ~s ~a" + (/ seconds 60) + type + oname + fname)) + (map thread-wait + (for/list ([n n-procs]) + (thread + (λ () (system (make-cmd n))))))) + (define (run-generations fname verbose? no-errs? get-gen check seconds type) (collect-garbage) (define s-time (current-process-milliseconds)) @@ -102,15 +134,16 @@ (cond [(not ok?) (when verbose? - (printf "~s: counterexample: ~s\n ~s iterations and ~s milliseconds\n" + (printf "~a: counterexample: ~s\n ~s iterations and ~s milliseconds\n" fname term i me-time)) (when no-errs? (printf "!---------------------------------------------------!\n") - (error 'run-generations "~s: unexpected error on ~s" + (error 'run-generations "~a: unexpected error on ~s" fname term)) (define continue? (update-results me-time fname type verbose?)) - (if (or continue? - (t . < . 5)) + (if (and (not first-only) + (or continue? + (t . < . 5))) (begin (set! terms (+ i terms)) (trials-loop (add1 t))) @@ -140,6 +173,7 @@ (define gen-typed-term (dynamic-require fpath 'generate-typed-term)) (define typed-generator (dynamic-require fpath 'typed-generator)) (define gen-enum (dynamic-require fpath 'generate-enum-term)) + (define ordered-generator (dynamic-require fpath 'ordered-enum-generator)) (define err (dynamic-require fpath 'the-error)) (printf "\n-------------------------------------------------------------------\n") (printf "~a has the error: ~a\n\n" fpath err) @@ -147,22 +181,26 @@ (printf "Using generator: ~s\n" gen-type) (define (gen-and-type gen) (λ () - (λ () - (define t (gen)) - (and (tc t) - t)))) + (define t (gen)) + (and (tc t) + t))) (cond [(equal? gen-type 'grammar) - (run-generations fpath verbose? no-errs? (gen-and-type gen-term) + (run/spawn-generations fpath verbose? no-errs? (λ () (gen-and-type gen-term)) check seconds gen-type)] [(equal? gen-type 'enum) - (run-generations fpath verbose? no-errs? (gen-and-type gen-enum) + (run/spawn-generations fpath verbose? no-errs? (λ () (gen-and-type gen-enum)) + check seconds gen-type)] + [(equal? gen-type 'ordered) + (run/spawn-generations fpath verbose? no-errs? (λ () + (define g (ordered-generator)) + (gen-and-type g)) check seconds gen-type)] [(equal? gen-type 'search) - (run-generations fpath verbose? no-errs? (λ () gen-typed-term) + (run/spawn-generations fpath verbose? no-errs? (λ () gen-typed-term) check seconds gen-type)] [(equal? gen-type 'search-gen) - (run-generations fpath verbose? no-errs? typed-generator + (run/spawn-generations fpath verbose? no-errs? typed-generator check seconds gen-type)] [(equal? gen-type 'search-gen-ref) (define t (current-process-milliseconds)) @@ -172,11 +210,11 @@ (set! t (current-process-milliseconds)) (set! g (typed-generator))) (g)) - (run-generations fpath verbose? no-errs? (λ () gen) + (run/spawn-generations fpath verbose? no-errs? (λ () gen) check seconds gen-type)] [(equal? gen-type 'search-gen-enum) (parameterize ([gen-state (set-remove (gen-state) 'shuffle-clauses)]) - (run-generations fpath verbose? no-errs? typed-generator + (run/spawn-generations fpath verbose? no-errs? typed-generator check seconds gen-type))] [(equal? gen-type 'search-gen-enum-ref) (parameterize ([gen-state (set-remove (gen-state) 'shuffle-clauses)]) @@ -187,11 +225,12 @@ (set! t (current-process-milliseconds)) (set! g (typed-generator))) (g)) - (run-generations fpath verbose? no-errs? (λ () gen) + (run/spawn-generations fpath verbose? no-errs? (λ () gen) check seconds gen-type))])) -(for ([gen-type (in-list types)]) - (test-file filename verbose #f gen-type (* minutes 60))) +(parameterize ([caching-enabled? #f]) + (for ([gen-type (in-list types)]) + (test-file filename verbose #f gen-type (* minutes 60)))) (call-with-output-file output-file (λ (out)