13796
#hash(((def ((lib "redex/reduction-semantics.rkt") union-reduction-relations)) . ((3803 . 3))) ((form ((lib "redex/reduction-semantics.rkt") reduction-relation)) . ((2410 . 36))) ((form ((lib "redex/reduction-semantics.rkt") define-language)) . ((1596 . 7))) ((form ((lib "redex/reduction-semantics.rkt") define-metafunction)) . ((5078 . 20))) ((def ((lib "redex/reduction-semantics.rkt") exn:fail:redex?)) . ((1535 . 3))) ((def ((lib "redex/pict.rkt") extend-language-show-union)) . ((22309 . 4))) ((form ((lib "redex/reduction-semantics.rkt") O)) . ((7637 . 2))) ((def ((lib "redex/pict.rkt") set-lw-line!)) . ((28612 . 20))) ((def ((lib "redex/pict.rkt") render-lw)) . ((29802 . 4))) ((def ((lib "redex/gui.rkt") stepper/seed)) . ((16814 . 7))) ((form ((lib "redex/reduction-semantics.rkt") -->)) . ((5042 . 2))) ((def ((lib "redex/pict.rkt") delimit-ellipsis-arguments?)) . ((24059 . 4))) ((def ((lib "redex/pict.rkt") struct:lw)) . ((28612 . 20))) ((form ((lib "redex/reduction-semantics.rkt") test-->>∃)) . ((8667 . 10))) ((form ((lib "redex/pict.rkt") term->pict)) . ((19936 . 2))) ((def ((lib "redex/gui.rkt") term-node-set-red!)) . ((17602 . 4))) ((def ((lib "redex/pict.rkt") just-before)) . ((30059 . 4))) ((def ((lib "redex/reduction-semantics.rkt") relation-coverage)) . ((9202 . 4))) ((def ((lib "redex/reduction-semantics.rkt") bind-name)) . ((266 . 5))) ((def ((lib "redex/pict.rkt") lw?)) . ((28612 . 20))) ((def ((lib "redex/pict.rkt") lw-unq?)) . ((28612 . 20))) ((def ((lib "redex/reduction-semantics.rkt") caching-enabled?)) . ((385 . 4))) ((def ((lib "redex/pict.rkt") default-style)) . ((26179 . 4))) ((def ((lib "redex/gui.rkt") dark-brush-color)) . ((18756 . 4))) ((def ((lib "redex/reduction-semantics.rkt") struct:bind)) . ((266 . 5))) ((def ((lib "redex/pict.rkt") set-lw-e!)) . ((28612 . 20))) ((def ((lib "redex/pict.rkt") lw-column-span)) . ((28612 . 20))) ((form ((lib "redex/pict.rkt") render-judgment-form)) . ((21954 . 2))) ((def ((lib "redex/reduction-semantics.rkt") compiled-lang?)) . ((2350 . 3))) ((def ((lib "redex/reduction-semantics.rkt") reduction-relation->rule-names)) . ((3904 . 3))) ((def ((lib "redex/pict.rkt") build-lw)) . ((29357 . 10))) ((def ((lib "redex/pict.rkt") render-language)) . ((20604 . 6))) ((def ((lib "redex/reduction-semantics.rkt") variables-not-in)) . ((1427 . 4))) ((def ((lib "redex/pict.rkt") current-text)) . ((27179 . 4))) ((def ((lib "redex/pict.rkt") render-language-nts)) . ((22152 . 4))) ((def ((lib "redex/pict.rkt") white-bracket-sizing)) . ((27505 . 5))) ((def ((lib "redex/pict.rkt") set-arrow-pict!)) . ((27406 . 4))) ((def ((lib "redex/pict.rkt") non-terminal-style)) . ((25790 . 4))) ((def ((lib "redex/pict.rkt") set-lw-line-span!)) . ((28612 . 20))) ((form ((lib "redex/reduction-semantics.rkt") check-reduction-relation)) . ((10776 . 15))) ((form ((lib "redex/reduction-semantics.rkt") redex-let*)) . ((1014 . 2))) ((def ((lib "redex/reduction-semantics.rkt") current-cache-all?)) . ((4925 . 4))) ((def ((lib "redex/reduction-semantics.rkt") default-attempt-size)) . ((11822 . 3))) ((form ((lib "redex/reduction-semantics.rkt") in-domain?)) . ((6011 . 2))) ((def ((lib "redex/reduction-semantics.rkt") match-bindings)) . ((198 . 3))) ((def ((lib "redex/pict.rkt") lw-line-span)) . ((28612 . 20))) ((def ((lib "redex/reduction-semantics.rkt") exn:fail:redex:test-source)) . ((10603 . 5))) ((form ((lib "redex/reduction-semantics.rkt") ::=)) . ((1850 . 2))) ((def ((lib "redex/gui.rkt") light-text-color)) . ((19390 . 4))) ((def ((lib "redex/reduction-semantics.rkt") test-results)) . ((9024 . 2))) ((def ((lib "redex/pict.rkt") grammar-style)) . ((25364 . 4))) ((def ((lib "redex/reduction-semantics.rkt") match?)) . ((142 . 3))) ((def ((lib "redex/pict.rkt") metafunction-pict-style)) . ((23323 . 17))) ((def ((lib "redex/pict.rkt") lw-e)) . ((28612 . 20))) ((form ((lib "redex/pict.rkt") judgment-form->pict)) . ((22103 . 2))) ((form ((lib "redex/reduction-semantics.rkt") test-->>E)) . ((8976 . 2))) ((def ((lib "redex/reduction-semantics.rkt") counterexample)) . ((10464 . 5))) ((form ((lib "redex/reduction-semantics.rkt") compatible-closure)) . ((4003 . 2))) ((form ((lib "redex/pict.rkt") metafunctions->pict)) . ((21811 . 2))) ((form ((lib "redex/reduction-semantics.rkt") make-coverage)) . ((9060 . 5))) ((def ((lib "redex/reduction-semantics.rkt") current-traced-metafunctions)) . ((7940 . 4))) ((def ((lib "redex/reduction-semantics.rkt") make-exn:fail:redex:test)) . ((10603 . 5))) ((def ((lib "redex/gui.rkt") initial-font-size)) . ((18335 . 4))) ((form ((lib "redex/reduction-semantics.rkt") extend-reduction-relation)) . ((3727 . 2))) ((def ((lib "redex/pict.rkt") metafunction-font-size)) . ((26443 . 6))) ((def ((lib "redex/gui.rkt") dark-pen-color)) . ((18601 . 4))) ((form ((lib "redex/reduction-semantics.rkt") define-judgment-form)) . ((6063 . 46))) ((def ((lib "redex/reduction-semantics.rkt") reduction-relation?)) . ((4131 . 3))) ((def ((lib "redex/reduction-semantics.rkt") make-bind)) . ((266 . 5))) ((form ((lib "redex/reduction-semantics.rkt") in-hole)) . ((725 . 2))) ((def ((lib "redex/pict.rkt") render-reduction-relation)) . ((21048 . 8))) ((def ((lib "redex/gui.rkt") term-node-set-color!)) . ((17364 . 4))) ((def ((lib "redex/gui.rkt") term-node-x)) . ((17911 . 3))) ((def ((lib "redex/pict.rkt") relation-clauses-combine)) . ((27917 . 5))) ((form ((lib "redex/reduction-semantics.rkt") with)) . ((5066 . 2))) ((def ((lib "redex/reduction-semantics.rkt") counterexample-term)) . ((10464 . 5))) ((def ((lib "redex/pict.rkt") metafunction-cases)) . ((24321 . 9))) ((form ((lib "redex/reduction-semantics.rkt") term-let)) . ((740 . 8))) ((def ((lib "redex/gui.rkt") traces)) . ((12293 . 41))) ((def ((lib "redex/gui.rkt") term-node-color)) . ((17499 . 3))) ((def ((lib "redex/gui.rkt") term-node-height)) . ((18098 . 3))) ((def ((lib "redex/gui.rkt") stepper)) . ((16562 . 7))) ((def ((lib "redex/gui.rkt") term-node?)) . ((18164 . 3))) ((def ((lib "redex/pict.rkt") paren-style)) . ((25469 . 4))) ((def ((lib "redex/pict.rkt") horizontal-bar-spacing)) . ((27735 . 5))) ((def ((lib "redex/reduction-semantics.rkt") check-redudancy)) . ((560 . 4))) ((def ((lib "redex/gui.rkt") term-node-children)) . ((17104 . 3))) ((def ((lib "redex/pict.rkt") just-after)) . ((30164 . 4))) ((def ((lib "redex/pict.rkt") label-space)) . ((23214 . 4))) ((def ((lib "redex/gui.rkt") traces/ps)) . ((14405 . 41))) ((form ((lib "redex/reduction-semantics.rkt") define-extended-language)) . ((1861 . 7))) ((def ((lib "redex/reduction-semantics.rkt") apply-reduction-relation/tag-with-names)) . ((4306 . 6))) ((def ((lib "redex/gui.rkt") reduction-steps-cutoff)) . ((18220 . 4))) ((form ((lib "redex/pict.rkt") with-compound-rewriters)) . ((28490 . 3))) ((def ((lib "redex/pict.rkt") reduction-relation-rule-separation)) . ((26842 . 5))) ((form ((lib "redex/pict.rkt") render-relation)) . ((21864 . 2))) ((def ((lib "redex/gui.rkt") term-node-expr)) . ((17698 . 3))) ((form ((lib "redex/reduction-semantics.rkt") I)) . ((7628 . 2))) ((def ((lib "redex/pict.rkt") lw->pict)) . ((29931 . 4))) ((form ((lib "redex/reduction-semantics.rkt") term)) . ((663 . 3))) ((def ((lib "redex/pict.rkt") reduction-relation->pict)) . ((21374 . 4))) ((def ((lib "redex/pict.rkt") metafunction-style)) . ((25675 . 4))) ((form ((lib "redex/reduction-semantics.rkt") term-match/single)) . ((1183 . 2))) ((def ((lib "redex/gui.rkt") initial-char-width)) . ((18436 . 4))) ((def ((lib "redex/reduction-semantics.rkt") bind)) . ((266 . 5))) ((def ((lib "redex/reduction-semantics.rkt") apply-reduction-relation*)) . ((4516 . 10))) ((form ((lib "redex/reduction-semantics.rkt") test-->>)) . ((8171 . 11))) ((def ((lib "redex/pict.rkt") make-lw)) . ((28612 . 20))) ((form ((lib "redex/reduction-semantics.rkt") judgment-holds)) . ((7511 . 5))) ((form ((lib "redex/reduction-semantics.rkt") test-predicate)) . ((8993 . 2))) ((def ((lib "redex/pict.rkt") reduction-rule-style/c)) . ((23057 . 2))) ((def ((lib "redex/reduction-semantics.rkt") covered-cases)) . ((9333 . 3))) ((form ((lib "redex/pict.rkt") with-atomic-rewriter)) . ((28160 . 4))) ((def ((lib "redex/pict.rkt") non-terminal-superscript-style)) . ((26040 . 4))) ((def ((lib "redex/gui.rkt") pretty-print-parameters)) . ((19549 . 4))) ((form ((lib "redex/pict.rkt") render-term)) . ((19871 . 3))) ((def ((lib "redex/pict.rkt") set-lw-column-span!)) . ((28612 . 20))) ((form ((lib "redex/pict.rkt") to-lw)) . ((29726 . 2))) ((def ((lib "redex/reduction-semantics.rkt") language-nts)) . ((2268 . 3))) ((def ((lib "redex/gui.rkt") light-pen-color)) . ((18915 . 4))) ((def ((lib "redex/reduction-semantics.rkt") exn:fail:redex:generation-failure?)) . ((12213 . 3))) ((def ((lib "redex/pict.rkt") language->pict)) . ((20864 . 5))) ((def ((lib "redex/gui.rkt") term-node-y)) . ((17972 . 3))) ((def ((lib "redex/pict.rkt") set-lw-metafunction?!)) . ((28612 . 20))) ((def ((lib "redex/reduction-semantics.rkt") variable-not-in)) . ((1342 . 4))) ((def ((lib "redex/pict.rkt") render-term/pretty-write)) . ((19968 . 9))) ((def ((lib "redex/pict.rkt") label-style)) . ((25263 . 4))) ((def ((lib "redex/reduction-semantics.rkt") struct:exn:fail:redex:test)) . ((10603 . 5))) ((def ((lib "redex/pict.rkt") lw-line)) . ((28612 . 20))) ((def ((lib "redex/reduction-semantics.rkt") default-check-attempts)) . ((11907 . 4))) ((form ((lib "redex/reduction-semantics.rkt") test-->)) . ((8442 . 9))) ((def ((lib "redex/reduction-semantics.rkt") exn:fail:redex:test)) . ((10603 . 5))) ((form ((lib "redex/pict.rkt") with-unquote-rewriter)) . ((28111 . 2))) ((form ((lib "redex/reduction-semantics.rkt") redex-match)) . ((0 . 3))) ((def ((lib "redex/pict.rkt") set-lw-column!)) . ((28612 . 20))) ((def ((lib "redex/pict.rkt") lw-column)) . ((28612 . 20))) ((form ((lib "redex/pict.rkt") relation->pict)) . ((22064 . 2))) ((def ((lib "redex/pict.rkt") curly-quotes-for-strings)) . ((27064 . 4))) ((def ((lib "redex/pict.rkt") arrow->pict)) . ((27342 . 3))) ((form ((lib "redex/reduction-semantics.rkt") redex-let)) . ((943 . 2))) ((def ((lib "redex/gui.rkt") term-node-parents)) . ((17187 . 3))) ((form ((lib "redex/pict.rkt") render-metafunction)) . ((21532 . 2))) ((def ((lib "redex/gui.rkt") light-brush-color)) . ((19072 . 4))) ((form ((lib "redex/reduction-semantics.rkt") test-equal)) . ((8143 . 2))) ((form ((lib "redex/reduction-semantics.rkt") redex-match?)) . ((70 . 3))) ((def ((lib "redex/pict.rkt") set-lw-unq?!)) . ((28612 . 20))) ((form ((lib "redex/reduction-semantics.rkt") define-relation)) . ((7646 . 10))) ((def ((lib "redex/pict.rkt") linebreaks)) . ((24184 . 4))) ((def ((lib "redex/pict.rkt") label-font-size)) . ((26284 . 4))) ((def ((lib "redex/reduction-semantics.rkt") exn:fail:redex:test-term)) . ((10603 . 5))) ((def ((lib "redex/pict.rkt") lw-metafunction?)) . ((28612 . 20))) ((form ((lib "redex/reduction-semantics.rkt") term-match)) . ((1125 . 2))) ((def ((lib "redex/pict.rkt") non-terminal-subscript-style)) . ((25905 . 4))) ((form ((lib "redex/reduction-semantics.rkt") define-extended-judgment-form)) . ((7414 . 4))) ((form ((lib "redex/reduction-semantics.rkt") hole)) . ((713 . 2))) ((form ((lib "redex/reduction-semantics.rkt") context-closure)) . ((4071 . 2))) ((def ((lib "redex/reduction-semantics.rkt") exn:fail:redex:test?)) . ((10603 . 5))) ((form ((lib "redex/reduction-semantics.rkt") redex-check)) . ((9850 . 18))) ((def ((lib "redex/gui.rkt") default-pretty-printer)) . ((19690 . 6))) ((form ((lib "redex/pict.rkt") render-metafunctions)) . ((21638 . 2))) ((def ((lib "redex/reduction-semantics.rkt") counterexample?)) . ((10464 . 5))) ((def ((lib "redex/reduction-semantics.rkt") set-cache-size!)) . ((484 . 3))) ((def ((lib "redex/pict.rkt") rule-pict-style)) . ((22928 . 4))) ((def ((lib "redex/reduction-semantics.rkt") bind-exp)) . ((266 . 5))) ((form ((lib "redex/reduction-semantics.rkt") fresh)) . ((5053 . 2))) ((def ((lib "redex/reduction-semantics.rkt") coverage?)) . ((9147 . 3))) ((def ((lib "redex/gui.rkt") term-node-set-position!)) . ((17760 . 5))) ((def ((lib "redex/pict.rkt") term->pict/pretty-write)) . ((20282 . 9))) ((def ((lib "redex/pict.rkt") default-font-size)) . ((26679 . 4))) ((def ((lib "redex/reduction-semantics.rkt") make-counterexample)) . ((10464 . 5))) ((def ((lib "redex/pict.rkt") render-reduction-relation-rules)) . ((22432 . 11))) ((def ((lib "redex/pict.rkt") lw)) . ((28612 . 20))) ((def ((lib "redex/pict.rkt") arrow-space)) . ((23105 . 4))) ((form ((lib "redex/pict.rkt") with-compound-rewriter)) . ((28333 . 4))) ((form ((lib "redex/reduction-semantics.rkt") generate-term)) . ((9433 . 14))) ((def ((lib "redex/pict.rkt") judgment-form-cases)) . ((24787 . 11))) ((form ((lib "redex/reduction-semantics.rkt") define-term)) . ((1086 . 2))) ((def ((lib "redex/gui.rkt") term-node-width)) . ((18033 . 3))) ((def ((lib "redex/reduction-semantics.rkt") struct:counterexample)) . ((10464 . 5))) ((form ((lib "redex/pict.rkt") metafunction->pict)) . ((21764 . 2))) ((form ((lib "redex/reduction-semantics.rkt") define-metafunction/extension)) . ((5869 . 5))) ((def ((lib "redex/reduction-semantics.rkt") plug)) . ((1248 . 4))) ((def ((lib "redex/gui.rkt") dark-text-color)) . ((19233 . 4))) ((def ((lib "redex/reduction-semantics.rkt") apply-reduction-relation)) . ((4196 . 4))) ((def ((lib "redex/reduction-semantics.rkt") redex-pseudo-random-generator)) . ((12044 . 4))) ((def ((lib "redex/gui.rkt") term-node-labels)) . ((17269 . 3))) ((def ((lib "redex/pict.rkt") to-lw/stx)) . ((29746 . 3))) ((def ((lib "redex/pict.rkt") literal-style)) . ((25570 . 4))) ((form ((lib "redex/reduction-semantics.rkt") check-metafunction)) . ((11285 . 15))) ((form ((lib "redex/reduction-semantics.rkt") define-union-language)) . ((2139 . 5))) ((def ((lib "redex/reduction-semantics.rkt") bind?)) . ((266 . 5))))
syntax
(redex-match lang pattern any)
(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-redudancy) -> boolean?
(check-redudancy 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 var) -> symbol?
  t : any/c
  var : 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 ...)
 
non-terminal-def = (non-terminal-name ...+ ::= pattern ...+)
                 | (non-terminal-name pattern ...+)
                 | ((non-terminal-name ...+) pattern ...+)
syntax
::=
syntax
(define-extended-language extended-lang base-lang
  non-terminal-def ...)
 
non-terminal-def = (non-terminal-name ...+ ::= pattern ...+)
                 | (non-terminal-name pattern ...+)
                 | ((non-terminal-name ...+) pattern ...+)
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
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 : reduction-relation?
  t : any/c
procedure
(apply-reduction-relation/tag-with-names r  
                                         t) 
 -> (listof (list/c (union false/c string?) any/c))
  r : reduction-relation?
  t : any/c
procedure
(apply-reduction-relation*  r                       
                            t                       
                           [#:cache-all? cache-all? 
                            #:stop-when stop-when]) 
 -> (listof any/c)
  r : reduction-relation?
  t : any/c
  cache-all? : boolean? = (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 ... -> range
                         
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 ...))
syntax
(define-metafunction/extension f language
  metafunction-contract
  [(g pattern ...) term metafunction-extras ...]
  ...)
syntax
(in-domain? (metafunction-name term ...))
syntax
(define-judgment-form language
  option ...
  rule rule ...)
 
option         = mode-spec
               | contract-spec
                  
mode-spec      = #:mode (form-id pos-use ...)
                  
contract-spec  = #:contract (form-id pattern ...)
                  
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
  option ...
  rule ...)
syntax
(judgment-holds judgment)
(judgment-holds judgment term)
 
judgment = (judgment-form-id pat/term ...)
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
parameter
(current-traced-metafunctions) -> (or/c 'all (listof symbol?))
(current-traced-metafunctions traced-metafunctions) -> void?
  traced-metafunctions : (or/c 'all (listof symbol?))
syntax
(test-equal e1 e2)
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-predicate p? e)
procedure
(test-results) -> void?
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 term-spec size-expr kw-args ...)
(generate-term term-spec)
 
term-spec = language pattern
          | #:source metafunction
          | #:source 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 language pattern property-expr kw-arg ...)
 
kw-arg = #:attempts attempts-expr
       | #:source metafunction
       | #:source relation-expr
       | #:retries retries-expr
       | #:print? print?-expr
       | #:attempt-size attempt-size-expr
       | #:prepare prepare-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)
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?                             
         #: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 : reduction-relation?
  expr : (or/c any/c (listof any/c))
  multiple? : boolean? = #f
  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 : number? = 15
  y-spacing : number? = 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?                            
            #: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 : reduction-relation?
  expr : (or/c any/c (listof any/c))
  file : (or/c path-string? path?)
  multiple? : boolean? = #f
  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 : reduction-relation?
  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 : reduction-relation?
  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
(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)
syntax
(render-metafunction metafunction-name filename)
syntax
(render-metafunctions metafunction-name ...)
syntax
(render-metafunctions metafunction-name ... #:file filename)
syntax
(metafunction->pict metafunction-name)
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
(extend-language-show-union) -> boolean?
(extend-language-show-union show?) -> void?
  show? : 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 : flat-contract?
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
(delimit-ellipsis-arguments?) -> any/c
(delimit-ellipsis-arguments? delimit?) -> void?
  delimit? : any/c
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 (and/c integer?
                                   (or/c zero? positive?)))
                    pair?))
(metafunction-cases cases) -> void?
  cases : (or/c #f (and/c (listof (and/c integer?
                                         (or/c zero? positive?)))
                          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 (and/c integer? positive? exact?))
(reduction-relation-rule-separation sep) -> void?
  sep : (parameter/c (and/c integer? positive? exact?))
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
(relation-clauses-combine)
 -> (parameter/c (-> (listof pict?) pict?))
(relation-clauses-combine combine) -> void?
  combine : (parameter/c (-> (listof pict?) 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?)
        #: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?
