8514
((3) 0 () 8 ((q lib "plai/mutator.rkt") (q lib "plai/gc2/mutator.rkt") (q lib "plai/main.rkt") (q lib "plai/scribblings/fake-collector.rkt") (q lib "plai/gc2/collector.rkt") (q lib "plai/scribblings/fake-collector2.rkt") (q lib "plai/collector.rkt") (q lib "plai/random-mutator.rkt")) () (h ! (equal) ((c def c (c (? . 4) q heap-set!)) q (4643 . 4)) ((c def c (c (? . 0) q sub1)) q (3273 . 2)) ((c form c (c (? . 2) q test/regexp)) q (463 . 2)) ((c def c (c (? . 0) q >)) q (3517 . 2)) ((c def c (c (? . 7) q find-heap-values)) q (8959 . 3)) ((c def c (c (? . 1) q cons?)) q (7596 . 3)) ((c form c (c (? . 0) q quote)) q (3032 . 2)) ((c def c (c (? . 1) q even?)) q (7185 . 2)) ((c def c (c (? . 2) q abridged-test-output)) q (595 . 3)) ((c def c (c (? . 3) q gc:first)) q (2265 . 3)) ((q form ((lib "plai/scribblings/fake-mutator.rkt") allocator-setup)) q (2773 . 5)) ((c def c (c (? . 3) q gc:set-rest!)) q (2533 . 4)) ((c def c (c (? . 5) q gc:flat?)) q (6102 . 3)) ((c form c (c (? . 0) q lambda)) q (3116 . 2)) ((c def c (c (? . 2) q plai-ignore-exn-strings)) q (1013 . 3)) ((c form c (c (? . 0) q let-values)) q (2990 . 2)) ((c def c (c (? . 1) q *)) q (7139 . 2)) ((c form c (c (? . 0) q import-primitives)) q (4206 . 2)) ((c def c (c (? . 4) q simple-root)) q (4966 . 3)) ((c def c (c (? . 5) q gc:rest)) q (5731 . 3)) ((c def c (c (? . 6) q set-root!)) q (1587 . 4)) ((c form c (c (? . 4) q with-roots)) q (5310 . 4)) ((c def c (c (? . 0) q *)) q (3372 . 2)) ((c def c (c (? . 1) q zero?)) q (7066 . 2)) ((c form c (c (? . 0) q if)) q (2903 . 2)) ((c def c (c (? . 2) q error)) q (390 . 2)) ((c def c (c (? . 5) q gc:closure-env-ref)) q (6362 . 4)) ((c form c (c (? . 1) q empty)) q (7883 . 2)) ((c def c (c (? . 4) q read-root)) q (4819 . 3)) ((c form c (c (? . 4) q get-root-set)) q (4797 . 2)) ((c def c (c (? . 1) q =)) q (7238 . 2)) ((c form c (c (? . 0) q begin)) q (3045 . 2)) ((c def c (c (? . 6) q root?)) q (1232 . 3)) ((c def c (c (? . 1) q symbol?)) q (7355 . 2)) ((c form c (c (? . 0) q define-values)) q (2958 . 2)) ((c def c (c (? . 1) q sub1)) q (7040 . 2)) ((c form c (c (? . 1) q or)) q (6691 . 2)) ((c form c (c (? . 6) q with-heap)) q (1751 . 4)) ((c def c (c (? . 5) q gc:closure-code-ptr)) q (6286 . 3)) ((c form c (c (? . 1) q cond)) q (6701 . 2)) ((c def c (c (? . 6) q location?)) q (1177 . 3)) ((c def c (c (? . 6) q heap-size)) q (1123 . 2)) ((c def c (c (? . 5) q gc:deref)) q (5434 . 3)) ((c def c (c (? . 1) q >=)) q (7331 . 2)) ((c form c (c (? . 2) q plai-all-test-results)) q (1094 . 2)) ((c form c (c (? . 2) q type-case)) q (154 . 6)) ((c form c (c (? . 1) q import-primitives)) q (7943 . 2)) ((c def c (c (? . 1) q /)) q (7162 . 2)) ((c def c (c (? . 1) q first)) q (7647 . 3)) ((c def c (c (? . 1) q set-rest!)) q (7813 . 4)) ((c def c (c (? . 0) q print-only-errors)) q (4131 . 2)) ((c def c (c (? . 4) q current-heap)) q (5248 . 2)) ((c form c (c (? . 0) q and)) q (2913 . 2)) ((c def c (c (? . 1) q rest)) q (7695 . 3)) ((c def c (c (? . 4) q root?)) q (4535 . 3)) ((c def c (c (? . 1) q eq?)) q (7501 . 2)) ((c def c (c (? . 3) q gc:alloc-flat)) q (2100 . 3)) ((c def c (c (? . 3) q gc:cons)) q (2170 . 4)) ((c def c (c (? . 1) q <=)) q (7307 . 2)) ((c form c (c (? . 1) q begin)) q (6812 . 2)) ((c form c (c (? . 1) q printf)) q (8084 . 4)) ((c form c (c (? . 0) q or)) q (2924 . 2)) ((c def c (c (? . 5) q gc:closure?)) q (6475 . 3)) ((c form c (c (? . 0) q define)) q (3058 . 2)) ((c form c (c (? . 4) q with-heap)) q (5157 . 4)) ((c def c (c (? . 0) q /)) q (3395 . 2)) ((c def c (c (? . 1) q cons)) q (7526 . 4)) ((c def c (c (? . 0) q odd?)) q (3445 . 2)) ((c def c (c (? . 0) q set-rest!)) q (4047 . 4)) ((c form c (c (? . 6) q get-root-set)) q (1494 . 2)) ((c def c (c (? . 5) q gc:alloc-flat)) q (5499 . 3)) ((c form c (c (? . 0) q case)) q (2946 . 2)) ((c def c (c (? . 5) q gc:closure)) q (6164 . 4)) ((c form c (c (? . 1) q case)) q (6713 . 2)) ((c def c (c (? . 1) q <)) q (7261 . 2)) ((c def c (c (? . 0) q -)) q (3349 . 2)) ((c def c (c (? . 0) q add1)) q (3247 . 2)) ((c def c (c (? . 6) q procedure-roots)) q (1672 . 3)) ((c def c (c (? . 1) q empty?)) q (7473 . 2)) ((c def c (c (? . 4) q location?)) q (4480 . 3)) ((c def c (c (? . 1) q -)) q (7116 . 2)) ((c def c (c (? . 6) q read-root)) q (1525 . 3)) ((c def c (c (? . 0) q >=)) q (3564 . 2)) ((c def c (c (? . 5) q gc:cons?)) q (6040 . 3)) ((c def c (c (? . 0) q eq?)) q (3734 . 2)) ((c def c (c (? . 3) q gc:rest)) q (2340 . 3)) ((c def c (c (? . 1) q odd?)) q (7212 . 2)) ((c form c (c (? . 1) q and)) q (6680 . 2)) ((c form c (c (? . 0) q let)) q (2979 . 2)) ((c form c (c (? . 2) q define-type)) q (0 . 5)) ((c form c (c (? . 0) q set!)) q (3020 . 2)) ((c def c (c (? . 1) q error)) q (6987 . 2)) ((c def c (c (? . 3) q gc:flat?)) q (2711 . 3)) ((c def c (c (? . 0) q symbol=?)) q (3617 . 2)) ((c form c (c (? . 0) q λ)) q (3170 . 2)) ((c def c (c (? . 1) q boolean?)) q (7443 . 2)) ((c def c (c (? . 0) q rest)) q (3928 . 3)) ((c def c (c (? . 2) q test-inexact-epsilon)) q (936 . 3)) ((c form c (c (? . 1) q test/location=?)) q (7979 . 2)) ((c form c (c (? . 1) q lambda)) q (6883 . 2)) ((c def c (c (? . 0) q even?)) q (3418 . 2)) ((c form c (c (? . 0) q cond)) q (2934 . 2)) ((c def c (c (? . 5) q gc:first)) q (5656 . 3)) ((c form c (c (? . 0) q empty)) q (4118 . 2)) ((c form c (c (? . 1) q print-only-errors)) q (7896 . 2)) ((c form c (c (? . 0) q test/location=?)) q (4242 . 2)) ((c def c (c (? . 4) q set-root!)) q (4881 . 4)) ((c def c (c (? . 2) q halt-on-errors)) q (773 . 3)) ((c form c (c (? . 2) q test/pred)) q (351 . 2)) ((c def c (c (? . 4) q make-root)) q (5024 . 5)) ((c def c (c (? . 2) q print-only-errors)) q (852 . 3)) ((c form c (c (? . 1) q test/value=?)) q (8034 . 2)) ((c def c (c (? . 1) q set-first!)) q (7742 . 4)) ((c form c (c (? . 1) q quote)) q (6799 . 2)) ((c def c (c (? . 0) q zero?)) q (3299 . 2)) ((c def c (c (? . 3) q gc:cons?)) q (2649 . 3)) ((c def c (c (? . 0) q first)) q (3880 . 3)) ((c form c (c (? . 0) q printf)) q (4354 . 4)) ((c form c (c (? . 2) q test/exn)) q (417 . 2)) ((c def c (c (? . 0) q halt-on-errors)) q (4170 . 2)) ((c form c (c (? . 2) q test)) q (309 . 2)) ((q def ((lib "plai/scribblings/fake-web.rkt") start)) q (9070 . 3)) ((c def c (c (? . 4) q heap-size)) q (4426 . 2)) ((c def c (c (? . 6) q current-heap)) q (1842 . 2)) ((c def c (c (? . 5) q gc:cons)) q (5569 . 4)) ((c def c (c (? . 4) q heap-value?)) q (4586 . 3)) ((c def c (c (? . 0) q +)) q (3326 . 2)) ((c form c (c (? . 6) q with-roots)) q (1904 . 4)) ((c form c (c (? . 1) q set!)) q (6787 . 2)) ((c form c (c (? . 1) q if)) q (6670 . 2)) ((c def c (c (? . 1) q add1)) q (7014 . 2)) ((c def c (c (? . 3) q gc:set-first!)) q (2414 . 4)) ((c def c (c (? . 0) q cons?)) q (3829 . 3)) ((c form c (c (? . 1) q let)) q (6746 . 2)) ((c def c (c (? . 5) q gc:set-first!)) q (5805 . 4)) ((c form c (c (? . 0) q let*)) q (3008 . 2)) ((c def c (c (? . 2) q equal~?)) q (519 . 4)) ((c def c (c (? . 6) q heap-set!)) q (1340 . 4)) ((c def c (c (? . 3) q init-allocator)) q (1997 . 2)) ((c def c (c (? . 5) q gc:set-rest!)) q (5924 . 4)) ((c form c (c (? . 1) q λ)) q (6937 . 2)) ((c def c (c (? . 6) q heap-value?)) q (1283 . 3)) ((c form c (c (? . 1) q let-values)) q (6757 . 2)) ((c def c (c (? . 3) q gc:deref)) q (2035 . 3)) ((c def c (c (? . 4) q heap-ref)) q (4732 . 3)) ((c def c (c (? . 6) q heap-ref)) q (1429 . 3)) ((c def c (c (? . 0) q <)) q (3494 . 2)) ((q form ((lib "plai/scribblings/fake-mutator2.rkt") allocator-setup)) q (6540 . 5)) ((c def c (c (? . 5) q init-allocator)) q (5396 . 2)) ((c def c (c (? . 0) q error)) q (3220 . 2)) ((c def c (c (? . 1) q symbol=?)) q (7384 . 2)) ((c def c (c (? . 0) q number?)) q (3647 . 2)) ((c def c (c (? . 0) q boolean?)) q (3676 . 2)) ((c def c (c (? . 0) q cons)) q (3759 . 4)) ((c form c (c (? . 1) q define-values)) q (6725 . 2)) ((c def c (c (? . 1) q number?)) q (7414 . 2)) ((c def c (c (? . 0) q symbol?)) q (3588 . 2)) ((c form c (c (? . 1) q let*)) q (6775 . 2)) ((c def c (c (? . 1) q +)) q (7093 . 2)) ((c form c (c (? . 1) q halt-on-errors)) q (7921 . 2)) ((c form c (c (? . 0) q test/value=?)) q (4297 . 2)) ((c def c (c (? . 0) q <=)) q (3540 . 2)) ((c def c (c (? . 7) q save-random-mutator)) q (8156 . 16)) ((c def c (c (? . 1) q >)) q (7284 . 2)) ((c form c (c (? . 1) q define)) q (6825 . 2)) ((c def c (c (? . 2) q plai-catch-test-exn)) q (687 . 3)) ((c def c (c (? . 0) q empty?)) q (3706 . 2)) ((c def c (c (? . 0) q set-first!)) q (3975 . 4)) ((c def c (c (? . 0) q =)) q (3471 . 2))))
syntax
(define-type type-id variant ...)
(define-type type-id #:immutable variant ...)
 
variant = (variant-id (field-id contract-expr) ...)
syntax
(type-case datatype-id expr
   branch ...)
 
branch = (variant-id (field-id ...) result-expr ...)
       | (else result-expr ...)
syntax
(test result-expr expected-expr)
syntax
(test/pred result-expr pred?)
value
error : procedure?
syntax
(test/exn result-expr error-message)
syntax
(test/regexp result-expr error-message-regexp)
procedure
(equal~? v1 v2) -> boolean?
  v1 : any/c
  v2 : any/c
procedure
(abridged-test-output [abridge?]) -> void?
  abridge? : boolean? = false
procedure
(plai-catch-test-exn [catch?]) -> void?
  catch? : boolean? = true
procedure
(halt-on-errors [halt?]) -> void?
  halt? : boolean? = true
procedure
(print-only-errors [print?]) -> void?
  print? : boolean? = true
procedure
(test-inexact-epsilon epsilon) -> void?
  epsilon : number?
procedure
(plai-ignore-exn-strings ignore?) -> void?
  ignore? : boolean?
syntax
plai-all-test-results
procedure
(heap-size) -> exact-nonnegative-integer?
procedure
(location? v) -> boolean?
  v : any/c
procedure
(root? v) -> boolean?
  v : any/c
procedure
(heap-value? v) -> boolean?
  v : any/c
procedure
(heap-set! loc val) -> void?
  loc : location?
  val : heap-value?
procedure
(heap-ref loc) -> heap-value?
  loc : location?
syntax
(get-root-set id ...)
procedure
(read-root root) -> location?
  root : root?
procedure
(set-root! root loc) -> void?
  root : root?
  loc : location?
procedure
(procedure-roots proc) -> (listof root?)
  proc : procedure?
syntax
(with-heap heap-expr body-expr ...)
 
  heap-expr : (vectorof heap-value?)
value
current-heap : (parameter/c (vectorof heap-value?))
syntax
(with-roots roots-expr expr1 expr2 ...)
 
  roots-expr : (listof location?)
procedure
(init-allocator) -> void?
procedure
(gc:deref loc) -> heap-value?
  loc : location?
procedure
(gc:alloc-flat val) -> location?
  val : heap-value?
procedure
(gc:cons first rest) -> location?
  first : location?
  rest : location?
procedure
(gc:first cons-cell) -> location?
  cons-cell : location?
procedure
(gc:rest cons-cell) -> location?
  cons-cell : location?
procedure
(gc:set-first! cons-cell first-value) -> void?
  cons-cell : location?
  first-value : location?
procedure
(gc:set-rest! cons-cell rest-value) -> void?
  cons-cell : location?
  rest-value : location?
procedure
(gc:cons? loc) -> boolean?
  loc : location?
procedure
(gc:flat? loc) -> boolean?
  loc : location?
syntax
(allocator-setup collector-module
                 heap-size)
 
heap-size = exact-nonnegative-integer
syntax
if
syntax
and
syntax
or
syntax
cond
syntax
case
syntax
define-values
syntax
let
syntax
let-values
syntax
let*
syntax
set!
syntax
quote
syntax
begin
syntax
(define (id arg-id ...) body-expression ...+)
syntax
(lambda (arg-id ...) body-expression ...+)
syntax
(λ (arg-id ...) body-expression ...+)
value
error : procedure?
value
add1 : procedure?
value
sub1 : procedure?
value
zero? : procedure?
value
+ : procedure?
value
- : procedure?
value
* : procedure?
value
/ : procedure?
value
even? : procedure?
value
odd? : procedure?
value
= : procedure?
value
< : procedure?
value
> : procedure?
value
<= : procedure?
value
>= : procedure?
value
symbol? : procedure?
value
symbol=? : procedure?
value
number? : procedure?
value
boolean? : procedure?
value
empty? : procedure?
value
eq? : procedure?
procedure
(cons hd tl) -> cons?
  hd : any/c
  tl : any/c
procedure
(cons? v) -> boolean?
  v : any/c
procedure
(first c) -> any/c
  c : cons?
procedure
(rest c) -> any/c
  c : cons?
procedure
(set-first! c v) -> void?
  c : cons?
  v : any/c
procedure
(set-rest! c v) -> void?
  c : cons?
  v : any/c
syntax
empty
value
print-only-errors : procedure?
value
halt-on-errors : procedure?
syntax
(import-primitives id ...)
syntax
(test/location=? mutator-expr1 mutator-expr2)
syntax
(test/value=? mutator-expr scheme-datum/quoted)
syntax
(printf format mutator-expr ...)
 
format = literal-string
procedure
(heap-size) -> exact-nonnegative-integer?
procedure
(location? v) -> boolean?
  v : any/c
procedure
(root? v) -> boolean?
  v : any/c
procedure
(heap-value? v) -> boolean?
  v : any/c
procedure
(heap-set! loc val) -> void?
  loc : location?
  val : heap-value?
procedure
(heap-ref loc) -> heap-value?
  loc : location?
syntax
(get-root-set)
procedure
(read-root root) -> location?
  root : root?
procedure
(set-root! root loc) -> void?
  root : root?
  loc : location?
procedure
(simple-root l) -> root?
  l : location?
procedure
(make-root name get set) -> root?
  name : symbol?
  get : (-> location?)
  set : (-> location? void?)
syntax
(with-heap heap-expr body-expr ...)
 
  heap-expr : (vectorof heap-value?)
value
current-heap : (parameter/c (vectorof heap-value?))
syntax
(with-roots (root-var ...) expr1 expr2 ...)
 
  root-var : location?
procedure
(init-allocator) -> void?
procedure
(gc:deref loc) -> heap-value?
  loc : location?
procedure
(gc:alloc-flat val) -> location?
  val : heap-value?
procedure
(gc:cons first rest) -> location?
  first : root?
  rest : root?
procedure
(gc:first cons-cell) -> location?
  cons-cell : location?
procedure
(gc:rest cons-cell) -> location?
  cons-cell : location?
procedure
(gc:set-first! cons-cell first-value) -> void?
  cons-cell : location?
  first-value : location?
procedure
(gc:set-rest! cons-cell rest-value) -> void?
  cons-cell : location?
  rest-value : location?
procedure
(gc:cons? loc) -> boolean?
  loc : location?
procedure
(gc:flat? loc) -> boolean?
  loc : location?
procedure
(gc:closure code-ptr free-vars) -> location?
  code-ptr : heap-value?
  free-vars : (listof root?)
procedure
(gc:closure-code-ptr loc) -> heap-value?
  loc : location?
procedure
(gc:closure-env-ref loc i) -> location?
  loc : location?
  i : exact-nonnegative-integer?
procedure
(gc:closure? loc) -> boolean?
  loc : location?
syntax
(allocator-setup collector-module
                 heap-size)
 
heap-size = exact-nonnegative-integer
syntax
if
syntax
and
syntax
or
syntax
cond
syntax
case
syntax
define-values
syntax
let
syntax
let-values
syntax
let*
syntax
set!
syntax
quote
syntax
begin
syntax
(define (id arg-id ...) body-expression ...+)
syntax
(lambda (arg-id ...) body-expression ...+)
syntax
(λ (arg-id ...) body-expression ...+)
value
error : procedure?
value
add1 : procedure?
value
sub1 : procedure?
value
zero? : procedure?
value
+ : procedure?
value
- : procedure?
value
* : procedure?
value
/ : procedure?
value
even? : procedure?
value
odd? : procedure?
value
= : procedure?
value
< : procedure?
value
> : procedure?
value
<= : procedure?
value
>= : procedure?
value
symbol? : procedure?
value
symbol=? : procedure?
value
number? : procedure?
value
boolean? : procedure?
value
empty? : procedure?
value
eq? : procedure?
procedure
(cons hd tl) -> cons?
  hd : any/c
  tl : any/c
procedure
(cons? v) -> boolean?
  v : any/c
procedure
(first c) -> any/c
  c : cons?
procedure
(rest c) -> any/c
  c : cons?
procedure
(set-first! c v) -> void
  c : cons?
  v : any/c
procedure
(set-rest! c v) -> void
  c : cons?
  v : any/c
syntax
empty
syntax
print-only-errors
syntax
halt-on-errors
syntax
(import-primitives id ...)
syntax
(test/location=? mutator-expr1 mutator-expr2)
syntax
(test/value=? mutator-expr datum/quoted)
syntax
(printf format mutator-expr ...)
 
format = literal-string
procedure
(save-random-mutator  file                            
                      collector-name                  
                     [#:heap-values heap-values       
                      #:iterations iterations         
                      #:program-size program-size     
                      #:heap-size heap-size           
                      #:gc2? gc2?])               -> void?
  file : path-string?
  collector-name : string?
  heap-values : (cons heap-value? (listof heap-value?))
              = (list 0 1 -1 'x 'y #f #t '())
  iterations : exact-positive-integer? = 200
  program-size : exact-positive-integer? = 10
  heap-size : exact-positive-integer? = 100
  gc2? : boolean? = #f
procedure
(find-heap-values input) -> (listof heap-value?)
  input : (or/c path-string? input-port?)
procedure
(start initial-request) -> response?
  initial-request : request?
