12285
((3) 0 () 12 ((q lib "data/gvector.rkt") (q lib "data/enumerate/lib.rkt") (q lib "data/interval-map.rkt") (q lib "data/queue.rkt") (q lib "data/enumerate.rkt") (q lib "data/integer-set.rkt") (q lib "data/heap.rkt") (q lib "data/skip-list.rkt") (q lib "data/splay-tree.rkt") (q lib "data/bit-vector.rkt") (q lib "data/order.rkt") (q lib "data/union-find.rkt")) () (h ! (equal) ((c def c (c (? . 0) q gvector-add!)) q (1199 . 4)) ((c def c (c (? . 2) q interval-map-ref)) q (10854 . 7)) ((c def c (c (? . 4) q empty/e)) q (20225 . 2)) ((c def c (c (? . 9) q bit-vector-copy)) q (17401 . 5)) ((c def c (c (? . 1) q listof-n/e)) q (25844 . 6)) ((c def c (c (? . 3) q in-queue)) q (673 . 3)) ((c def c (c (? . 8) q splay-tree-count)) q (5406 . 3)) ((c def c (c (? . 5) q intersect)) q (15406 . 4)) ((c def c (c (? . 0) q in-gvector)) q (2268 . 3)) ((c def c (c (? . 1) q fold-enum)) q (28452 . 9)) ((c def c (c (? . 10) q ordering/c)) q (2435 . 2)) ((c def c (c (? . 6) q heap-count)) q (13834 . 3)) ((c def c (c (? . 1) q real/e)) q (29433 . 2)) ((c def c (c (? . 2) q interval-map-iterate-value)) q (13463 . 5)) ((c def c (c (? . 3) q queue-length)) q (415 . 3)) ((c def c (c (? . 4) q below/e)) q (19933 . 7)) ((c def c (c (? . 1) q set/e)) q (27956 . 3)) ((c def c (c (? . 5) q partition)) q (16347 . 3)) ((c def c (c (? . 7) q skip-list-remove!)) q (8163 . 4)) ((c def c (c (? . 4) q infinite-enum?)) q (18859 . 3)) ((c def c (c (? . 3) q queue-filter!)) q (245 . 4)) ((c def c (c (? . 0) q gvector->vector)) q (2020 . 3)) ((c def c (c (? . 5) q get-integer)) q (16119 . 3)) ((c def c (c (? . 6) q heap-copy)) q (14501 . 3)) ((c def c (c (? . 1) q integer/e)) q (29137 . 2)) ((c def c (c (? . 7) q skip-list-iterate-first)) q (8814 . 3)) ((c def c (c (? . 1) q non-empty-listof/e)) q (25570 . 8)) ((c def c (c (? . 2) q interval-map-contract!)) q (12112 . 7)) ((c def c (c (? . 5) q well-formed-set?)) q (15139 . 3)) ((c def c (c (? . 8) q splay-tree->list)) q (7094 . 3)) ((c def c (c (? . 1) q char/e)) q (28865 . 2)) ((c def c (c (? . 9) q bit-vector-length)) q (17221 . 3)) ((c def c (c (? . 8) q splay-tree-iterate-value)) q (5826 . 4)) ((c def c (c (? . 8) q splay-tree-remove!)) q (5316 . 4)) ((c def c (c (? . 5) q integer-set?)) q (15081 . 3)) ((c def c (c (? . 0) q gvector-insert!)) q (1291 . 6)) ((c def c (c (? . 10) q order-comparator)) q (3977 . 3)) ((c def c (c (? . 1) q two-way-number/e)) q (29501 . 3)) ((c def c (c (? . 1) q infinite-sequence/e)) q (28004 . 3)) ((c def c (c (? . 2) q interval-map-set!)) q (11115 . 9)) ((c def c (c (? . 3) q queue-empty?)) q (500 . 3)) ((c def c (c (? . 1) q range/e)) q (27362 . 5)) ((c def c (c (? . 0) q make-gvector)) q (812 . 3)) ((c def c (c (? . 5) q complement)) q (15793 . 5)) ((c def c (c (? . 2) q interval-map-iterate-first)) q (12959 . 4)) ((c def c (c (? . 0) q gvector-remove!)) q (1699 . 5)) ((c def c (c (? . 8) q splay-tree-iterate-greatest/<=?)) q (6905 . 5)) ((c def c (c (? . 1) q permutations/e)) q (27899 . 3)) ((c form c (c (? . 1) q cons/de)) q (23795 . 12)) ((c def c (c (? . 1) q exact-rational/e)) q (29278 . 3)) ((c def c (c (? . 2) q interval-map-update*!)) q (11409 . 11)) ((c def c (c (? . 0) q gvector)) q (923 . 3)) ((c def c (c (? . 5) q count)) q (16433 . 3)) ((c def c (c (? . 5) q subtract)) q (15498 . 4)) ((c def c (c (? . 0) q vector->gvector)) q (2085 . 3)) ((c def c (c (? . 10) q real-order)) q (4297 . 2)) ((c def c (c (? . 1) q string/e)) q (28931 . 2)) ((c def c (c (? . 7) q skip-list->list)) q (10310 . 3)) ((c def c (c (? . 4) q enum-count)) q (19093 . 3)) ((c def c (c (? . 9) q string->bit-vector)) q (18265 . 3)) ((c def c (c (? . 10) q dict-iterate-least/>=?)) q (3034 . 5)) ((c def c (c (? . 7) q skip-list-iterate-least/>?)) q (9309 . 5)) ((c def c (c (? . 1) q flonum/e)) q (29208 . 2)) ((c def c (c (? . 7) q skip-list-ref)) q (7870 . 5)) ((c def c (c (? . 7) q skip-list-iterate-greatest/<=?)) q (9762 . 6)) ((c def c (c (? . 7) q skip-list-iterate-next)) q (8923 . 5)) ((c def c (c (? . 6) q heap->vector)) q (14444 . 3)) ((c def c (c (? . 11) q uf-find)) q (18461 . 3)) ((c def c (c (? . 8) q make-adjustable-splay-tree)) q (4681 . 6)) ((c def c (c (? . 1) q permutations-of-n/e)) q (27790 . 4)) ((c def c (c (? . 7) q skip-list-count)) q (8267 . 3)) ((c def c (c (? . 6) q heap-sort!)) q (14682 . 4)) ((c def c (c (? . 4) q finite-enum?)) q (18801 . 3)) ((c def c (c (? . 3) q queue/c)) q (737 . 2)) ((c def c (c (? . 1) q nat+/e)) q (27555 . 3)) ((c def c (c (? . 5) q make-range)) q (15201 . 7)) ((c def c (c (? . 3) q non-empty-queue?)) q (611 . 3)) ((c def c (c (? . 0) q gvector-count)) q (1938 . 3)) ((c def c (c (? . 7) q skip-list-remove-range!)) q (8367 . 5)) ((c def c (c (? . 8) q splay-tree-iterate-greatest)) q (6435 . 3)) ((c def c (c (? . 11) q uf-same-set?)) q (18588 . 4)) ((c def c (c (? . 3) q enqueue!)) q (35 . 4)) ((c def c (c (? . 4) q flat-enum?)) q (19037 . 3)) ((c def c (c (? . 4) q except/e)) q (21073 . 5)) ((c def c (c (? . 1) q cons/e)) q (25160 . 5)) ((c def c (c (? . 3) q queue?)) q (559 . 3)) ((c def c (c (? . 7) q make-skip-list)) q (7169 . 7)) ((c def c (c (? . 8) q splay-tree?)) q (4928 . 3)) ((c def c (c (? . 1) q single/e)) q (27242 . 4)) ((c def c (c (? . 6) q heap-remove-min!)) q (14134 . 3)) ((c def c (c (? . 8) q splay-tree-expand!)) q (6198 . 5)) ((c def c (c (? . 0) q gvector->list)) q (2148 . 3)) ((c def c (c (? . 2) q interval-map-remove!)) q (11840 . 7)) ((c def c (c (? . 5) q make-integer-set)) q (14810 . 3)) ((c def c (c (? . 10) q gen:ordered-dict)) q (2471 . 2)) ((c def c (c (? . 9) q bit-vector?)) q (16784 . 3)) ((c def c (c (? . 10) q order-domain-contract)) q (4066 . 3)) ((c def c (c (? . 2) q interval-map-iterate-next)) q (13084 . 6)) ((c form c (c (? . 9) q for*/bit-vector)) q (17920 . 3)) ((c def c (c (? . 8) q splay-tree-remove-range!)) q (5935 . 5)) ((c def c (c (? . 9) q bit-vector)) q (16711 . 3)) ((c def c (c (? . 10) q order)) q (3447 . 12)) ((c form c (c (? . 0) q for*/gvector)) q (2382 . 2)) ((c def c (c (? . 9) q in-bit-vector)) q (17596 . 3)) ((c def c (c (? . 4) q pam/e)) q (20836 . 6)) ((c def c (c (? . 6) q heap-remove!)) q (14193 . 5)) ((c def c (c (? . 10) q dict-iterate-greatest/<=?)) q (3308 . 5)) ((c def c (c (? . 7) q skip-list-iterate-least/>=?)) q (9445 . 5)) ((c def c (c (? . 3) q dequeue!)) q (183 . 3)) ((c def c (c (? . 7) q skip-list-expand!)) q (8658 . 5)) ((c def c (c (? . 8) q splay-tree-iterate-least/>?)) q (6533 . 4)) ((c def c (c (? . 4) q two-way-enum?)) q (18919 . 3)) ((c def c (c (? . 9) q bit-vector->list)) q (18007 . 3)) ((c def c (c (? . 7) q skip-list-iter-valid?)) q (10227 . 3)) ((c def c (c (? . 1) q random-index)) q (28807 . 3)) ((c def c (c (? . 10) q dict-iterate-least)) q (2679 . 3)) ((c def c (c (? . 10) q datum-order)) q (4325 . 2)) ((c def c (c (? . 10) q ordered-dict?)) q (2620 . 3)) ((c def c (c (? . 5) q symmetric-difference)) q (15928 . 4)) ((c def c (c (? . 8) q splay-tree-iterate-least/>=?)) q (6655 . 5)) ((c def c (c (? . 0) q gvector-ref)) q (1041 . 5)) ((c def c (c (? . 2) q interval-map-iter?)) q (13643 . 3)) ((c def c (c (? . 3) q make-queue)) q (0 . 2)) ((c def c (c (? . 4) q bounded-list/e)) q (23669 . 5)) ((c def c (c (? . 8) q splay-tree-iterate-least)) q (6340 . 3)) ((c def c (c (? . 8) q splay-tree-ref)) q (5053 . 5)) ((c def c (c (? . 8) q splay-tree-iterate-greatest/<?)) q (6779 . 5)) ((c def c (c (? . 6) q in-heap)) q (14622 . 3)) ((c def c (c (? . 1) q fin/e)) q (27161 . 3)) ((c def c (c (? . 5) q set-integer-set-contents!)) q (14972 . 4)) ((c def c (c (? . 7) q skip-list-contract!)) q (8500 . 5)) ((c def c (c (? . 2) q interval-map?)) q (10795 . 3)) ((c def c (c (? . 1) q bool/e)) q (29001 . 2)) ((c def c (c (? . 8) q splay-tree-iterate-key)) q (5719 . 4)) ((c def c (c (? . 9) q list->bit-vector)) q (18087 . 3)) ((c def c (c (? . 6) q make-heap)) q (13707 . 3)) ((c def c (c (? . 8) q adjustable-splay-tree?)) q (4985 . 3)) ((c def c (c (? . 5) q split)) q (15677 . 4)) ((c def c (c (? . 10) q dict-iterate-greatest)) q (2787 . 4)) ((c def c (c (? . 2) q make-interval-map)) q (10399 . 9)) ((c def c (c (? . 1) q flip-dep/e)) q (24263 . 20)) ((c def c (c (? . 4) q from-nat)) q (19222 . 6)) ((c def c (c (? . 2) q interval-map-cons*!)) q (12598 . 11)) ((c def c (c (? . 10) q order-<?)) q (4218 . 3)) ((c def c (c (? . 4) q enum->list)) q (19590 . 6)) ((c def c (c (? . 11) q uf-union!)) q (18513 . 4)) ((c def c (c (? . 0) q gvector-set!)) q (1496 . 6)) ((c def c (c (? . 4) q map/e)) q (20292 . 13)) ((c def c (c (? . 3) q queue->list)) q (342 . 3)) ((c def c (c (? . 6) q vector->heap)) q (14336 . 4)) ((c def c (c (? . 8) q splay-tree-iterate-first)) q (5492 . 3)) ((c def c (c (? . 5) q subset?)) q (16509 . 4)) ((c def c (c (? . 1) q listof/e)) q (25312 . 7)) ((c def c (c (? . 7) q skip-list-iterate-greatest)) q (10053 . 4)) ((c def c (c (? . 5) q foldr)) q (16205 . 5)) ((c def c (c (? . 7) q skip-list?)) q (7747 . 3)) ((c def c (c (? . 7) q skip-list-iterate-least)) q (9944 . 3)) ((c def c (c (? . 4) q to-nat)) q (19393 . 6)) ((c def c (c (? . 10) q dict-iterate-greatest/<?)) q (3170 . 5)) ((c def c (c (? . 5) q union)) q (15589 . 4)) ((c def c (c (? . 7) q skip-list-iterate-greatest/<?)) q (9582 . 6)) ((c def c (c (? . 4) q append/e)) q (21409 . 5)) ((c def c (c (? . 10) q dict-iterate-least/>?)) q (2899 . 5)) ((c def c (c (? . 0) q gvector-remove-last!)) q (1870 . 3)) ((c def c (c (? . 4) q one-way-enum?)) q (18978 . 3)) ((c def c (c (? . 9) q make-bit-vector)) q (16595 . 4)) ((c def c (c (? . 11) q uf-set?)) q (18408 . 3)) ((c def c (c (? . 3) q nonempty-queue/c)) q (770 . 2)) ((c def c (c (? . 6) q heap-add!)) q (13908 . 4)) ((c def c (c (? . 10) q prop:ordered-dict)) q (2504 . 3)) ((c form c (c (? . 1) q delay/e)) q (25986 . 7)) ((c def c (c (? . 4) q dep/e)) q (22789 . 20)) ((c def c (c (? . 7) q skip-list-iterate-key)) q (9067 . 4)) ((c def c (c (? . 7) q adjustable-skip-list?)) q (7803 . 3)) ((c def c (c (? . 1) q slice/e)) q (26598 . 14)) ((c def c (c (? . 7) q skip-list-set!)) q (8035 . 5)) ((c def c (c (? . 10) q order?)) q (3925 . 3)) ((c def c (c (? . 4) q or/e)) q (21233 . 4)) ((c def c (c (? . 9) q bit-vector-popcount)) q (17310 . 3)) ((c def c (c (? . 8) q splay-tree-set!)) q (5202 . 5)) ((c def c (c (? . 4) q in-enum)) q (19808 . 3)) ((c def c (c (? . 3) q enqueue-front!)) q (106 . 4)) ((c def c (c (? . 1) q vector/e)) q (27654 . 4)) ((c def c (c (? . 0) q list->gvector)) q (2209 . 3)) ((c def c (c (? . 8) q splay-tree-iterate-next)) q (5588 . 4)) ((c def c (c (? . 4) q thunk/e)) q (21632 . 19)) ((c def c (c (? . 6) q heap?)) q (13783 . 3)) ((c def c (c (? . 7) q skip-list-iterate-value)) q (9187 . 4)) ((c def c (c (? . 1) q take/e)) q (26288 . 9)) ((c def c (c (? . 5) q integer-set-contents)) q (14891 . 3)) ((c def c (c (? . 0) q gvector?)) q (987 . 3)) ((c def c (c (? . 7) q make-adjustable-skip-list)) q (7492 . 6)) ((c def c (c (? . 8) q splay-tree-iter?)) q (7032 . 3)) ((c def c (c (? . 8) q make-splay-tree)) q (4354 . 7)) ((c def c (c (? . 11) q uf-set-canonical!)) q (18669 . 4)) ((c def c (c (? . 1) q two-way-real/e)) q (29357 . 2)) ((c def c (c (? . 4) q natural/e)) q (19862 . 2)) ((c def c (c (? . 9) q bit-vector-ref)) q (16841 . 5)) ((c def c (c (? . 1) q symbol/e)) q (29067 . 2)) ((c def c (c (? . 5) q member?)) q (16031 . 4)) ((c def c (c (? . 4) q enum-contract)) q (19156 . 3)) ((c def c (c (? . 2) q interval-map-expand!)) q (12358 . 7)) ((c def c (c (? . 2) q interval-map-iterate-key)) q (13285 . 5)) ((c def c (c (? . 4) q enum?)) q (18750 . 3)) ((c def c (c (? . 6) q heap-min)) q (14083 . 3)) ((c form c (c (? . 0) q for/gvector)) q (2330 . 2)) ((c def c (c (? . 7) q skip-list-iter?)) q (10166 . 3)) ((c def c (c (? . 6) q heap-add-all!)) q (13984 . 4)) ((c def c (c (? . 9) q bit-vector->string)) q (18171 . 3)) ((c def c (c (? . 10) q order-=?)) q (4139 . 3)) ((c def c (c (? . 11) q uf-new)) q (18357 . 3)) ((c def c (c (? . 1) q hash-traverse/e)) q (28081 . 9)) ((c def c (c (? . 1) q number/e)) q (29580 . 2)) ((c form c (c (? . 9) q for/bit-vector)) q (17664 . 9)) ((c def c (c (? . 8) q splay-tree-contract!)) q (6054 . 5)) ((c def c (c (? . 9) q bit-vector-set!)) q (17005 . 6)) ((c def c (c (? . 4) q list/e)) q (22655 . 4)) ((c def c (c (? . 6) q in-heap/consume!)) q (14553 . 3))))
procedure
(make-queue) -> queue?
procedure
(enqueue! q v) -> void?
  q : queue?
  v : any/c
procedure
(enqueue-front! q v) -> void?
  q : queue?
  v : any/c
procedure
(dequeue! q) -> any/c
  q : non-empty-queue?
procedure
(queue-filter! q pred?) -> void?
  q : queue?
  pred? : (-> any/c any/c)
procedure
(queue->list queue) -> (listof any/c)
  queue : queue?
procedure
(queue-length queue) -> exact-nonnegative-integer?
  queue : queue?
procedure
(queue-empty? q) -> boolean?
  q : queue?
procedure
(queue? v) -> boolean?
  v : any/c
procedure
(non-empty-queue? v) -> boolean?
  v : any/c
procedure
(in-queue queue) -> sequence?
  queue : queue?
value
queue/c : flat-contract?
value
nonempty-queue/c : flat-contract?
procedure
(make-gvector [#:capacity capacity]) -> gvector?
  capacity : exact-positive-integer? = 10
procedure
(gvector elem ...) -> gvector?
  elem : any/c
procedure
(gvector? x) -> boolean?
  x : any/c
procedure
(gvector-ref gv index [default]) -> any/c
  gv : gvector?
  index : exact-nonnegative-integer?
  default : any/c = (error ....)
procedure
(gvector-add! gv value ...) -> void?
  gv : gvector?
  value : any/c
procedure
(gvector-insert! gv index value) -> void?
  gv : gvector
  index : (and/c exact-nonnegative-integer?
                 (</c (+ 1 (gvector-count gv))))
  value : any/c
procedure
(gvector-set! gv index value) -> void?
  gv : gvector?
  index : (and/c exact-nonnegative-integer?
                 (</c (+ 1 (gvector-count gv))))
  value : any/c
procedure
(gvector-remove! gv index) -> void?
  gv : gvector?
  index : (and/c exact-nonnegative-integer?
                 (</c (gvector-count gv)))
procedure
(gvector-remove-last! gv) -> any/c
  gv : gvector?
procedure
(gvector-count gv) -> exact-nonnegative-integer?
  gv : gvector?
procedure
(gvector->vector gv) -> vector?
  gv : gvector?
procedure
(vector->gvector v) -> gvector?
  v : vector?
procedure
(gvector->list gv) -> list?
  gv : gvector?
procedure
(list->gvector l) -> gvector?
  l : list?
procedure
(in-gvector gv) -> sequence?
  gv : gvector?
syntax
(for/gvector (for-clause ...) body ...+)
syntax
(for*/gvector (for-clause ...) body ...+)
value
ordering/c : flat-contract?
value
gen:ordered-dict : any/c
value
prop:ordered-dict : (struct-type-property/c
                     (vectorof e/c e/c s/c s/c s/c s/c))
procedure
(ordered-dict? x) -> boolean?
  x : any/c
procedure
(dict-iterate-least dict) -> (or/c (dict-iter-contract dict) #f)
  dict : ordered-dict?
procedure
(dict-iterate-greatest dict)
 -> (or/c (dict-iter-contract dict) #f)
  dict : ordered-dict?
procedure
(dict-iterate-least/>? dict key)
 -> (or/c (dict-iter-contract dict) #f)
  dict : ordered-dict?
  key : any/c
procedure
(dict-iterate-least/>=? dict key)
 -> (or/c (dict-iter-contract dict) #f)
  dict : ordered-dict?
  key : any/c
procedure
(dict-iterate-greatest/<? dict key)
 -> (or/c (dict-iter-contract dict) #f)
  dict : ordered-dict?
  key : any/c
procedure
(dict-iterate-greatest/<=? dict key)
 -> (or/c (dict-iter-contract dict) #f)
  dict : ordered-dict?
  key : any/c
procedure
(order name domain-contract comparator)
 -> (and/c order? procedure?)
  name : symbol?
  domain-contract : contract?
  comparator : (-> any/c any/c ordering/c)
(order name domain-contract =? <? [>?]) -> (and/c order? procedure?)
  name : symbol?
  domain-contract : contract?
  =? : (-> any/c any/c boolean?)
  <? : (-> any/c any/c boolean?)
  >? : (-> any/c any/c boolean?) = (lambda (x y) (<? y x))
procedure
(order? x) -> boolean?
  x : any/c
procedure
(order-comparator ord) -> (-> any/c any/c ordering/c)
  ord : order?
procedure
(order-domain-contract ord) -> contract?
  ord : order?
procedure
(order-=? ord) -> (-> any/c any/c boolean?)
  ord : order?
procedure
(order-<? ord) -> (-> any/c any/c boolean?)
  ord : order?
value
real-order : order?
value
datum-order : order?
procedure
(make-splay-tree [ord                                   
                  #:key-contract key-contract           
                  #:value-contract value-contract]) -> splay-tree?
  ord : order? = datum-order
  key-contract : contract? = any/c
  value-contract : contract? = any/c
procedure
(make-adjustable-splay-tree [#:key-contract key-contract       
                             #:value-contract value-contract]) 
 -> splay-tree?
  key-contract : contract? = any/c
  value-contract : contract? = any/c
procedure
(splay-tree? x) -> boolean?
  x : any/c
procedure
(adjustable-splay-tree? x) -> boolean?
  x : any/c
procedure
(splay-tree-ref s key [default]) -> any
  s : splay-tree?
  key : any/c
  default : any/c = (lambda () (error ....))
procedure
(splay-tree-set! s key value) -> void?
  s : splay-tree?
  key : any/c
  value : any/c
procedure
(splay-tree-remove! s key) -> void?
  s : splay-tree?
  key : any/c
procedure
(splay-tree-count s) -> exact-nonnegative-integer?
  s : splay-tree?
procedure
(splay-tree-iterate-first s) -> (or/c #f splay-tree-iter?)
  s : splay-tree?
procedure
(splay-tree-iterate-next s iter) -> (or/c #f splay-tree-iter?)
  s : splay-tree?
  iter : splay-tree-iter?
procedure
(splay-tree-iterate-key s iter) -> any/c
  s : splay-tree?
  iter : splay-tree-iter?
procedure
(splay-tree-iterate-value s iter) -> any/c
  s : splay-tree?
  iter : splay-tree-iter?
procedure
(splay-tree-remove-range! s from to) -> void?
  s : splay-tree?
  from : any/c
  to : any/c
procedure
(splay-tree-contract! s from to) -> void?
  s : adjustable-splay-tree?
  from : exact-integer?
  to : exact-integer?
procedure
(splay-tree-expand! s from to) -> void?
  s : adjustable-splay-tree?
  from : exact-integer?
  to : exact-integer?
procedure
(splay-tree-iterate-least s) -> (or/c #f splay-tree-iter?)
  s : splay-tree
procedure
(splay-tree-iterate-greatest s) -> (or/c #f splay-tree-iter?)
  s : splay-tree
procedure
(splay-tree-iterate-least/>? s key) -> (or/c #f splay-tree-iter?)
  s : splay-tree?
  key : any/c
procedure
(splay-tree-iterate-least/>=? s key)
 -> (or/c #f splay-tree-iter?)
  s : splay-tree?
  key : any/c
procedure
(splay-tree-iterate-greatest/<? s key)
 -> (or/c #f splay-tree-iter?)
  s : splay-tree?
  key : any/c
procedure
(splay-tree-iterate-greatest/<=? s key)
 -> (or/c #f splay-tree-iter?)
  s : splay-tree?
  key : any/c
procedure
(splay-tree-iter? x) -> boolean?
  x : any/c
procedure
(splay-tree->list s) -> (listof pair?)
  s : splay-tree?
procedure
(make-skip-list [ord                                   
                 #:key-contract key-contract           
                 #:value-contract value-contract]) -> skip-list?
  ord : order? = datum-order
  key-contract : contract? = any/c
  value-contract : contract? = any/c
procedure
(make-adjustable-skip-list [#:key-contract key-contract       
                            #:value-contract value-contract]) 
 -> adjustable-skip-list?
  key-contract : contract? = any/c
  value-contract : contract? = any/c
procedure
(skip-list? v) -> boolean?
  v : any/c
procedure
(adjustable-skip-list? v) -> boolean?
  v : any/c
procedure
(skip-list-ref skip-list key [default]) -> any/c
  skip-list : skip-list?
  key : any/c
  default : any/c = (lambda () (error ....))
procedure
(skip-list-set! skip-list key value) -> void?
  skip-list : skip-list?
  key : any/c
  value : any/c
procedure
(skip-list-remove! skip-list key) -> void?
  skip-list : skip-list?
  key : any/c
procedure
(skip-list-count skip-list) -> exact-nonnegative-integer?
  skip-list : skip-list?
procedure
(skip-list-remove-range! skip-list from to) -> void?
  skip-list : skip-list?
  from : any/c
  to : any/c
procedure
(skip-list-contract! skip-list from to) -> void?
  skip-list : adjustable-skip-list?
  from : exact-integer?
  to : exact-integer?
procedure
(skip-list-expand! skip-list from to) -> void?
  skip-list : adjustable-skip-list?
  from : exact-integer?
  to : exact-integer?
procedure
(skip-list-iterate-first skip-list) -> (or/c skip-list-iter? #f)
  skip-list : skip-list?
procedure
(skip-list-iterate-next skip-list iter)
 -> (or/c skip-list-iter? #f)
  skip-list : skip-list?
  iter : skip-list-iter?
procedure
(skip-list-iterate-key skip-list iter) -> any/c
  skip-list : skip-list?
  iter : skip-list-iter?
procedure
(skip-list-iterate-value skip-list iter) -> any/c
  skip-list : skip-list?
  iter : skip-list-iter?
procedure
(skip-list-iterate-least/>? skip-list key)
 -> (or/c skip-list-iter? #f)
  skip-list : skip-list?
  key : any/c
procedure
(skip-list-iterate-least/>=? skip-list key)
 -> (or/c skip-list-iter? #f)
  skip-list : skip-list?
  key : any/c
procedure
(skip-list-iterate-greatest/<? skip-list 
                               key)      
 -> (or/c skip-list-iter? #f)
  skip-list : skip-list?
  key : any/c
procedure
(skip-list-iterate-greatest/<=? skip-list 
                                key)      
 -> (or/c skip-list-iter? #f)
  skip-list : skip-list?
  key : any/c
procedure
(skip-list-iterate-least skip-list) -> (or/c skip-list-iter? #f)
  skip-list : skip-list?
procedure
(skip-list-iterate-greatest skip-list)
 -> (or/c skip-list-iter? #f)
  skip-list : skip-list?
procedure
(skip-list-iter? v) -> boolean?
  v : any/c
procedure
(skip-list-iter-valid? iter) -> boolean?
  iter : skip-list-iter?
procedure
(skip-list->list skip-list) -> (listof pair?)
  skip-list : skip-list?
procedure
(make-interval-map [contents                          
                    #:key-contract key-contract       
                    #:value-contract value-contract]) 
 -> interval-map?
  contents : (listof (cons/c (cons/c exact-integer? exact-integer?) any/c))
           = null
  key-contract : contract? = any/c
  value-contract : contract? = any/c
procedure
(interval-map? v) -> boolean?
  v : any/c
procedure
(interval-map-ref  interval-map     
                   position         
                  [default])    -> any/c
  interval-map : interval-map?
  position : exact-integer?
  default : any/c = (lambda () (error ....))
procedure
(interval-map-set! interval-map     
                   start            
                   end              
                   value)       -> void?
  interval-map : interval-map?
  start : exact-integer?
  end : exact-integer?
  value : any/c
procedure
(interval-map-update*!  interval-map     
                        start            
                        end              
                        updater          
                       [default])    -> void?
  interval-map : interval-map?
  start : exact-integer?
  end : exact-integer?
  updater : (-> any/c any/c)
  default : any/c = (lambda () (error ....))
procedure
(interval-map-remove! interval-map     
                      start            
                      end)         -> void?
  interval-map : interval-map?
  start : (or/c exact-integer? -inf.0)
  end : (or/c exact-integer? +inf.0)
procedure
(interval-map-contract! interval-map     
                        start            
                        end)         -> void?
  interval-map : interval-map?
  start : exact-integer?
  end : exact-integer?
procedure
(interval-map-expand! interval-map     
                      start            
                      end)         -> void?
  interval-map : interval-map?
  start : exact-integer?
  end : exact-integer?
procedure
(interval-map-cons*!  interval-map     
                      start            
                      end              
                      v                
                     [default])    -> void?
  interval-map : interval-map?
  start : any/c
  end : any/c
  v : any/c
  default : any/c = null
procedure
(interval-map-iterate-first interval-map)
 -> (or/c interval-map-iter? #f)
  interval-map : interval-map?
procedure
(interval-map-iterate-next interval-map 
                           iter)        
 -> (or/c interval-map-iter? #f)
  interval-map : interval-map?
  iter : interval-map-iter?
procedure
(interval-map-iterate-key interval-map     
                          iter)        -> pair?
  interval-map : interval-map?
  iter : interval-map-iter?
procedure
(interval-map-iterate-value interval-map     
                            iter)        -> any
  interval-map : interval-map?
  iter : interval-map-iter?
procedure
(interval-map-iter? v) -> boolean?
  v : any/c
procedure
(make-heap <=?) -> heap?
  <=? : (-> any/c any/c any/c)
procedure
(heap? x) -> boolean?
  x : any/c
procedure
(heap-count h) -> exact-nonnegative-integer?
  h : heap?
procedure
(heap-add! h v ...) -> void?
  h : heap?
  v : any/c
procedure
(heap-add-all! h v) -> void?
  h : heap?
  v : (or/c list? vector? heap?)
procedure
(heap-min h) -> any/c
  h : heap?
procedure
(heap-remove-min! h) -> void?
  h : heap?
procedure
(heap-remove! h v [#:same? same?]) -> void?
  h : heap?
  v : any/c
  same? : (-> any/c any/c any/c) = equal?
procedure
(vector->heap <=? items) -> heap?
  <=? : (-> any/c any/c any/c)
  items : vector?
procedure
(heap->vector h) -> vector?
  h : heap?
procedure
(heap-copy h) -> heap?
  h : heap?
procedure
(in-heap/consume! heap) -> sequence?
  heap : heap?
procedure
(in-heap heap) -> sequence?
  heap : heap?
procedure
(heap-sort! v <=?) -> void?
  v : (and/c vector? (not/c immutable?))
  <=? : (-> any/c any/c any/c)
procedure
(make-integer-set wfs) -> integer-set?
  wfs : well-formed-set?
procedure
(integer-set-contents s) -> well-formed-set?
  s : integer-set?
procedure
(set-integer-set-contents! s wfs) -> void?
  s : integer-set?
  wfs : well-formed-set?
procedure
(integer-set? v) -> boolean?
  v : any/c
procedure
(well-formed-set? v) -> boolean?
  v : any/c
procedure
(make-range) -> integer-set?
(make-range elem) -> integer-set?
  elem : exact-integer?
(make-range start end) -> integer-set?
  start : exact-integer?
  end : exact-integer?
procedure
(intersect x y) -> integer-set?
  x : integer-set?
  y : integer-set?
procedure
(subtract x y) -> integer-set?
  x : integer-set?
  y : integer-set?
procedure
(union x y) -> integer-set?
  x : integer-set?
  y : integer-set?
procedure
(split x y) -> integer-set? integer-set? integer-set?
  x : integer-set?
  y : integer-set?
procedure
(complement s start end) -> integer-set?
  s : integer-set?
  start : exact-integer?
  end : exact-integer?
procedure
(symmetric-difference x y) -> integer-set?
  x : integer-set?
  y : integer-set?
procedure
(member? k s) -> boolean?
  k : exact-integer?
  s : integer-set?
procedure
(get-integer set) -> (or/c exact-integer? #f)
  set : integer-set?
procedure
(foldr proc base-v s) -> any/c
  proc : (exact-integer? any/c . -> . any/c)
  base-v : any/c
  s : integer-set?
procedure
(partition s) -> (listof integer-set?)
  s : (listof integer-set?)
procedure
(count s) -> exact-nonnegative-integer?
  s : integer-set?
procedure
(subset? x y) -> boolean?
  x : integer-set?
  y : integer-set?
procedure
(make-bit-vector size [fill]) -> bit-vector?
  size : exact-integer?
  fill : boolean? = #f
procedure
(bit-vector elem ...) -> bit-vector?
  elem : boolean?
procedure
(bit-vector? v) -> boolean?
  v : any/c
procedure
(bit-vector-ref bv index [default]) -> any/c
  bv : bit-vector?
  index : exact-nonnegative-integer?
  default : any/c = (error ....)
procedure
(bit-vector-set! bv index value) -> void?
  bv : bit-vector?
  index : (and/c exact-nonnegative-integer?
                 (</c (+ 1 (bit-vector-length vv))))
  value : boolean?
procedure
(bit-vector-length bv) -> exact-nonnegative-integer?
  bv : bit-vector?
procedure
(bit-vector-popcount bv) -> exact-nonnegative-integer?
  bv : bit-vector?
procedure
(bit-vector-copy bv [start end]) -> bit-vector?
  bv : bit-vector?
  start : exact-nonnegative-integer? = 0
  end : exact-nonnegative-integer? = (vector-length v)
procedure
(in-bit-vector bv) -> sequence?
  bv : bit-vector?
syntax
(for/bit-vector maybe-length (for-clause ...)
  body-or-break ... body)
 
maybe-length = 
             | #:length length-expr
             | #:length length-expr #:fill fill-expr
 
  length-expr : exact-nonnegative-integer?
syntax
(for*/bit-vector maybe-length (for-clause ...)
  body-or-break ... body)
procedure
(bit-vector->list bv) -> (listof boolean?)
  bv : bit-vector?
procedure
(list->bit-vector bits) -> bit-vector?
  bits : (listof boolean?)
procedure
(bit-vector->string bv) -> (and/c string? #rx"^[01]*$")
  bv : bit-vector?
procedure
(string->bit-vector s) -> bit-vector?
  s : (and/c string? #rx"^[01]*$")
procedure
(uf-new c) -> uf-set?
  c : any/c
procedure
(uf-set? x) -> boolean?
  x : any/c
procedure
(uf-find a) -> any/c
  a : uf-set?
procedure
(uf-union! a b) -> void?
  a : uf-set?
  b : uf-set?
procedure
(uf-same-set? a b) -> boolean?
  a : uf-set?
  b : uf-set?
procedure
(uf-set-canonical! a c) -> void?
  a : uf-set?
  c : any/c
procedure
(enum? x) -> boolean?
  x : any/c
procedure
(finite-enum? v) -> boolean?
  v : any/c
procedure
(infinite-enum? v) -> boolean?
  v : any/c
procedure
(two-way-enum? v) -> boolean?
  v : any/c
procedure
(one-way-enum? v) -> boolean?
  v : any/c
procedure
(flat-enum? v) -> boolean?
  v : any/c
procedure
(enum-count e) -> natural?
  e : finite-enum?
procedure
(enum-contract e) -> natural?
  e : finite-enum?
procedure
(from-nat e n) -> (enum-contract e)
  e : enum?
  n : (if (finite-enum? e)
          (integer-in 0 (enum-count e))
          natural?)
procedure
(to-nat e x) -> (if (finite-enum? e)
                    (integer-in 0 (enum-count e))
                    natural?)
  e : two-way-enum?
  x : (enum-contract e)
procedure
(enum->list e [n]) -> (listof (enum-contract e))
  e : enum?
  n : (if (finite-enum? e)              = (enum-count e)
          (integer-in 0 (enum-count e))
          natural?)
procedure
(in-enum e) -> sequence?
  e : enum?
value
natural/e : (and/c infinite-enum? two-way-enum? flat-enum?)
procedure
(below/e max) -> (and/c (if (= max +inf.0)
                            finite-enum?
                            infinite-enum?)
                        two-way-enum?
                        flat-enum?)
  max : (or/c natural? +inf.0)
value
empty/e : (and/c finite-enum? two-way-enum? flat-enum?)
procedure
(map/e f f-inv #:contract c e) -> enum?
  f : (-> (enum-contract e) c)
  f-inv : (-> c (enum-contract e))
  c : contract?
  e : enum?
(map/e f f-inv #:contract c e ...+) -> enum?
  f : (dynamic->* #:mandatory-domain-contracts (map enum-contract e)
                  #:range-contracts (list c))
  f-inv : (dynamic->* #:mandatory-domain-contracts (list c)
                      #:range-contracts (map enum-contract e))
  c : contract?
  e : enum?
procedure
(pam/e f #:contract c e ...+) -> one-way-enum?
  f : (dynamic->* #:mandatory-domain-contracts (map enum-contract e)
                  #:range-contracts (list c))
  c : contract?
  e : enum?
procedure
(except/e e [#:contract c] x ...) -> two-way-enum?
  e : two-way-enum?
  c : (or/c #f contract?) = #f
  x : (enum-contract e)
procedure
(or/e [#:one-way-enum? one-way-enum?] e-p ...) -> enum?
  one-way-enum? : boolean? = #f
  e-p : (or/c enum? (cons/c enum? (-> any/c boolean?)))
procedure
(append/e [#:one-way-enum? one-way-enum?]     
           e-p ...+)                      -> enum?
  one-way-enum? : boolean? = #f
  e-p : (or/c enum? (cons/c enum? (-> any/c boolean?)))
procedure
(thunk/e  eth                                  
         [#:count count                        
          #:two-way-enum? is-two-way-enum?     
          #:flat-enum? is-flat-enum?])     -> enum?
  eth : (-> (and/c (if (= count +inf.0)
                       infinite-enum?
                       (and/c finite-enum?
                              (let ([matching-count? (λ (e) (= (enum-count e) count))])
                                matching-count?)))
                   (if is-two-way-enum?
                       two-way-enum?
                       one-way-enum?)
                   (if is-flat-enum?
                       flat-enum?
                       (not/c flat-enum?))))
  count : (or/c +inf.0 natural?) = +inf.0
  is-two-way-enum? : any/c = #t
  is-flat-enum? : any/c = #t
procedure
(list/e [#:ordering ordering] e ...) -> enum?
  ordering : (or/c 'diagonal 'square) = 'square
  e : enum?
procedure
(dep/e  e                                     
        f                                     
       [#:f-range-finite? f-range-finite?     
        #:flat? flat?                         
        #:one-way? one-way?])             -> enum?
  e : enum?
  f : (-> (enum-contract e)
          (and/c (if f-range-finite?
                     finite-enum?
                     infinite-enum?)
                 (if one-way?
                     one-way-enum?
                     two-way-enum?)
                 (if flat?
                     flat-enum?
                     (not/c flat-enum?))))
  f-range-finite? : boolean? = #f
  flat? : boolean? = #t
  one-way? : boolean? = (one-way-enum? e)
procedure
(bounded-list/e k n)
 -> (and/c finite-enum? two-way-enum? flat-enum?)
  k : natural?
  n : natural?
syntax
(cons/de [car-id car-enumeration-expr]
         [cdr-id (car-id) cdr-enumeration-expr]
         cons/de-option)
(cons/de [car-id (cdr-id) car-enumeration-expr]
         [cdr-id cdr-enumeration-expr]
         cons/de-option)
 
cons/de-option = 
               | #:dep-expression-finite? expr cons/de-option
               | #:flat? expr cons/de-option
               | #:one-way? expr cons/de-option
procedure
(flip-dep/e  e                                      
             f                                      
            [#:f-range-finite? f-range-finite?]     
             #:flat? flat?                          
            [#:one-way? one-way?])              -> enum?
  e : enum?
  f : (-> (enum-contract e)
          (and/c (if f-range-finite?
                     finite-enum?
                     infinite-enum?)
                 (if one-way?
                     one-way-enum?
                     two-way-enum?)
                 (if flat?
                     flat-enum?
                     (not/c flat-enum?))))
  f-range-finite? : boolean? = #f
  flat? : #t
  one-way? : boolean? = (one-way-enum? e)
procedure
(cons/e e1 e2 [#:ordering ordering]) -> enum?
  e1 : enum?
  e2 : enum?
  ordering : (or/c 'diagonal 'square) = 'square
procedure
(listof/e  e                                           
          [#:simple-recursive? simple-recursive?]) -> enum?
  e : (if simple-recursive?
          enum?
          infinite-enum?)
  simple-recursive? : any/c = #t
procedure
(non-empty-listof/e  e                                       
                    [#:simple-recursive? simple-recursive?]) 
 -> enum?
  e : (if simple-recursive?
          enum?
          infinite-enum?)
  simple-recursive? : any/c = #t
procedure
(listof-n/e e n) -> enum?
  e : (if simple-recursive?
          enum?
          infinite-enum?)
  n : natural?
syntax
(delay/e enum-expression ... keyword-options)
 
keyword-options = 
                | #:count count-expression keyword-options
                | #:two-way-enum? two-way-boolean-expression keyword-options
                | #:flat-enum? flat-boolean-expression keyword-options
procedure
(take/e e n #:contract contract) -> finite-enum?
  e : enum?
  n : (if (finite-enum? e)
          (integer-in 0 (enum-count e))
          natural?)
  contract : (λ (x)
               (and ((enum-contract e) x)
                    (< (to-nat e x) n)))
procedure
(slice/e e lo hi #:contract contract) -> finite-enum?
  e : enum?
  lo : (and/c (if (finite-enum? e)
                  (integer-in 0 (enum-count e))
                  natural?)
              (<=/c hi))
  hi : (if (finite-enum? e)
           (integer-in 0 (enum-count e))
           natural?)
  contract : (and/c (enum-contract e)
                    (λ (x)
                      (<= lo (to-nat e x))
                      (< (to-nat e x) hi)))
procedure
(fin/e x ...) -> (and/c finite-enum? flat-enum?)
  x : any/c
procedure
(single/e v #:equal? same?) -> (and/c finite-enum? two-way-enum?)
  v : any/c
  same? : equal?
procedure
(range/e lo hi) -> (and/c two-way-enum? flat-enum?)
  lo : (and/c (or/c -inf.0 exact-integer?)
              (<=/c hi))
  hi : (or/c exact-integer? +inf.0)
procedure
(nat+/e lo) -> (and/c infinite-enum? two-way-enum? flat-enum?)
  lo : natural?
procedure
(vector/e [#:ordering ordering] e ...) -> enum?
  ordering : (or/c 'diagonal 'square) = 'square
  e : enum?
procedure
(permutations-of-n/e n)
 -> (and/c finite-enum? two-way-enum? flat-enum?)
  n : natural?
procedure
(permutations/e l) -> enum?
  l : list?
procedure
(set/e e) -> enum?
  e : enum?
procedure
(infinite-sequence/e e) -> one-way-enum?
  e : finite-enum?
procedure
(hash-traverse/e f                               
                 xs                              
                 #:get-contract get-contract     
                 #:contract contract)        -> enum?
  f : (-> any/c enum?)
  xs : (hash/c any/c any/c)
  get-contract : (-> any/c contract?)
  contract : contract?
procedure
(fold-enum f                                      
           bs                                     
           #:f-range-finite? f-range-finite?) -> enum?
  f : (if f-range-finite?
          (-> list? any/c finite-enum?)
          (-> list? any/c infinite-enum?))
  bs : list?
  f-range-finite? : #f
procedure
(random-index e) -> natural?
  e : enum?
value
char/e : (and/c finite-enum? two-way-enum? flat-enum?)
value
string/e : (and/c infinite-enum? two-way-enum? flat-enum?)
value
bool/e : (and/c finite-enum? two-way-enum? flat-enum?)
value
symbol/e : (and/c infinite-enum? two-way-enum? flat-enum?)
value
integer/e : (and/c infinite-enum? two-way-enum? flat-enum?)
value
flonum/e : (and/c infinite-enum? two-way-enum? flat-enum?)
value
exact-rational/e
 : (and/c infinite-enum? one-way-enum? flat-enum?)
value
two-way-real/e : (and/c infinite-enum? two-way-enum? flat-enum?)
value
real/e : (and/c infinite-enum? one-way-enum? flat-enum?)
value
two-way-number/e
 : (and/c infinite-enum? two-way-enum? flat-enum?)
value
number/e : (and/c infinite-enum? one-way-enum? flat-enum?)
