13198
((3) 0 () 12 ((q lib "data/splay-tree.rkt") (q lib "data/queue.rkt") (q lib "data/interval-map.rkt") (q lib "data/gvector.rkt") (q lib "data/order.rkt") (q lib "data/enumerate/lib.rkt") (q lib "data/enumerate.rkt") (q lib "data/skip-list.rkt") (q lib "data/bit-vector.rkt") (q lib "data/integer-set.rkt") (q lib "data/heap.rkt") (q lib "data/union-find.rkt")) () (h ! (equal) ((c def c (c (? . 5) q flip-dep/e)) q (26645 . 20)) ((c def c (c (? . 6) q enum-contract)) q (21544 . 3)) ((c def c (c (? . 0) q splay-tree-iterate-greatest/<=?)) q (6883 . 5)) ((c def c (c (? . 0) q splay-tree-expand!)) q (6174 . 5)) ((c form c (c (? . 3) q for*/gvector)) q (2358 . 2)) ((c def c (c (? . 4) q dict-iterate-least/>=?)) q (3010 . 5)) ((c def c (c (? . 1) q make-queue)) q (0 . 2)) ((c def c (c (? . 1) q queue-filter!)) q (245 . 4)) ((c def c (c (? . 2) q interval-map-iterate-greatest/end<=?)) q (15725 . 6)) ((c def c (c (? . 0) q splay-tree-iterate-first)) q (5468 . 3)) ((c def c (c (? . 2) q interval-map-expand!)) q (12669 . 7)) ((c def c (c (? . 10) q heap-min)) q (16383 . 3)) ((c def c (c (? . 11) q uf-find)) q (20849 . 3)) ((c def c (c (? . 3) q gvector-add!)) q (1175 . 4)) ((c def c (c (? . 4) q ordering/c)) q (2411 . 2)) ((c def c (c (? . 8) q bit-vector)) q (19094 . 3)) ((c def c (c (? . 1) q enqueue-front!)) q (106 . 4)) ((c def c (c (? . 5) q permutations/e)) q (30423 . 3)) ((c def c (c (? . 4) q order)) q (3423 . 12)) ((c def c (c (? . 0) q splay-tree-iter?)) q (7010 . 3)) ((c def c (c (? . 6) q in-enum)) q (22190 . 3)) ((c def c (c (? . 0) q splay-tree-set!)) q (5178 . 5)) ((c def c (c (? . 4) q ordered-dict?)) q (2596 . 3)) ((c def c (c (? . 2) q make-interval-map)) q (10377 . 9)) ((c def c (c (? . 6) q enum-count)) q (21481 . 3)) ((c def c (c (? . 3) q make-gvector)) q (788 . 3)) ((c form c (c (? . 3) q for/gvector)) q (2306 . 2)) ((c def c (c (? . 2) q interval-map-contract!)) q (12423 . 7)) ((c def c (c (? . 6) q except/e)) q (23455 . 5)) ((c def c (c (? . 6) q infinite-enum?)) q (21247 . 3)) ((c def c (c (? . 1) q dequeue!)) q (183 . 3)) ((c def c (c (? . 7) q skip-list-iterate-least/>=?)) q (9423 . 5)) ((c def c (c (? . 2) q interval-map-ref/bounds)) q (11093 . 10)) ((c def c (c (? . 7) q skip-list-iterate-next)) q (8901 . 5)) ((c def c (c (? . 6) q finite-enum?)) q (21189 . 3)) ((c def c (c (? . 8) q bit-vector->string)) q (20559 . 3)) ((c def c (c (? . 2) q interval-map-iter?)) q (15943 . 3)) ((c def c (c (? . 5) q infinite-sequence/e)) q (30528 . 3)) ((c def c (c (? . 0) q splay-tree-iterate-greatest)) q (6412 . 3)) ((c def c (c (? . 4) q dict-iterate-greatest)) q (2763 . 4)) ((c def c (c (? . 4) q prop:ordered-dict)) q (2480 . 3)) ((c def c (c (? . 7) q skip-list-iterate-greatest/<=?)) q (9740 . 6)) ((c def c (c (? . 8) q list->bit-vector)) q (20475 . 3)) ((c def c (c (? . 7) q skip-list-iterate-least)) q (9922 . 3)) ((c def c (c (? . 2) q interval-map-remove!)) q (12151 . 7)) ((c def c (c (? . 4) q order?)) q (3901 . 3)) ((c def c (c (? . 0) q splay-tree-iterate-least)) q (6316 . 3)) ((c def c (c (? . 7) q make-skip-list)) q (7147 . 7)) ((c def c (c (? . 1) q non-empty-queue?)) q (595 . 3)) ((c def c (c (? . 0) q splay-tree-ref)) q (5029 . 5)) ((c def c (c (? . 3) q gvector-set!)) q (1472 . 6)) ((c def c (c (? . 7) q adjustable-skip-list?)) q (7781 . 3)) ((c form c (c (? . 8) q for/bit-vector)) q (20052 . 9)) ((c def c (c (? . 3) q gvector-remove-last!)) q (1846 . 3)) ((c def c (c (? . 5) q hash-traverse/e)) q (30605 . 9)) ((c def c (c (? . 9) q subtract)) q (17881 . 4)) ((c def c (c (? . 6) q to-nat)) q (21775 . 6)) ((c def c (c (? . 3) q in-gvector)) q (2244 . 3)) ((c def c (c (? . 5) q string/e)) q (31455 . 2)) ((c def c (c (? . 1) q enqueue!)) q (35 . 4)) ((c def c (c (? . 8) q bit-vector-length)) q (19604 . 3)) ((c def c (c (? . 0) q splay-tree-iterate-least/>=?)) q (6633 . 5)) ((c def c (c (? . 6) q dep/e)) q (25171 . 20)) ((c def c (c (? . 1) q nonempty-queue/c)) q (746 . 2)) ((c def c (c (? . 8) q make-bit-vector)) q (18978 . 4)) ((c def c (c (? . 8) q bit-vector->list)) q (20395 . 3)) ((c def c (c (? . 9) q subset?)) q (18892 . 4)) ((c def c (c (? . 9) q well-formed-set?)) q (17522 . 3)) ((c def c (c (? . 0) q splay-tree?)) q (4904 . 3)) ((c def c (c (? . 10) q in-heap)) q (17005 . 3)) ((c def c (c (? . 2) q interval-map-iterate-least/start>?)) q (14207 . 6)) ((c def c (c (? . 10) q heap-sort!)) q (17065 . 4)) ((c def c (c (? . 5) q two-way-number/e)) q (32025 . 3)) ((c def c (c (? . 5) q fold-enum)) q (30976 . 9)) ((c def c (c (? . 4) q datum-order)) q (4301 . 2)) ((c def c (c (? . 10) q heap-remove!)) q (16493 . 5)) ((c def c (c (? . 0) q splay-tree-iterate-value)) q (5802 . 4)) ((c def c (c (? . 5) q real/e)) q (31957 . 2)) ((c def c (c (? . 2) q interval-map-cons*!)) q (12909 . 11)) ((c def c (c (? . 7) q skip-list?)) q (7725 . 3)) ((c def c (c (? . 8) q string->bit-vector)) q (20653 . 3)) ((c def c (c (? . 0) q adjustable-splay-tree?)) q (4961 . 3)) ((c def c (c (? . 5) q non-empty-listof/e)) q (27952 . 8)) ((c def c (c (? . 6) q below/e)) q (22315 . 7)) ((c def c (c (? . 6) q enum->list)) q (21972 . 6)) ((c def c (c (? . 6) q empty/e)) q (22607 . 2)) ((c def c (c (? . 5) q single/e)) q (29624 . 4)) ((c def c (c (? . 3) q gvector->vector)) q (1996 . 3)) ((c def c (c (? . 7) q skip-list-remove-range!)) q (8345 . 5)) ((c def c (c (? . 2) q interval-map-iterate-least/end>?)) q (15087 . 6)) ((c def c (c (? . 9) q set-integer-set-contents!)) q (17355 . 4)) ((c def c (c (? . 4) q real-order)) q (4273 . 2)) ((c def c (c (? . 5) q exact-rational/e)) q (31802 . 3)) ((c def c (c (? . 5) q symbol/e)) q (31591 . 2)) ((c def c (c (? . 4) q order-=?)) q (4115 . 3)) ((c def c (c (? . 3) q gvector-ref)) q (1017 . 5)) ((c def c (c (? . 7) q skip-list-iterate-key)) q (9045 . 4)) ((c def c (c (? . 5) q cons/e)) q (27542 . 5)) ((c def c (c (? . 7) q skip-list-expand!)) q (8636 . 5)) ((c def c (c (? . 7) q skip-list-iterate-greatest/<?)) q (9560 . 6)) ((c def c (c (? . 2) q interval-map-iterate-greatest/start<=?)) q (14863 . 6)) ((c def c (c (? . 5) q range/e)) q (29744 . 5)) ((c def c (c (? . 8) q bit-vector-popcount)) q (19693 . 3)) ((c def c (c (? . 5) q char/e)) q (31389 . 2)) ((c def c (c (? . 6) q from-nat)) q (21604 . 6)) ((c def c (c (? . 5) q bool/e)) q (31525 . 2)) ((c def c (c (? . 5) q vector/e)) q (30178 . 4)) ((c def c (c (? . 9) q intersect)) q (17789 . 4)) ((c def c (c (? . 4) q order-<?)) q (4194 . 3)) ((c def c (c (? . 10) q vector->heap)) q (16719 . 4)) ((c def c (c (? . 10) q heap-count)) q (16134 . 3)) ((c def c (c (? . 11) q uf-set-canonical!)) q (21057 . 4)) ((c def c (c (? . 3) q gvector->list)) q (2124 . 3)) ((c def c (c (? . 0) q splay-tree-iterate-least/>?)) q (6511 . 4)) ((c def c (c (? . 5) q take/e)) q (28670 . 9)) ((c def c (c (? . 0) q splay-tree->list)) q (7072 . 3)) ((c def c (c (? . 9) q integer-set-contents)) q (17274 . 3)) ((c def c (c (? . 2) q interval-map-iterate-greatest)) q (14079 . 4)) ((c def c (c (? . 2) q interval-map-set!)) q (11426 . 9)) ((c def c (c (? . 0) q make-adjustable-splay-tree)) q (4657 . 6)) ((c def c (c (? . 5) q permutations-of-n/e)) q (30314 . 4)) ((c def c (c (? . 6) q thunk/e)) q (24014 . 19)) ((c def c (c (? . 5) q random-index)) q (31331 . 3)) ((c def c (c (? . 5) q flonum/e)) q (31732 . 2)) ((c def c (c (? . 6) q bounded-list/e)) q (26051 . 5)) ((c def c (c (? . 6) q map/e)) q (22674 . 13)) ((c def c (c (? . 8) q bit-vector-copy)) q (19784 . 5)) ((c def c (c (? . 9) q symmetric-difference)) q (18311 . 4)) ((c def c (c (? . 2) q interval-map-ref)) q (10832 . 7)) ((c def c (c (? . 4) q dict-iterate-least)) q (2655 . 3)) ((c def c (c (? . 3) q gvector-count)) q (1914 . 3)) ((c def c (c (? . 2) q interval-map?)) q (10773 . 3)) ((c def c (c (? . 5) q two-way-real/e)) q (31881 . 2)) ((c def c (c (? . 5) q slice/e)) q (28980 . 14)) ((c def c (c (? . 7) q skip-list-ref)) q (7848 . 5)) ((c def c (c (? . 1) q queue->list)) q (342 . 3)) ((c def c (c (? . 5) q but-not/e)) q (30036 . 4)) ((c def c (c (? . 2) q interval-map-iterate-least/end>=?)) q (15297 . 6)) ((c def c (c (? . 6) q append/e)) q (23791 . 5)) ((c def c (c (? . 5) q number/e)) q (32104 . 2)) ((c def c (c (? . 9) q foldr)) q (18588 . 5)) ((c def c (c (? . 10) q in-heap/consume!)) q (16936 . 3)) ((c def c (c (? . 3) q gvector?)) q (963 . 3)) ((c def c (c (? . 4) q gen:ordered-dict)) q (2447 . 2)) ((c def c (c (? . 9) q make-integer-set)) q (17193 . 3)) ((c def c (c (? . 0) q splay-tree-contract!)) q (6030 . 5)) ((c def c (c (? . 2) q interval-map-iterate-least)) q (13954 . 4)) ((c form c (c (? . 5) q delay/e)) q (28368 . 7)) ((c def c (c (? . 5) q set/e)) q (30480 . 3)) ((c def c (c (? . 9) q member?)) q (18414 . 4)) ((c def c (c (? . 7) q skip-list-iter-valid?)) q (10205 . 3)) ((c def c (c (? . 2) q interval-map-iterate-next)) q (13395 . 6)) ((c def c (c (? . 6) q enum?)) q (21138 . 3)) ((c def c (c (? . 1) q queue?)) q (543 . 3)) ((c def c (c (? . 3) q gvector-insert!)) q (1267 . 6)) ((c def c (c (? . 2) q interval-map-update*!)) q (11720 . 11)) ((c def c (c (? . 3) q vector->gvector)) q (2061 . 3)) ((c def c (c (? . 1) q queue-empty?)) q (484 . 3)) ((c def c (c (? . 0) q splay-tree-iterate-key)) q (5695 . 4)) ((c def c (c (? . 4) q dict-iterate-greatest/<?)) q (3146 . 5)) ((c def c (c (? . 4) q dict-iterate-greatest/<=?)) q (3284 . 5)) ((c def c (c (? . 10) q make-heap)) q (16007 . 3)) ((c def c (c (? . 7) q skip-list-iterate-first)) q (8792 . 3)) ((c def c (c (? . 4) q order-comparator)) q (3953 . 3)) ((c def c (c (? . 6) q pam/e)) q (23218 . 6)) ((c def c (c (? . 11) q uf-same-set?)) q (20976 . 4)) ((c def c (c (? . 5) q listof/e)) q (27694 . 7)) ((c def c (c (? . 9) q union)) q (17972 . 4)) ((c def c (c (? . 0) q splay-tree-iterate-greatest/<?)) q (6757 . 5)) ((c def c (c (? . 5) q integer/e)) q (31661 . 2)) ((c def c (c (? . 0) q splay-tree-remove!)) q (5292 . 4)) ((c def c (c (? . 0) q make-splay-tree)) q (4330 . 7)) ((c def c (c (? . 1) q queue/c)) q (713 . 2)) ((c def c (c (? . 7) q skip-list-count)) q (8245 . 3)) ((c def c (c (? . 6) q flat-enum?)) q (21425 . 3)) ((c def c (c (? . 7) q skip-list-remove!)) q (8141 . 4)) ((c def c (c (? . 2) q interval-map-iterate-greatest/start<?)) q (14641 . 6)) ((c def c (c (? . 2) q interval-map-iterate-value)) q (13774 . 5)) ((c def c (c (? . 10) q heap-copy)) q (16884 . 3)) ((c def c (c (? . 5) q nat+/e)) q (29937 . 3)) ((c form c (c (? . 5) q cons/de)) q (26177 . 12)) ((c def c (c (? . 6) q natural/e)) q (22244 . 2)) ((c def c (c (? . 10) q heap->vector)) q (16827 . 3)) ((c def c (c (? . 9) q complement)) q (18176 . 5)) ((c def c (c (? . 3) q list->gvector)) q (2185 . 3)) ((c def c (c (? . 9) q get-integer)) q (18502 . 3)) ((c def c (c (? . 6) q two-way-enum?)) q (21307 . 3)) ((c def c (c (? . 0) q splay-tree-count)) q (5382 . 3)) ((c def c (c (? . 8) q bit-vector-set!)) q (19388 . 6)) ((c def c (c (? . 7) q skip-list->list)) q (10288 . 3)) ((c def c (c (? . 10) q heap-remove-min!)) q (16434 . 3)) ((c def c (c (? . 9) q split)) q (18060 . 4)) ((c def c (c (? . 8) q in-bit-vector)) q (19984 . 3)) ((c def c (c (? . 7) q skip-list-set!)) q (8013 . 5)) ((c def c (c (? . 4) q order-domain-contract)) q (4042 . 3)) ((c def c (c (? . 2) q interval-map-iterate-least/start>=?)) q (14423 . 6)) ((c def c (c (? . 6) q or/e)) q (23615 . 4)) ((c def c (c (? . 8) q bit-vector-ref)) q (19224 . 5)) ((c def c (c (? . 7) q skip-list-contract!)) q (8478 . 5)) ((c def c (c (? . 3) q gvector-remove!)) q (1675 . 5)) ((c def c (c (? . 10) q heap?)) q (16083 . 3)) ((c def c (c (? . 5) q listof-n/e)) q (28226 . 6)) ((c def c (c (? . 2) q interval-map-iterate-first)) q (13270 . 4)) ((c def c (c (? . 5) q fin/e)) q (29543 . 3)) ((c def c (c (? . 3) q gvector)) q (899 . 3)) ((c def c (c (? . 4) q dict-iterate-least/>?)) q (2875 . 5)) ((c def c (c (? . 6) q one-way-enum?)) q (21366 . 3)) ((c def c (c (? . 11) q uf-union!)) q (20901 . 4)) ((c def c (c (? . 7) q make-adjustable-skip-list)) q (7470 . 6)) ((c def c (c (? . 11) q uf-new)) q (20745 . 3)) ((c def c (c (? . 9) q integer-set?)) q (17464 . 3)) ((c def c (c (? . 11) q uf-set?)) q (20796 . 3)) ((c form c (c (? . 8) q for*/bit-vector)) q (20308 . 3)) ((c def c (c (? . 1) q queue-length)) q (407 . 3)) ((c def c (c (? . 6) q list/e)) q (25037 . 4)) ((c def c (c (? . 0) q splay-tree-iterate-next)) q (5564 . 4)) ((c def c (c (? . 10) q heap-add-all!)) q (16284 . 4)) ((c def c (c (? . 9) q count)) q (18816 . 3)) ((c def c (c (? . 7) q skip-list-iterate-least/>?)) q (9287 . 5)) ((c def c (c (? . 9) q partition)) q (18730 . 3)) ((c def c (c (? . 9) q make-range)) q (17584 . 7)) ((c def c (c (? . 0) q splay-tree-remove-range!)) q (5911 . 5)) ((c def c (c (? . 2) q interval-map-iterate-greatest/end<?)) q (15509 . 6)) ((c def c (c (? . 7) q skip-list-iterate-value)) q (9165 . 4)) ((c def c (c (? . 10) q heap-remove-eq!)) q (16639 . 4)) ((c def c (c (? . 8) q bit-vector?)) q (19167 . 3)) ((c def c (c (? . 7) q skip-list-iter?)) q (10144 . 3)) ((c def c (c (? . 1) q in-queue)) q (657 . 3)) ((c def c (c (? . 7) q skip-list-iterate-greatest)) q (10031 . 4)) ((c def c (c (? . 2) q interval-map-iterate-key)) q (13596 . 5)) ((c def c (c (? . 10) q heap-add!)) q (16208 . 4))))
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 q) -> (listof any/c)
  q : queue?
procedure
(queue-length q) -> exact-nonnegative-integer?
  q : 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 q) -> sequence?
  q : 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-ref/bounds  interval-map 
                          position     
                         [default])    
 -> (or/c #f exact-integer?)
    (or/c #f exact-integer?)
    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-iterate-least interval-map)
 -> (or/c interval-map-iter? #f)
  interval-map : interval-map?
procedure
(interval-map-iterate-greatest interval-map)
 -> (or/c interval-map-iter? #f)
  interval-map : interval-map?
procedure
(interval-map-iterate-least/start>? interval-map 
                                    start)       
 -> (or/c interval-map-iter? #f)
  interval-map : interval-map?
  start : exact-integer?
procedure
(interval-map-iterate-least/start>=? interval-map 
                                     start)       
 -> (or/c interval-map-iter? #f)
  interval-map : interval-map?
  start : exact-integer?
procedure
(interval-map-iterate-greatest/start<? interval-map 
                                       start)       
 -> (or/c interval-map-iter? #f)
  interval-map : interval-map?
  start : exact-integer?
procedure
(interval-map-iterate-greatest/start<=? interval-map 
                                        start)       
 -> (or/c interval-map-iter? #f)
  interval-map : interval-map?
  start : exact-integer?
procedure
(interval-map-iterate-least/end>? interval-map 
                                  end)         
 -> (or/c interval-map-iter? #f)
  interval-map : interval-map?
  end : exact-integer?
procedure
(interval-map-iterate-least/end>=? interval-map 
                                   end)         
 -> (or/c interval-map-iter? #f)
  interval-map : interval-map?
  end : exact-integer?
procedure
(interval-map-iterate-greatest/end<? interval-map 
                                     end)         
 -> (or/c interval-map-iter? #f)
  interval-map : interval-map?
  end : exact-integer?
procedure
(interval-map-iterate-greatest/end<=? interval-map 
                                      end)         
 -> (or/c interval-map-iter? #f)
  interval-map : interval-map?
  end : exact-integer?
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?]) -> boolean?
  h : heap?
  v : any/c
  same? : (-> any/c any/c any/c) = equal?
procedure
(heap-remove-eq! h v) -> boolean?
  h : heap?
  v : any/c
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 bv))))
  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? = (bit-vector-length bv)
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) -> contract?
  e : 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
(but-not/e big small) -> two-way-enum?
  big : two-way-enum?
  small : (and/c two-way-enum? flat-enum? finite-enum?)
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?)
