14669
((3) 0 () 11 ((q lib "redex/reduction-semantics.rkt") (q lib "redex/pict.rkt") (q lib "redex/gui.rkt") (q 15867 . 5) (q 38911 . 20) (q lib "redex/benchmark.rkt") (q 10238 . 6) (q 41083 . 5) (q 1582 . 5) (q 41583 . 3) (q 15732 . 5)) () (h ! (equal) ((c def c (c (? . 1) q render-reduction-relation-rules)) q (29988 . 11)) ((c def c (c (? . 0) q struct:exn:fail:redex:test)) c (? . 3)) ((q def ((lib "redex/benchmark/models/all-info.rkt") all-mods)) q (41989 . 3)) ((c def c (c (? . 2) q term-node-y)) q (25014 . 3)) ((c form c (c (? . 0) q fresh)) q (7161 . 2)) ((c def c (c (? . 1) q current-render-pict-adjust)) q (38239 . 4)) ((c def c (c (? . 2) q term-node-set-position!)) q (24802 . 5)) ((c form c (c (? . 0) q extend-reduction-relation)) q (5663 . 2)) ((c def c (c (? . 5) q benchmark-logging-to)) q (41640 . 4)) ((c form c (c (? . 0) q test-->>E)) q (12022 . 2)) ((c def c (c (? . 0) q make-exn:fail:redex:test)) c (? . 3)) ((c def c (c (? . 0) q derivation?)) c (? . 6)) ((c form c (c (? . 1) q with-unquote-rewriter)) q (38410 . 2)) ((c def c (c (? . 0) q compiled-lang?)) q (3966 . 3)) ((c def c (c (? . 1) q metafunction-gap-space)) q (37017 . 4)) ((c def c (c (? . 1) q linebreaks)) q (33009 . 4)) ((c def c (c (? . 1) q make-lw)) c (? . 4)) ((c def c (c (? . 1) q non-terminal-style)) q (34611 . 4)) ((c def c (c (? . 0) q check-redundancy)) q (1874 . 4)) ((c def c (c (? . 0) q match?)) q (1458 . 3)) ((c def c (c (? . 0) q depth-dependent-order?)) q (15340 . 5)) ((c form c (c (? . 0) q define-relation)) q (10439 . 10)) ((c def c (c (? . 1) q arrow-space)) q (31459 . 4)) ((c def c (c (? . 1) q lw->pict)) q (40070 . 4)) ((c def c (c (? . 0) q apply-reduction-relation)) q (6132 . 4)) ((c def c (c (? . 2) q term-node-x)) q (24953 . 3)) ((c form c (c (? . 1) q with-compound-rewriter)) q (38632 . 4)) ((c def c (c (? . 0) q set-cache-size!)) q (1798 . 3)) ((c form c (c (? . 0) q term-match)) q (2441 . 2)) ((c def c (c (? . 2) q derivation/ps)) q (23532 . 13)) ((c def c (c (? . 0) q coverage?)) q (12385 . 3)) ((c def c (c (? . 1) q extend-language-show-union)) q (29714 . 4)) ((c def c (c (? . 0) q reduction-relation->rule-names)) q (5840 . 3)) ((c def c (c (? . 1) q rule-pict-info?)) q (30656 . 3)) ((c def c (c (? . 1) q metafunction-style)) q (34496 . 4)) ((c def c (c (? . 1) q set-lw-unq?!)) c (? . 4)) ((c def c (c (? . 2) q term-node-children)) q (24146 . 3)) ((c def c (c (? . 1) q paren-style)) q (34290 . 4)) ((c form c (c (? . 5) q define-rewrite/compose)) q (40562 . 2)) ((c def c (c (? . 2) q dark-brush-color)) q (25798 . 4)) ((c def c (c (? . 2) q pretty-print-parameters)) q (26591 . 4)) ((c form c (c (? . 1) q with-compound-rewriters)) q (38789 . 3)) ((c def c (c (? . 0) q default-language)) q (4026 . 4)) ((c def c (c (? . 1) q term->pict/pretty-write)) q (27324 . 9)) ((c form c (c (? . 0) q test-->)) q (11488 . 9)) ((c def c (c (? . 1) q rule-pict-info-label)) q (31012 . 3)) ((c form c (c (? . 0) q compatible-closure)) q (5939 . 2)) ((c def c (c (? . 2) q term-node-labels)) q (24311 . 3)) ((c def c (c (? . 2) q term-node-parents)) q (24229 . 3)) ((c form c (c (? . 1) q metafunction->pict)) q (29035 . 2)) ((c def c (c (? . 2) q show-derivations)) q (22950 . 11)) ((c form c (c (? . 5) q define-rewrite)) q (40407 . 6)) ((c def c (c (? . 1) q reduction-relation-rule-extra-separation)) q (35822 . 5)) ((c def c (c (? . 0) q derivation-term)) c (? . 6)) ((c def c (c (? . 2) q term-node-height)) q (25140 . 3)) ((c def c (c (? . 0) q variable-not-in)) q (2658 . 4)) ((c form c (c (? . 1) q to-lw)) q (39865 . 2)) ((c def c (c (? . 0) q relation-coverage)) q (12440 . 4)) ((c def c (c (? . 1) q set-lw-column-span!)) c (? . 4)) ((c def c (c (? . 1) q default-style)) q (35000 . 4)) ((c def c (c (? . 2) q traces/ps)) q (19929 . 45)) ((c def c (c (? . 1) q relation-clauses-combine)) q (37717 . 5)) ((c def c (c (? . 5) q bmark-log-data)) c (? . 9)) ((c form c (c (? . 0) q redex-match?)) q (1386 . 3)) ((c form c (c (? . 0) q define-extended-judgment-form)) q (9952 . 6)) ((c def c (c (? . 1) q metafunction-cases)) q (33146 . 9)) ((c def c (c (? . 2) q traces)) q (17555 . 45)) ((c form c (c (? . 1) q render-judgment-form)) q (29242 . 2)) ((c def c (c (? . 2) q term-node-color)) q (24541 . 3)) ((c def c (c (? . 1) q lw-metafunction?)) c (? . 4)) ((c def c (c (? . 1) q reduction-relation-rule-line-separation)) q (35994 . 5)) ((c def c (c (? . 1) q non-terminal-superscript-style)) q (34861 . 4)) ((c form c (c (? . 0) q test-judgment-holds)) q (12039 . 2)) ((c def c (c (? . 5) q struct:run-results)) c (? . 7)) ((c def c (c (? . 0) q caching-enabled?)) q (1699 . 4)) ((c form c (c (? . 0) q term)) q (1979 . 3)) ((c def c (c (? . 0) q default-equiv)) q (12167 . 4)) ((c def c (c (? . 5) q run-results)) c (? . 7)) ((c def c (c (? . 1) q non-terminal-subscript-style)) q (34726 . 4)) ((c def c (c (? . 1) q reduction-relation->pict)) q (28416 . 4)) ((c def c (c (? . 1) q rule-pict-info->side-condition-pict)) q (31246 . 5)) ((c def c (c (? . 2) q term-node?)) q (25206 . 3)) ((c def c (c (? . 1) q rule-pict-info-computed-label)) q (31125 . 4)) ((c def c (c (? . 1) q reduction-rule-style/c)) q (30613 . 2)) ((c def c (c (? . 2) q term-node-set-red!)) q (24644 . 4)) ((c def c (c (? . 0) q test-results)) q (12131 . 2)) ((c def c (c (? . 0) q derivation)) c (? . 6)) ((c def c (c (? . 1) q lw-line)) c (? . 4)) ((c def c (c (? . 1) q metafunction-up/down-indent)) q (32413 . 4)) ((c form c (c (? . 0) q -->)) q (7150 . 2)) ((c form c (c (? . 0) q define-extended-language)) q (3330 . 11)) ((c form c (c (? . 0) q build-derivations)) q (10201 . 2)) ((c def c (c (? . 2) q stepper)) q (22354 . 7)) ((c def c (c (? . 0) q struct:derivation)) c (? . 6)) ((c def c (c (? . 0) q bind)) c (? . 8)) ((c def c (c (? . 0) q redex-pseudo-random-generator)) q (17306 . 4)) ((c def c (c (? . 1) q set-lw-metafunction?!)) c (? . 4)) ((c def c (c (? . 1) q struct:lw)) c (? . 4)) ((c def c (c (? . 0) q struct:bind)) c (? . 8)) ((c def c (c (? . 0) q IO-judgment-form?)) q (10793 . 3)) ((c form c (c (? . 0) q shadow)) q (11059 . 2)) ((c form c (c (? . 1) q render-metafunction)) q (28574 . 2)) ((c def c (c (? . 0) q make-bind)) c (? . 8)) ((c def c (c (? . 1) q default-font-size)) q (35500 . 4)) ((c def c (c (? . 2) q default-pretty-printer)) q (26732 . 6)) ((c form c (c (? . 0) q define-language)) q (2918 . 11)) ((c def c (c (? . 1) q rule-pict-info-rhs)) q (30915 . 3)) ((c def c (c (? . 0) q derivation-subs)) c (? . 6)) ((c def c (c (? . 0) q exn:fail:redex:generation-failure?)) q (17475 . 3)) ((c def c (c (? . 1) q white-square-bracket)) q (32667 . 4)) ((c def c (c (? . 1) q metafunction-line-gap-space)) q (37261 . 4)) ((c form c (c (? . 0) q test-->>)) q (11217 . 11)) ((c form c (c (? . 0) q test-->>∃)) q (11713 . 10)) ((c form c (c (? . 0) q make-coverage)) q (12298 . 5)) ((c form c (c (? . 1) q render-metafunctions)) q (28712 . 10)) ((c def c (c (? . 2) q dark-text-color)) q (26275 . 4)) ((c form c (c (? . 0) q define-term)) q (2402 . 2)) ((c def c (c (? . 5) q bmark-log-data-data)) c (? . 9)) ((c def c (c (? . 1) q set-arrow-pict!)) q (36506 . 4)) ((c def c (c (? . 1) q set-lw-line-span!)) c (? . 4)) ((c def c (c (? . 5) q run-gen-and-check/mods)) q (41222 . 9)) ((c def c (c (? . 0) q alpha-equivalent?)) q (4173 . 5)) ((c def c (c (? . 2) q term-node-expr)) q (24740 . 3)) ((c def c (c (? . 0) q counterexample-term)) c (? . 10)) ((c def c (c (? . 1) q metafunction-font-size)) q (35264 . 6)) ((c def c (c (? . 1) q render-lw)) q (39941 . 4)) ((c form c (c (? . 0) q I)) q (10421 . 2)) ((c form c (c (? . 0) q test-equal)) q (11088 . 7)) ((c form c (c (? . 1) q relation->pict)) q (29352 . 2)) ((c def c (c (? . 0) q bind?)) c (? . 8)) ((c def c (c (? . 0) q apply-reduction-relation/tag-with-names)) q (6269 . 6)) ((c form c (c (? . 1) q with-atomic-rewriter)) q (38459 . 4)) ((c def c (c (? . 0) q language-nts)) q (3884 . 3)) ((c def c (c (? . 1) q current-text)) q (36279 . 4)) ((c def c (c (? . 5) q run-results?)) c (? . 7)) ((c def c (c (? . 5) q struct:bmark-log-data)) c (? . 9)) ((c def c (c (? . 0) q exn:fail:redex:test)) c (? . 3)) ((c def c (c (? . 0) q counterexample?)) c (? . 10)) ((c form c (c (? . 0) q substitute)) q (4297 . 2)) ((c def c (c (? . 0) q current-traced-metafunctions)) q (10856 . 4)) ((c form c (c (? . 0) q test-predicate)) q (12100 . 2)) ((c def c (c (? . 0) q bind-exp)) c (? . 8)) ((c def c (c (? . 1) q label-font-size)) q (35105 . 4)) ((c def c (c (? . 5) q run-results-tries)) c (? . 7)) ((c def c (c (? . 1) q language->pict)) q (27906 . 5)) ((c def c (c (? . 1) q render-language)) q (27646 . 6)) ((c def c (c (? . 1) q lw)) c (? . 4)) ((c def c (c (? . 1) q set-lw-column!)) c (? . 4)) ((c def c (c (? . 1) q rule-pict-style)) q (30484 . 4)) ((c def c (c (? . 1) q render-language-nts)) q (29440 . 4)) ((c def c (c (? . 2) q reduction-steps-cutoff)) q (25262 . 4)) ((c def c (c (? . 1) q lw-line-span)) c (? . 4)) ((c def c (c (? . 1) q metafunction-fill-acceptable-width)) q (37388 . 4)) ((c def c (c (? . 1) q extend-language-show-extended-order)) q (29837 . 4)) ((c def c (c (? . 0) q exn:fail:redex:test-term)) c (? . 3)) ((c def c (c (? . 1) q just-before)) q (40198 . 4)) ((c def c (c (? . 2) q initial-font-size)) q (25377 . 4)) ((c def c (c (? . 5) q bmark-log-directory)) q (41752 . 6)) ((c def c (c (? . 1) q metafunction-rule-gap-space)) q (37134 . 4)) ((c def c (c (? . 0) q plug)) q (2564 . 4)) ((c form c (c (? . 0) q term-let)) q (2056 . 8)) ((c def c (c (? . 5) q run-results-cexps)) c (? . 7)) ((c def c (c (? . 1) q build-lw)) q (39496 . 10)) ((c def c (c (? . 0) q match-bindings)) q (1514 . 3)) ((c form c (c (? . 0) q judgment-holds)) q (10084 . 5)) ((c form c (c (? . 0) q context-closure)) q (6007 . 2)) ((c form c (c (? . 0) q with)) q (7174 . 2)) ((c def c (c (? . 0) q default-check-attempts)) q (17169 . 4)) ((c form c (c (? . 0) q in-hole)) q (2041 . 2)) ((c def c (c (? . 1) q arrow->pict)) q (36442 . 3)) ((c form c (c (? . 0) q reduction-relation)) q (4346 . 36)) ((c def c (c (? . 2) q initial-char-width)) q (25478 . 4)) ((c def c (c (? . 1) q grammar-style)) q (34185 . 4)) ((c def c (c (? . 1) q curly-quotes-for-strings)) q (36164 . 4)) ((c def c (c (? . 0) q union-reduction-relations)) q (5739 . 3)) ((c def c (c (? . 0) q covered-cases)) q (12571 . 3)) ((c def c (c (? . 1) q rule-pict-info-arrow)) q (30717 . 3)) ((c def c (c (? . 0) q apply-reduction-relation*)) q (6500 . 12)) ((c def c (c (? . 2) q stepper/seed)) q (22633 . 7)) ((c form c (c (? . 0) q ::=)) q (3319 . 2)) ((c def c (c (? . 1) q lw-column-span)) c (? . 4)) ((c def c (c (? . 1) q lw-e)) c (? . 4)) ((c def c (c (? . 0) q make-counterexample)) c (? . 10)) ((c def c (c (? . 1) q metafunction-pict-style)) q (31677 . 17)) ((c form c (c (? . 0) q redex-generator)) q (15522 . 7)) ((c def c (c (? . 5) q bmark-log-data?)) c (? . 9)) ((c def c (c (? . 1) q to-lw/stx)) q (39885 . 3)) ((c def c (c (? . 1) q metafunction-combine-contract-and-rules)) q (37521 . 5)) ((c def c (c (? . 1) q lw-column)) c (? . 4)) ((c form c (c (? . 0) q redex-let)) q (2259 . 2)) ((c form c (c (? . 0) q term-match/single)) q (2499 . 2)) ((c form c (c (? . 0) q redex-match)) q (1310 . 3)) ((c def c (c (? . 2) q light-pen-color)) q (25957 . 4)) ((c def c (c (? . 1) q set-lw-line!)) c (? . 4)) ((c form c (c (? . 0) q redex-check)) q (14258 . 29)) ((c form c (c (? . 0) q define-metafunction)) q (7186 . 30)) ((c def c (c (? . 1) q set-lw-e!)) c (? . 4)) ((c def c (c (? . 0) q reduction-relation?)) q (6067 . 3)) ((c form c (c (? . 0) q define-metafunction/extension)) q (8353 . 5)) ((c def c (c (? . 1) q label-style)) q (34084 . 4)) ((c def c (c (? . 1) q literal-style)) q (34391 . 4)) ((c form c (c (? . 1) q term->pict)) q (26978 . 2)) ((c form c (c (? . 0) q check-metafunction)) q (16547 . 15)) ((c form c (c (? . 1) q render-relation)) q (29152 . 2)) ((c form c (c (? . 0) q define-judgment-form)) q (8547 . 49)) ((c def c (c (? . 2) q term-node-width)) q (25075 . 3)) ((c def c (c (? . 0) q exn:fail:redex?)) q (2857 . 3)) ((c def c (c (? . 1) q where-make-prefix-pict)) q (37911 . 4)) ((c def c (c (? . 1) q lw-unq?)) c (? . 4)) ((c def c (c (? . 0) q current-cache-all?)) q (7033 . 4)) ((c def c (c (? . 1) q rule-pict-info-lhs)) q (30818 . 3)) ((c form c (c (? . 0) q redex-let*)) q (2330 . 2)) ((c def c (c (? . 0) q bind-name)) c (? . 8)) ((c def c (c (? . 0) q exn:fail:redex:test?)) c (? . 3)) ((c def c (c (? . 5) q run-gen-and-check)) q (40666 . 11)) ((c def c (c (? . 5) q run-results-time)) c (? . 7)) ((c def c (c (? . 1) q white-bracket-sizing)) q (36605 . 5)) ((c def c (c (? . 0) q exn:fail:redex:test-source)) c (? . 3)) ((c def c (c (? . 0) q default-attempt-size)) q (17084 . 3)) ((c form c (c (? . 0) q nothing)) q (11073 . 2)) ((c form c (c (? . 0) q define-union-language)) q (3755 . 5)) ((c form c (c (? . 0) q generate-term)) q (12671 . 35)) ((c def c (c (? . 0) q derivation-name)) c (? . 6)) ((c def c (c (? . 0) q judgment-form?)) q (10733 . 3)) ((c def c (c (? . 1) q render-reduction-relation)) q (28090 . 8)) ((c form c (c (? . 1) q judgment-form->pict)) q (29391 . 2)) ((c def c (c (? . 2) q light-text-color)) q (26432 . 4)) ((c def c (c (? . 0) q counterexample)) c (? . 10)) ((c def c (c (? . 1) q non-terminal-gap-space)) q (29597 . 4)) ((c def c (c (? . 0) q variables-not-in)) q (2749 . 4)) ((c def c (c (? . 1) q delimit-ellipsis-arguments?)) q (32542 . 4)) ((c form c (c (? . 0) q hole)) q (2029 . 2)) ((c def c (c (? . 2) q dark-pen-color)) q (25643 . 4)) ((c form c (c (? . 1) q render-term)) q (26913 . 3)) ((c def c (c (? . 0) q make-derivation)) c (? . 6)) ((c def c (c (? . 2) q term-node-set-color!)) q (24406 . 4)) ((c def c (c (? . 1) q reduction-relation-rule-separation)) q (35663 . 4)) ((c form c (c (? . 5) q include/rewrite)) q (40610 . 2)) ((c form c (c (? . 0) q in-domain?)) q (8495 . 2)) ((c form c (c (? . 0) q O)) q (10430 . 2)) ((c def c (c (? . 1) q just-after)) q (40303 . 4)) ((c def c (c (? . 1) q horizontal-bar-spacing)) q (36835 . 5)) ((c def c (c (? . 0) q struct:counterexample)) c (? . 10)) ((c def c (c (? . 1) q default-white-square-bracket)) q (32927 . 3)) ((c def c (c (? . 1) q render-term/pretty-write)) q (27010 . 9)) ((c def c (c (? . 1) q label-space)) q (31568 . 4)) ((c def c (c (? . 1) q homemade-white-square-bracket)) q (32844 . 3)) ((c form c (c (? . 0) q check-reduction-relation)) q (16038 . 15)) ((c form c (c (? . 1) q metafunctions->pict)) q (29099 . 2)) ((c def c (c (? . 1) q lw?)) c (? . 4)) ((c def c (c (? . 1) q judgment-form-cases)) q (33608 . 11)) ((c def c (c (? . 2) q light-brush-color)) q (26114 . 4)) ((c def c (c (? . 1) q where-combine)) q (38074 . 4))))

Goals
— abstract syntax
— notions of reduction, substitution
— reductions and calculations
— semantics
— standard reduction
— abstract register machines
— types

Goals
— Redex versus Racket
— define languages
— develop metafunctions, includes basic testing, submodules
— extend languages
— generalizing with any

Goals
— developing meta-functions
— discovering Redex patterns

Goals
— extend languages with concepts needed for reduction relations
— developing reduction relations
— defining a semantics
— testing against a language

Goals
— developing reductions
— semantics

Goals
— typed languages
— developing type judgments
— subject reduction

Goals
— subject reduction testing with trace
— typing judgments

Goals
— revise the language for assignment statements
— a standard reduction system for expression-store tuples
— revise the language for raising exceptions
— a general reduction system for exceptions

Goals
— develop a general reduction system for Lambda with assignments
— develop a standard reduction system for Lambda with exceptions

Goals
— why these three machines: CC machine, CK machine, CEK machine
— theorems connecting the machines, theorems for debugging
— equivalence theorems

Goals
— develop the CESK machine
syntax
(redex-match lang pattern term-expr)
(redex-match lang pattern)
syntax
(redex-match? lang pattern any)
(redex-match? lang pattern)
procedure
(match? val) -> boolean?
  val : any/c
procedure
(match-bindings m) -> (listof bind?)
  m : match?
struct
(struct bind (name exp)
    #:extra-constructor-name make-bind)
  name : symbol?
  exp : any/c
parameter
(caching-enabled?) -> boolean?
(caching-enabled? on?) -> void?
  on? : boolean?
procedure
(set-cache-size! size) -> void?
  size : positive-integer?
parameter
(check-redundancy) -> boolean?
(check-redundancy check?) -> void?
  check? : boolean?
syntax
(term term)
(term term #:lang lang-id)
syntax
hole
syntax
in-hole
syntax
(term-let ([tl-pat expr] ...) body)
 
    tl-pat = identifier
           | (tl-pat-ele ...)
              
tl-pat-ele = tl-pat
           | tl-pat ... ; a literal ellipsis
syntax
(redex-let language ([pattern expression] ...) body ...+)
syntax
(redex-let* language ([pattern expression] ...) body ...+)
syntax
(define-term identifier term)
syntax
(term-match language [pattern expression] ...)
syntax
(term-match/single language [pattern expression] ...)
procedure
(plug context expression) -> any
  context : any/c
  expression : any/c
procedure
(variable-not-in t prefix) -> symbol?
  t : any/c
  prefix : symbol?
procedure
(variables-not-in t vars) -> (listof symbol?)
  t : any/c
  vars : (listof symbol?)
procedure
(exn:fail:redex? v) -> boolean?
  v : any/c
syntax
(define-language lang-name
  non-terminal-def ...
  maybe-binding-spec)
 
  non-terminal-def = (non-terminal-name ...+ ::= pattern ...+)
                   | (non-terminal-name pattern ...+)
                   | ((non-terminal-name ...+) pattern ...+)
                      
maybe-binding-spec = 
                   | #:binding-forms binding-declaration ...
syntax
::=
syntax
(define-extended-language extended-lang base-lang
  non-terminal-def ...
  maybe-binding-spec)
 
  non-terminal-def = (non-terminal-name ...+ ::= pattern ...+)
                   | (non-terminal-name pattern ...+)
                   | ((non-terminal-name ...+) pattern ...+)
                      
maybe-binding-spec = 
                   | #:binding-forms binding-declaration ...
syntax
(define-union-language L base/prefix-lang ...)
 
base/prefix-lang = lang-id
                 | (prefix lang-id)
procedure
(language-nts lang) -> (listof symbol?)
  lang : compiled-lang?
procedure
(compiled-lang? l) -> boolean?
  l : any/c
parameter
(default-language) -> (or/c false/c compiled-lang?)
(default-language lang) -> void?
  lang : (or/c false/c compiled-lang?)
procedure
(alpha-equivalent? lang lhs rhs) -> boolean?
  lang : compiled-lang?
  lhs : any/c
  rhs : any/c
metafunction
(substitute val old-var new-val)
syntax
(reduction-relation language domain base-arrow
                    reduction-case ...
                    shortcuts)
 
        domain = 
               | #:domain pattern
                  
    base-arrow = 
               | #:arrow base-arrow-name
                  
reduction-case = (arrow-name pattern term red-extras ...)
                  
    red-extras = rule-name
               | (fresh fresh-clause ...)
               | (side-condition racket-expression)
               | (where pattern term)
               | (judgment-holds (judgment-form-id pat/term ...))
               | (side-condition/hidden racket-expression)
               | (where/hidden pattern term)
                  
     shortcuts = 
               | with shortcut ...
                  
      shortcut = [(old-arrow-name pattern term)
                  (new-arrow-name identifier identifier)]
                  
     rule-name = identifier
               | string
               | (computed-name racket-expression)
                  
  fresh-clause = var
               | ((var1 ...) (var2 ...))
                  
      pat/term = pattern
               | term
syntax
(extend-reduction-relation reduction-relation language more ...)
procedure
(union-reduction-relations r ...) -> reduction-relation?
  r : reduction-relation?
procedure
(reduction-relation->rule-names r) -> (listof symbol?)
  r : reduction-relation?
syntax
(compatible-closure reduction-relation lang non-terminal)
syntax
(context-closure reduction-relation lang pattern)
procedure
(reduction-relation? v) -> boolean?
  v : any/c
procedure
(apply-reduction-relation r t) -> (listof any/c)
  r : (or/c reduction-relation? IO-judgment-form?)
  t : any/c
procedure
(apply-reduction-relation/tag-with-names r  
                                         t) 
 -> (listof (list/c (or/c #f string?) any/c))
  r : (or/c reduction-relation? IO-judgment-form?)
  t : any/c
procedure
(apply-reduction-relation*  r                       
                            t                       
                           [#:all? all              
                            #:cache-all? cache-all? 
                            #:stop-when stop-when]) 
 -> (listof any/c)
  r : (or/c reduction-relation? IO-judgment-form?)
  t : any/c
  all : boolean? = #f
  cache-all? : boolean? = (or all? (current-cache-all?))
  stop-when : (-> any/c any) = (λ (x) #f)
parameter
(current-cache-all?) -> boolean?
(current-cache-all? cache-all?) -> void?
  cache-all? : boolean?
syntax
-->
syntax
fresh
syntax
with
syntax
(define-metafunction language
  metafunction-contract
  [(name pattern ...) term metafunction-extras ...]
  ...)
 
metafunction-contract = 
                      | id : pattern-sequence ... -> range
                        maybe-pre-condition
                        maybe-post-condition
                         
  maybe-pre-condition = #:pre term
                      | 
                         
 maybe-post-condition = #:post term
                      | 
                         
                range = pattern
                      | pattern or range
                      | pattern ∨ range
                      | pattern ∪ range
                         
  metafunction-extras = (side-condition racket-expression)
                      | (side-condition/hidden racket-expression)
                      | (where pat term)
                      | (where/hidden pat term)
                      | (judgment-holds
                         (judgment-form-id pat/term ...))
                      | (clause-name name)
                      | or term
syntax
(define-metafunction/extension f language
  metafunction-contract
  [(g pattern ...) term metafunction-extras ...]
  ...)
syntax
(in-domain? (metafunction-name term ...))
syntax
(define-judgment-form language
  mode-spec
  contract-spec
  invariant-spec
  rule rule ...)
 
     mode-spec = #:mode (form-id pos-use ...)
                  
 contract-spec = 
               | #:contract (form-id pattern-sequence ...)
                  
invariant-spec = #:inv term
               | 
                  
       pos-use = I
               | O
                  
          rule = [premise
                  ...
                  dashes rule-name
                  conclusion]
               | [conclusion
                  premise
                  ...
                  rule-name]
                  
    conclusion = (form-id pat/term ...)
                  
       premise = (judgment-form-id pat/term ...) maybe-ellipsis
               | (where pattern term)
               | (where/hidden pattern term)
               | (side-condition term)
               | (side-condition/hidden term)
                  
     rule-name = 
               | string
               | non-ellipsis-non-hypens-var
                  
      pat/term = pattern
               | term
                  
maybe-ellipsis = 
               | ...
                  
        dashes = ---
               | ----
               | -----
               | etc.
syntax
(define-extended-judgment-form language judgment-form-id
  mode-spec
  contract-spec
  invariant-spec
  rule ...)
syntax
(judgment-holds judgment)
(judgment-holds judgment term)
 
judgment = (judgment-form-id pat/term ...)
syntax
(build-derivations judgment)
struct
(struct derivation (term name subs)
    #:extra-constructor-name make-derivation)
  term : any/c
  name : (or/c string? #f)
  subs : (listof derivation?)
syntax
I
syntax
O
syntax
(define-relation language
  relation-contract
  [(name pattern ...)
   term ...
   metafunction-extras ...] ...)
 
relation-contract = 
                  | form-id ⊂ pattern x ... x pattern
                  | form-id ⊆ pattern × ... × pattern
procedure
(judgment-form? v) -> boolean?
  v : any/c
procedure
(IO-judgment-form? v) -> boolean?
  v : any/c
parameter
(current-traced-metafunctions) -> (or/c 'all (listof symbol?))
(current-traced-metafunctions traced-metafunctions) -> void?
  traced-metafunctions : (or/c 'all (listof symbol?))
syntax
shadow
syntax
nothing
syntax
(test-equal e1 e2 option)
 
option = #:equiv pred-expr
       | 
 
  pred-expr : (-> any/c any/c any/c)
syntax
(test-->> rel-expr option ... e1-expr e2-expr ...)
 
option = #:cycles-ok
       | #:equiv pred-expr
       | #:pred pred-expr
 
  rel-expr : reduction-relation?
  pred-expr : (--> any/c any)
  e1-expr : any/c
  e2-expr : any/c
syntax
(test--> rel-expr option ... e1-expr e2-expr ...)
 
option = #:equiv pred-expr
 
  rel-expr : reduction-relation?
  pred-expr : (--> any/c any/c any/c)
  e1-expr : any/c
  e2-expr : any/c
syntax
(test-->>∃ option ... rel-expr start-expr goal-expr)
 
option = #:steps steps-expr
 
  rel-expr : reduction-relation?
  start-expr : any/c
  goal-expr : (or/c (-> any/c any/c)
                    (not/c procedure?))
  steps-expr : (or/c natural-number/c +inf.0)
syntax
test-->>E
syntax
(test-judgment-holds (judgment-form pat/term ...))
syntax
(test-predicate p? e)
procedure
(test-results) -> void?
parameter
(default-equiv) -> (-> any/c any/c any/c)
(default-equiv equiv) -> void?
  equiv : (-> any/c any/c any/c)
syntax
(make-coverage subject)
 
subject = metafunction
        | relation-expr
procedure
(coverage? v) -> boolean?
  v : any/c
parameter
(relation-coverage) -> (listof coverage?)
(relation-coverage tracked) -> void?
  tracked : (listof coverage?)
procedure
(covered-cases c) -> (listof (cons/c string? natural-number/c))
  c : coverage?
syntax
(generate-term from-pattern)
(generate-term from-judgment-form)
(generate-term from-metafunction)
(generate-term from-reduction-relation)
 
           from-pattern = language pattern size-expr kw-args ...
                        | language pattern
                        | language pattern #:i-th index-expr
                        | language pattern #:i-th
                           
     from-judgment-form = language #:satisfying
                          (judgment-form-id pattern ...)
                        | language #:satisfying
                          (judgment-form-id pattern ...)
                          size-expr
                           
      from-metafunction = language #:satisfying
                          (metafunction-id pattern ...) = pattern
                        | language #:satisfying
                          (metafunction-id pattern ...) = pattern
                          size-expr
                        | #:source metafunction size-expr kw-args
                        | #:source metafunction
                           
from-reduction-relation = #:source reduction-relation-expr
                          size-expr kw-args ...
                        | #:source reduction-relation-expr
                           
                kw-args = #:attempt-num attempts-expr
                        | #:retries retries-expr
 
  size-expr : natural-number/c
  attempt-num-expr : natural-number/c
  retries-expr : natural-number/c
syntax
(redex-check template property-expr kw-arg ...)
 
template = language pattern
         | language pattern #:ad-hoc
         | language pattern #:in-order
         | language pattern #:uniform-at-random p-value
         | language pattern #:enum bound
         | language #:satisfying
           (judgment-form-id pattern ...)
         | language #:satisfying
           (metafunction-id pattern ...) = pattern
            
  kw-arg = #:attempts attempts-expr
         | #:source metafunction
         | #:source relation-expr
         | #:retries retries-expr
         | #:print? print?-expr
         | #:attempt-size attempt-size-expr
         | #:prepare prepare-expr
         | #:keep-going? keep-going?-expr
 
  property-expr : any/c
  attempts-expr : natural-number/c
  relation-expr : reduction-relation?
  retries-expr : natural-number/c
  print?-expr : any/c
  attempt-size-expr : (-> natural-number/c natural-number/c)
  prepare-expr : (-> any/c any/c)
parameter
(depth-dependent-order?) -> (or/c boolean? 'random)
(depth-dependent-order? depth-dependent) -> void?
  depth-dependent : (or/c boolean? 'random)
 = 'random
syntax
(redex-generator language-id satisfying size-expr)
 
satisfying = (judgment-form-id pattern ...)
           | (metafunction-id pattern ...) = pattern
 
  size-expr : natural-number/c
struct
(struct counterexample (term)
    #:extra-constructor-name make-counterexample
    #:transparent)
  term : any/c
struct
(struct exn:fail:redex:test exn:fail:redex (source term)
    #:extra-constructor-name make-exn:fail:redex:test)
  source : exn:fail?
  term : any/c
syntax
(check-reduction-relation relation property kw-args ...)
 
kw-arg = #:attempts attempts-expr
       | #:retries retries-expr
       | #:print? print?-expr
       | #:attempt-size attempt-size-expr
       | #:prepare prepare-expr
 
  property : (-> any/c any/c)
  attempts-expr : natural-number/c
  retries-expr : natural-number/c
  print?-expr : any/c
  attempt-size-expr : (-> natural-number/c natural-number/c)
  prepare-expr : (-> any/c any/c)
syntax
(check-metafunction metafunction property kw-args ...)
 
kw-arg = #:attempts attempts-expr
       | #:retries retries-expr
       | #:print? print?-expr
       | #:attempt-size attempt-size-expr
       | #:prepare prepare-expr
 
  property : (-> (listof any/c) any/c)
  attempts-expr : natural-number/c
  retries-expr : natural-number/c
  print?-expr : any/c
  attempt-size-expr : (-> natural-number/c natural-number/c)
  prepare-expr : (-> (listof any/c) (listof any/c))
procedure
(default-attempt-size n) -> natural-number/c
  n : natural-number/c
parameter
(default-check-attempts) -> natural-number/c
(default-check-attempts attempts) -> void?
  attempts : natural-number/c
parameter
(redex-pseudo-random-generator) -> pseudo-random-generator?
(redex-pseudo-random-generator generator) -> void?
  generator : pseudo-random-generator?
procedure
(exn:fail:redex:generation-failure? v) -> boolean?
  v : any/c
procedure
(traces  reductions                                        
         expr                                              
        [#:multiple? multiple?                             
         #:reduce reduce                                   
         #:pred pred                                       
         #:pp pp                                           
         #:colors colors                                   
         #:racket-colors? racket-colors?                   
         #:scheme-colors? scheme-colors?                   
         #:filter term-filter                              
         #:x-spacing x-spacing                             
         #:y-spacing y-spacing                             
         #:layout layout                                   
         #:edge-labels? edge-labels?                       
         #:edge-label-font edge-label-font                 
         #:graph-pasteboard-mixin graph-pasteboard-mixin]) 
 -> void?
  reductions : (or/c reduction-relation? IO-judgment-form?)
  expr : (or/c any/c (listof any/c))
  multiple? : boolean? = #f
  reduce : (-> reduction-relation? any/c
               (listof (list/c (union false/c string?) any/c)))
         = apply-reduction-relation/tag-with-names
  pred : (or/c (-> sexp any)             = (λ (x) #t)
               (-> sexp term-node? any))
  pp : (or/c (any -> string)
             (any output-port number (is-a?/c text%) -> void))
     = default-pretty-printer
  colors : (listof
            (cons/c string?
                    (and/c (listof (or/c string? (is-a?/c color%)))
                           (λ (x) (<= 0 (length x) 6)))))
         = '()
  racket-colors? : boolean? = #t
  scheme-colors? : boolean? = racket-colors?
  term-filter : (-> any/c (or/c #f string?) any/c)
              = (λ (x y) #t)
  x-spacing : real? = 15
  y-spacing : real? = 15
  layout : (-> (listof term-node?) void?) = void
  edge-labels? : boolean? = #t
  edge-label-font : (or/c #f (is-a?/c font%)) = #f
  graph-pasteboard-mixin : (make-mixin-contract graph-pasteboard<%>)
                         = values
procedure
(traces/ps  reductions                                       
            expr                                             
            file                                             
           [#:multiple? multiple?                            
            #:reduce reduce                                  
            #:pred pred                                      
            #:pp pp                                          
            #:colors colors                                  
            #:filter term-filter                             
            #:layout layout                                  
            #:x-spacing x-spacing                            
            #:y-spacing y-spacing                            
            #:edge-labels? edge-labels?                      
            #:edge-label-font edge-label-font                
            #:graph-pasteboard-mixin graph-pasteboard-mixin] 
            #:post-process post-process)                     
 -> void?
  reductions : (or/c reduction-relation? IO-judgment-form?)
  expr : (or/c any/c (listof any/c))
  file : (or/c path-string? path?)
  multiple? : boolean? = #f
  reduce : (-> reduction-relation? any/c
               (listof (list/c (union false/c string?) any/c)))
         = apply-reduction-relation/tag-with-names
  pred : (or/c (-> sexp any)             = (λ (x) #t)
               (-> sexp term-node? any))
  pp : (or/c (any -> string)
             (any output-port number (is-a?/c text%) -> void))
     = default-pretty-printer
  colors : (listof
            (cons/c string?
                    (and/c (listof (or/c string? (is-a?/c color%)))
                           (λ (x) (<= 0 (length x) 6)))))
         = '()
  term-filter : (-> any/c (or/c #f string?) any/c)
              = (λ (x y) #t)
  layout : (-> (listof term-node?) void?) = void
  x-spacing : number? = 15
  y-spacing : number? = 15
  edge-labels? : boolean? = #t
  edge-label-font : (or/c #f (is-a?/c font%)) = #f
  graph-pasteboard-mixin : (make-mixin-contract graph-pasteboard<%>)
                         = values
  post-process : (-> (is-a?/c graph-pasteboard<%>) any/c)
procedure
(stepper reductions t [pp]) -> void?
  reductions : (or/c reduction-relation? IO-judgment-form?)
  t : any/c
  pp : (or/c (any -> string)
             (any output-port number (is-a?/c text%) -> void))
     = default-pretty-printer
procedure
(stepper/seed reductions seed [pp]) -> void?
  reductions : (or/c reduction-relation? IO-judgment-form?)
  seed : (cons/c any/c (listof any/c))
  pp : (or/c (any -> string)
             (any output-port number (is-a?/c text%) -> void))
     = default-pretty-printer
procedure
(show-derivations  derivations                             
                  [#:pp pp                                 
                   #:racket-colors? racket-colors?         
                   #:init-derivation init-derivation]) -> any
  derivations : (cons/c derivation? (listof derivation?))
  pp : (or/c (any -> string)
             (any output-port number (is-a?/c text%) -> void))
     = default-pretty-printer
  racket-colors? : boolean? = #f
  init-derivation : exact-nonnegative-integer? = 0
procedure
(derivation/ps  derivation                           
                filename                             
               [#:pp pp                              
                #:racket-colors? racket-colors?]     
                #:post-process post-process)     -> void?
  derivation : derivation?
  filename : path-string?
  pp : (or/c (any -> string)
             (any output-port number (is-a?/c text%) -> void))
     = default-pretty-printer
  racket-colors? : boolean? = #f
  post-process : (-> (is-a?/c pasteboard%) any)
procedure
(term-node-children tn) -> (listof term-node?)
  tn : term-node?
procedure
(term-node-parents tn) -> (listof term-node?)
  tn : term-node?
procedure
(term-node-labels tn) -> (listof (or/c false/c string?))
  tn : term-node?
procedure
(term-node-set-color! tn color) -> void?
  tn : term-node?
  color : (or/c string? (is-a?/c color%) false/c)
procedure
(term-node-color tn) -> (or/c string? (is-a?/c color%) false/c)
  tn : term-node?
procedure
(term-node-set-red! tn red?) -> void?
  tn : term-node?
  red? : boolean?
procedure
(term-node-expr tn) -> any
  tn : term-node?
procedure
(term-node-set-position! tn x y) -> void?
  tn : term-node?
  x : (and/c real? positive?)
  y : (and/c real? positive?)
procedure
(term-node-x tn) -> real?
  tn : term-node?
procedure
(term-node-y tn) -> real?
  tn : term-node?
procedure
(term-node-width tn) -> real?
  tn : term-node?
procedure
(term-node-height tn) -> real?
  tn : term-node?
procedure
(term-node? v) -> boolean?
  v : any/c
parameter
(reduction-steps-cutoff) -> number?
(reduction-steps-cutoff cutoff) -> void?
  cutoff : number?
parameter
(initial-font-size) -> number?
(initial-font-size size) -> void?
  size : number?
parameter
(initial-char-width) -> (or/c number? (-> any/c number?))
(initial-char-width width) -> void?
  width : (or/c number? (-> any/c number?))
parameter
(dark-pen-color) -> (or/c string? (is-a?/c color<%>))
(dark-pen-color color) -> void?
  color : (or/c string? (is-a?/c color<%>))
parameter
(dark-brush-color) -> (or/c string? (is-a?/c color<%>))
(dark-brush-color color) -> void?
  color : (or/c string? (is-a?/c color<%>))
parameter
(light-pen-color) -> (or/c string? (is-a?/c color<%>))
(light-pen-color color) -> void?
  color : (or/c string? (is-a?/c color<%>))
parameter
(light-brush-color) -> (or/c string? (is-a?/c color<%>))
(light-brush-color color) -> void?
  color : (or/c string? (is-a?/c color<%>))
parameter
(dark-text-color) -> (or/c string? (is-a?/c color<%>))
(dark-text-color color) -> void?
  color : (or/c string? (is-a?/c color<%>))
parameter
(light-text-color) -> (or/c string? (is-a?/c color<%>))
(light-text-color color) -> void?
  color : (or/c string? (is-a?/c color<%>))
parameter
(pretty-print-parameters) -> (-> (-> any/c) any/c)
(pretty-print-parameters f) -> void?
  f : (-> (-> any/c) any/c)
procedure
(default-pretty-printer v port width text) -> void?
  v : any/c
  port : output-port?
  width : exact-nonnegative-integer?
  text : (is-a?/c text%)
syntax
(render-term lang term)
(render-term lang term file)
syntax
(term->pict lang term)
procedure
(render-term/pretty-write lang               
                          term               
                          filename           
                          #:width width) -> void?
  lang : compiled-lang?
  term : any/c
  filename : path-string?
  width : #f
procedure
(term->pict/pretty-write lang               
                         term               
                         filename           
                         #:width width) -> pict?
  lang : compiled-lang?
  term : any/c
  filename : (or/c path-string? #f)
  width : #f
procedure
(render-language lang [file #:nts nts]) -> (if file void? pict?)
  lang : compiled-lang?
  file : (or/c false/c path-string?) = #f
  nts : (or/c false/c (listof (or/c string? symbol?)))
      = (render-language-nts)
procedure
(language->pict lang [#:nts nts]) -> pict?
  lang : compiled-lang?
  nts : (or/c false/c (listof (or/c string? symbol?)))
      = (render-language-nts)
procedure
(render-reduction-relation  rel             
                           [file            
                            #:style style]) 
 -> (if file void? pict?)
  rel : reduction-relation?
  file : (or/c false/c path-string?) = #f
  style : reduction-rule-style/c = (rule-pict-style)
procedure
(reduction-relation->pict r [#:style style]) -> pict?
  r : reduction-relation?
  style : reduction-rule-style/c = (rule-pict-style)
syntax
(render-metafunction metafunction-name maybe-contract)
syntax
(render-metafunction metafunction-name filename maybe-contract)
syntax
(render-metafunctions metafunction-name ...
                      maybe-filename maybe-contract)
 
 maybe-filename = 
                | #:file filename
                | #:filename filename
                   
maybe-contract? = 
                | #:contract? bool-expr
syntax
(metafunction->pict metafunction-name maybe-contract?)
syntax
(metafunctions->pict metafunction-name ...)
syntax
(render-relation relation-name)
syntax
(render-relation relation-name filename)
syntax
(render-judgment-form judgment-form-name)
syntax
(render-judgment-form judgment-form-name filename)
syntax
(relation->pict relation-name)
syntax
(judgment-form->pict judgment-form-name)
parameter
(render-language-nts) -> (or/c false/c (listof symbol?))
(render-language-nts nts) -> void?
  nts : (or/c false/c (listof symbol?))
parameter
(non-terminal-gap-space) -> real?
(non-terminal-gap-space gap-space) -> void?
  gap-space : real?
parameter
(extend-language-show-union) -> boolean?
(extend-language-show-union show?) -> void?
  show? : boolean?
parameter
(extend-language-show-extended-order) -> boolean?
(extend-language-show-extended-order ext-order?) -> void?
  ext-order? : boolean?
parameter
(render-reduction-relation-rules)
 -> (or/c false/c
          (listof (or/c symbol?
                        string?
                        exact-nonnegative-integer?)))
(render-reduction-relation-rules rules) -> void?
  rules : (or/c false/c
                (listof (or/c symbol?
                              string?
                              exact-nonnegative-integer?)))
parameter
(rule-pict-style) -> reduction-rule-style/c
(rule-pict-style style) -> void?
  style : reduction-rule-style/c
value
reduction-rule-style/c : contract?
procedure
(rule-pict-info? x) -> boolean?
  x : any/c
procedure
(rule-pict-info-arrow rule-pict-info) -> symbol?
  rule-pict-info : rule-pict-info?
procedure
(rule-pict-info-lhs rule-pict-info) -> pict?
  rule-pict-info : rule-pict-info?
procedure
(rule-pict-info-rhs rule-pict-info) -> pict?
  rule-pict-info : rule-pict-info?
procedure
(rule-pict-info-label rule-pict-info) -> (or/c symbol? #f)
  rule-pict-info : rule-pict-info?
procedure
(rule-pict-info-computed-label rule-pict-info)
 -> (or/c pict? #f)
  rule-pict-info : rule-pict-info?
procedure
(rule-pict-info->side-condition-pict  rule-pict-info     
                                     [max-width])    -> pict?
  rule-pict-info : rule-pict-info?
  max-width : real? = +inf.0
parameter
(arrow-space) -> natural-number/c
(arrow-space space) -> void?
  space : natural-number/c
parameter
(label-space) -> natural-number/c
(label-space space) -> void?
  space : natural-number/c
parameter
(metafunction-pict-style)
 -> (or/c 'left-right
          'up-down
          'left-right/vertical-side-conditions
          'up-down/vertical-side-conditions
          'left-right/compact-side-conditions
          'up-down/compact-side-conditions
          'left-right/beside-side-conditions)
(metafunction-pict-style style) -> void?
  style : (or/c 'left-right
                'up-down
                'left-right/vertical-side-conditions
                'up-down/vertical-side-conditions
                'left-right/compact-side-conditions
                'up-down/compact-side-conditions
                'left-right/beside-side-conditions)
parameter
(metafunction-up/down-indent) -> (>=/c 0)
(metafunction-up/down-indent indent) -> void?
  indent : (>=/c 0)
parameter
(delimit-ellipsis-arguments?) -> any/c
(delimit-ellipsis-arguments? delimit?) -> void?
  delimit? : any/c
parameter
(white-square-bracket) -> (-> boolean? pict?)
(white-square-bracket make-white-square-bracket) -> void?
  make-white-square-bracket : (-> boolean? pict?)
procedure
(homemade-white-square-bracket open?) -> pict?
  open? : boolean?
procedure
(default-white-square-bracket open?) -> pict?
  open? : boolean?
parameter
(linebreaks) -> (or/c #f (listof boolean?))
(linebreaks breaks) -> void?
  breaks : (or/c #f (listof boolean?))
parameter
(metafunction-cases)
 -> (or/c #f (and/c (listof (or/c exact-nonnegative-integer?
                                  string?))
                    pair?))
(metafunction-cases cases) -> void?
  cases : (or/c #f (and/c (listof (or/c exact-nonnegative-integer?
                                        string?))
                          pair?))
parameter
(judgment-form-cases)
 -> (or/c #f
          (and/c (listof (or/c exact-nonnegative-integer?
                               string?))
                 pair?))
(judgment-form-cases cases) -> void?
  cases : (or/c #f
                (and/c (listof (or/c exact-nonnegative-integer?
                                     string?))
                       pair?))
parameter
(label-style) -> text-style/c
(label-style style) -> void?
  style : text-style/c
parameter
(grammar-style) -> text-style/c
(grammar-style style) -> void?
  style : text-style/c
parameter
(paren-style) -> text-style/c
(paren-style style) -> void?
  style : text-style/c
parameter
(literal-style) -> text-style/c
(literal-style style) -> void?
  style : text-style/c
parameter
(metafunction-style) -> text-style/c
(metafunction-style style) -> void?
  style : text-style/c
parameter
(non-terminal-style) -> text-style/c
(non-terminal-style style) -> void?
  style : text-style/c
parameter
(non-terminal-subscript-style) -> text-style/c
(non-terminal-subscript-style style) -> void?
  style : text-style/c
parameter
(non-terminal-superscript-style) -> text-style/c
(non-terminal-superscript-style style) -> void?
  style : text-style/c
parameter
(default-style) -> text-style/c
(default-style style) -> void?
  style : text-style/c
parameter
(label-font-size) -> (and/c (between/c 1 255) integer?)
(label-font-size size) -> void?
  size : (and/c (between/c 1 255) integer?)
parameter
(metafunction-font-size) -> (and/c (between/c 1 255)
                                   integer?)
(metafunction-font-size size) -> void?
  size : (and/c (between/c 1 255)
                integer?)
parameter
(default-font-size) -> (and/c (between/c 1 255) integer?)
(default-font-size size) -> void?
  size : (and/c (between/c 1 255) integer?)
parameter
(reduction-relation-rule-separation) -> (parameter/c real?)
(reduction-relation-rule-separation sep) -> void?
  sep : (parameter/c real?)
parameter
(reduction-relation-rule-extra-separation)
 -> (parameter/c real?)
(reduction-relation-rule-extra-separation sep) -> void?
  sep : (parameter/c real?)
parameter
(reduction-relation-rule-line-separation)
 -> (parameter/c real?)
(reduction-relation-rule-line-separation sep) -> void?
  sep : (parameter/c real?)
parameter
(curly-quotes-for-strings) -> boolean?
(curly-quotes-for-strings on?) -> void?
  on? : boolean?
parameter
(current-text) -> (-> string? text-style/c number? pict?)
(current-text proc) -> void?
  proc : (-> string? text-style/c number? pict?)
procedure
(arrow->pict arrow) -> pict?
  arrow : symbol?
procedure
(set-arrow-pict! arrow proc) -> void?
  arrow : symbol?
  proc : (-> pict?)
parameter
(white-bracket-sizing)
 -> (-> string? number? (values number? number? number? number?))
(white-bracket-sizing proc) -> void?
  proc : (-> string? number? (values number? number? number? number?))
parameter
(horizontal-bar-spacing)
 -> (parameter/c exact-nonnegative-integer?)
(horizontal-bar-spacing space) -> void?
  space : (parameter/c exact-nonnegative-integer?)
parameter
(metafunction-gap-space) -> real?
(metafunction-gap-space gap-space) -> void?
  gap-space : real?
parameter
(metafunction-rule-gap-space) -> real?
(metafunction-rule-gap-space gap-space) -> void?
  gap-space : real?
parameter
(metafunction-line-gap-space) -> real?
(metafunction-line-gap-space gap-space) -> void?
  gap-space : real?
parameter
(metafunction-fill-acceptable-width) -> real?
(metafunction-fill-acceptable-width width) -> void?
  width : real?
parameter
(metafunction-combine-contract-and-rules)
 -> (pict? pict? . -> . pict?)
(metafunction-combine-contract-and-rules combine) -> void?
  combine : (pict? pict? . -> . pict?)
parameter
(relation-clauses-combine)
 -> (parameter/c (-> (listof pict?) pict?))
(relation-clauses-combine combine) -> void?
  combine : (parameter/c (-> (listof pict?) pict?))
parameter
(where-make-prefix-pict) -> (parameter/c (-> pict?))
(where-make-prefix-pict make-prefix) -> void?
  make-prefix : (parameter/c (-> pict?))
parameter
(where-combine) -> (parameter/c (-> pict? pict? pict?))
(where-combine combine) -> void?
  combine : (parameter/c (-> pict? pict? pict?))
parameter
(current-render-pict-adjust) -> (pict? symbol? . -> . pict?)
(current-render-pict-adjust adjust) -> void?
  adjust : (pict? symbol? . -> . pict?)
syntax
(with-unquote-rewriter proc expression)
syntax
(with-atomic-rewriter name-symbol
                      string-or-thunk-returning-pict
                      expression)
syntax
(with-compound-rewriter name-symbol
                        proc
                        expression)
syntax
(with-compound-rewriters ([name-symbol proc] ...)
                         expression)
struct
(struct lw (e
            line
            line-span
            column
            column-span
            unq?
            metafunction?)
    #:extra-constructor-name make-lw
    #:mutable)
  e : (or/c string?
            symbol?
            pict?
            (listof (or/c (symbols 'spring) lw?)))
  line : exact-positive-integer?
  line-span : exact-positive-integer?
  column : exact-positive-integer?
  column-span : exact-positive-integer?
  unq? : boolean?
  metafunction? : boolean?
procedure
(build-lw e line line-span column column-span) -> lw?
  e : (or/c string?
            symbol?
            pict?
            (listof (or/c (symbols 'spring) lw?)))
  line : exact-positive-integer?
  line-span : exact-positive-integer?
  column : exact-positive-integer?
  column-span : exact-positive-integer?
syntax
(to-lw arg)
procedure
(to-lw/stx stx) -> lw?
  stx : syntax?
procedure
(render-lw language/nts lw) -> pict?
  language/nts : (or/c (listof symbol?) compiled-lang?)
  lw : lw?
procedure
(lw->pict language/ntw lw) -> pict?
  language/ntw : (or/c (listof symbol?) compiled-lang?)
  lw : lw?
procedure
(just-before stuff lw) -> lw?
  stuff : (or/c pict? string? symbol?)
  lw : lw?
procedure
(just-after stuff lw) -> lw?
  stuff : (or/c pict? string? symbol?)
  lw : lw?
syntax
(define-rewrite id from ==> to
  [#:context (context-id ...)
   #:variables (variable-id ...)
   #:once-only
   #:exactly-once])
syntax
(define-rewrite/compose id rw-id ...)
syntax
(include/rewrite path-spec mod-id rw-id ...)
procedure
(run-gen-and-check  get-gen           
                    check             
                    seconds           
                   [#:name name       
                    #:type type]) -> run-results?
  get-gen : (-> (-> any/c))
  check : (-> any/c boolean?)
  seconds : natural-number/c
  name : string? = "unknown"
  type : symbol? = 'unknown
struct
(struct run-results (tries time cexps))
  tries : natural-number/c
  time : natural-number/c
  cexps : natural-number/c
procedure
(run-gen-and-check/mods  gen-mod-path       
                         check-mod-path     
                         seconds            
                        [#:name name])  -> run-results?
  gen-mod-path : module-path?
  check-mod-path : module-path?
  seconds : natural-number/c
  name : string? = "unknown"
struct
(struct bmark-log-data (data))
  data : any/c
procedure
(benchmark-logging-to filename thunk) -> any/c
  filename : string?
  thunk : (-> any/c)
parameter
(bmark-log-directory)
 -> (or/c path-string? path-for-some-system? 'up 'same)
(bmark-log-directory directory) -> void?
  directory : (or/c path-string? path-for-some-system? 'up 'same)
 = (current-directory)
procedure
(all-mods)
 -> (listof (list/c string? module-path? module-path?))
