This is the anatevka Reference Manual, version 1.0.1, generated automatically by Declt version 4.0 beta 2 "William Riker" on Sun Dec 15 04:14:41 2024 GMT+0.
anatevka/anatevka.asd
anatevka/package.lisp
anatevka/utilities.lisp
anatevka/logger.lisp
anatevka/dryad-api.lisp
anatevka/node.lisp
anatevka/supervisor.lisp
anatevka/lock.lisp
anatevka/operations/scan.lisp
anatevka/operations/graft.lisp
anatevka/operations/augment.lisp
anatevka/operations/expand.lisp
anatevka/operations/contract.lisp
anatevka/operations/multireweight.lisp
anatevka/operations/reweight.lisp
anatevka/dryad.lisp
The main system appears first, followed by any subsystem dependency.
anatevka
A distributed blossom algorithm for minimum-weight perfect matching.
Eric Peterson <peterson.eric.c@gmail.com>
1.0.1
alexandria
(system).
aether
(system)., at least version "1.1.0"
package.lisp
(file).
utilities.lisp
(file).
logger.lisp
(file).
dryad-api.lisp
(file).
node.lisp
(file).
supervisor.lisp
(file).
lock.lisp
(file).
operations
(module).
dryad.lisp
(file).
Modules are listed depth-first from the system components tree.
anatevka/operations
lock.lisp
(file).
anatevka
(system).
scan.lisp
(file).
graft.lisp
(file).
augment.lisp
(file).
expand.lisp
(file).
contract.lisp
(file).
multireweight.lisp
(file).
reweight.lisp
(file).
Files are sorted by type and then listed depth-first from the systems components trees.
anatevka/anatevka.asd
anatevka/package.lisp
anatevka/utilities.lisp
anatevka/logger.lisp
anatevka/dryad-api.lisp
anatevka/node.lisp
anatevka/supervisor.lisp
anatevka/lock.lisp
anatevka/operations/scan.lisp
anatevka/operations/graft.lisp
anatevka/operations/augment.lisp
anatevka/operations/expand.lisp
anatevka/operations/contract.lisp
anatevka/operations/multireweight.lisp
anatevka/operations/reweight.lisp
anatevka/dryad.lisp
anatevka/utilities.lisp
package.lisp
(file).
anatevka
(system).
with-with
(macro).
->
(function).
(setf ->)
(function).
array-from-fn
(function).
discard-args
(function).
latest-common-head
(function).
make-bool
(function).
pick-randomly
(function).
pick-the-other
(function).
vnth
(function).
anatevka/logger.lisp
utilities.lisp
(file).
anatevka
(system).
print-log-entry
(method).
print-log-entry
(method).
print-log-entry
(method).
print-log-entry
(method).
reduce-log
(function).
successful-supervisors
(function).
anatevka/dryad-api.lisp
logger.lisp
(file).
anatevka
(system).
make-message-discover
(function).
make-message-discovery
(function).
make-message-reap
(function).
make-message-sow
(function).
make-message-sprout
(function).
make-message-wilt
(function).
make-message-wilting
(function).
message-discover
(structure).
message-discover-address
(reader).
(setf message-discover-address)
(writer).
message-discover-id
(reader).
(setf message-discover-id)
(writer).
message-discover-internal-weight
(reader).
(setf message-discover-internal-weight)
(writer).
message-discover-repeat?
(reader).
(setf message-discover-repeat?)
(writer).
message-discovery
(structure).
message-discovery-channels-to-try
(reader).
(setf message-discovery-channels-to-try)
(writer).
message-reap
(structure).
message-reap-ids
(reader).
(setf message-reap-ids)
(writer).
message-sow
(structure).
message-sow-id
(reader).
(setf message-sow-id)
(writer).
message-sprout
(structure).
message-sprout-address
(reader).
(setf message-sprout-address)
(writer).
message-wilt
(structure).
message-wilting
(structure).
message-wilting-address
(reader).
(setf message-wilting-address)
(writer).
copy-message-discover
(function).
copy-message-discovery
(function).
copy-message-reap
(function).
copy-message-sow
(function).
copy-message-sprout
(function).
copy-message-wilt
(function).
copy-message-wilting
(function).
message-discover-message-id
(function).
(setf message-discover-message-id)
(function).
message-discover-p
(function).
message-discover-reply-channel
(function).
(setf message-discover-reply-channel)
(function).
message-discovery-message-id
(function).
(setf message-discovery-message-id)
(function).
message-discovery-p
(function).
message-discovery-reply-channel
(function).
(setf message-discovery-reply-channel)
(function).
message-reap-message-id
(function).
(setf message-reap-message-id)
(function).
message-reap-p
(function).
message-reap-reply-channel
(function).
(setf message-reap-reply-channel)
(function).
message-sow-message-id
(function).
(setf message-sow-message-id)
(function).
message-sow-p
(function).
message-sow-reply-channel
(function).
(setf message-sow-reply-channel)
(function).
message-sprout-message-id
(function).
(setf message-sprout-message-id)
(function).
message-sprout-p
(function).
message-sprout-reply-channel
(function).
(setf message-sprout-reply-channel)
(function).
message-wilt-message-id
(function).
(setf message-wilt-message-id)
(function).
message-wilt-p
(function).
message-wilt-reply-channel
(function).
(setf message-wilt-reply-channel)
(function).
message-wilting-message-id
(function).
(setf message-wilting-message-id)
(function).
message-wilting-p
(function).
message-wilting-reply-channel
(function).
(setf message-wilting-reply-channel)
(function).
anatevka/node.lisp
dryad-api.lisp
(file).
anatevka
(system).
blossom-node
(class).
make-blossom-edge
(function).
min-id
(generic function).
print-object
(method).
print-object
(method).
vertex-vertex-distance
(generic function).
%make-blossom-edge
(function).
*blossom-node-clock-rate*
(special variable).
blossom-edge
(structure).
blossom-edge-p
(function).
blossom-edge-source-node
(reader).
(setf blossom-edge-source-node)
(writer).
blossom-edge-source-vertex
(reader).
(setf blossom-edge-source-vertex)
(writer).
blossom-edge-target-node
(reader).
(setf blossom-edge-target-node)
(writer).
blossom-edge-target-vertex
(reader).
(setf blossom-edge-target-vertex)
(writer).
blossom-node-children
(reader method).
(setf blossom-node-children)
(writer method).
blossom-node-dryad
(reader method).
(setf blossom-node-dryad)
(writer method).
blossom-node-held-by-roots
(reader method).
(setf blossom-node-held-by-roots)
(writer method).
blossom-node-id
(reader method).
(setf blossom-node-id)
(writer method).
blossom-node-internal-weight
(reader method).
(setf blossom-node-internal-weight)
(writer method).
blossom-node-match-edge
(reader method).
(setf blossom-node-match-edge)
(writer method).
blossom-node-parent
(reader method).
(setf blossom-node-parent)
(writer method).
blossom-node-paused?
(reader method).
(setf blossom-node-paused?)
(writer method).
blossom-node-petals
(reader method).
(setf blossom-node-petals)
(writer method).
blossom-node-pingable
(reader method).
(setf blossom-node-pingable)
(writer method).
blossom-node-pistil
(reader method).
(setf blossom-node-pistil)
(writer method).
blossom-node-positive?
(reader method).
(setf blossom-node-positive?)
(writer method).
blossom-node-wilting
(reader method).
(setf blossom-node-wilting)
(writer method).
copy-blossom-edge
(function).
copy-message-broadcast-pingability
(function).
copy-message-id-query
(function).
copy-message-push
(function).
copy-message-set
(function).
copy-message-values
(function).
edge=
(function).
find-even-arm
(function).
handle-message-broadcast-pingability
(method).
handle-message-id-query
(method).
handle-message-push
(method).
handle-message-set
(method).
handle-message-sprout-on-blossom
(method).
handle-message-values
(method).
handle-message-wilt
(method).
make-message-broadcast-pingability
(function).
make-message-id-query
(function).
make-message-push
(function).
make-message-set
(function).
make-message-values
(function).
message-broadcast-pingability
(structure).
message-broadcast-pingability-message-id
(function).
(setf message-broadcast-pingability-message-id)
(function).
message-broadcast-pingability-p
(function).
message-broadcast-pingability-ping-type
(reader).
(setf message-broadcast-pingability-ping-type)
(writer).
message-broadcast-pingability-reply-channel
(function).
(setf message-broadcast-pingability-reply-channel)
(function).
message-dispatch
(method).
message-id-query
(structure).
message-id-query-message-id
(function).
(setf message-id-query-message-id)
(function).
message-id-query-p
(function).
message-id-query-reply-channel
(function).
(setf message-id-query-reply-channel)
(function).
message-push
(structure).
message-push-message-id
(function).
(setf message-push-message-id)
(function).
message-push-p
(function).
message-push-reply-channel
(function).
(setf message-push-reply-channel)
(function).
message-push-slot
(reader).
(setf message-push-slot)
(writer).
message-push-value
(reader).
(setf message-push-value)
(writer).
message-set
(structure).
message-set-message-id
(function).
(setf message-set-message-id)
(function).
message-set-p
(function).
message-set-reply-channel
(function).
(setf message-set-reply-channel)
(function).
message-set-slots
(reader).
(setf message-set-slots)
(writer).
message-set-values
(reader).
(setf message-set-values)
(writer).
message-values
(structure).
message-values-message-id
(function).
(setf message-values-message-id)
(function).
message-values-p
(function).
message-values-reply-channel
(function).
(setf message-values-reply-channel)
(function).
message-values-values
(reader).
(setf message-values-values)
(writer).
ping-type
(type).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
reverse-blossom-edge
(function).
reverse-blossom-edges
(function).
vertex?
(function).
anatevka/supervisor.lisp
node.lisp
(file).
anatevka
(system).
copy-data-frame-supervisor
(function).
data-frame-supervisor
(structure).
data-frame-supervisor-p
(function).
data-frame-supervisor-pong
(reader).
(setf data-frame-supervisor-pong)
(writer).
make-data-frame-supervisor
(function).
message-dispatch
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
supervisor
(class).
supervisor-command-from-recommendation
(generic function).
supervisor-node-class
(reader method).
(setf supervisor-node-class)
(writer method).
anatevka/lock.lisp
supervisor.lisp
(file).
anatevka
(system).
handle-message-lock
(method).
process-lockable-targets
(method).
process-upkeep
(method).
process-upkeep
(method).
anatevka/operations/scan.lisp
operations
(module).
print-object
(method).
copy-data-frame-scan
(function).
copy-message-adjoin-root
(function).
copy-message-ping
(function).
copy-message-pong
(function).
copy-message-scan
(function).
copy-message-soft-adjoin-root
(function).
copy-message-soft-ping
(function).
copy-message-soft-scan
(function).
data-frame-scan
(structure).
data-frame-scan-children
(reader).
(setf data-frame-scan-children)
(writer).
data-frame-scan-internal-roots
(reader).
(setf data-frame-scan-internal-roots)
(writer).
data-frame-scan-local-blossom
(reader).
(setf data-frame-scan-local-blossom)
(writer).
data-frame-scan-local-root
(reader).
(setf data-frame-scan-local-root)
(writer).
data-frame-scan-local-weight
(reader).
(setf data-frame-scan-local-weight)
(writer).
data-frame-scan-p
(function).
data-frame-scan-petals
(reader).
(setf data-frame-scan-petals)
(writer).
data-frame-scan-pong
(reader).
(setf data-frame-scan-pong)
(writer).
data-frame-scan-repeat?
(reader).
(setf data-frame-scan-repeat?)
(writer).
data-frame-scan-soft?
(reader).
(setf data-frame-scan-soft?)
(writer).
data-frame-scan-vertices
(reader).
(setf data-frame-scan-vertices)
(writer).
data-frame-scan-weight
(reader).
(setf data-frame-scan-weight)
(writer).
handle-message-adjoin-root
(method).
handle-message-ping
(method).
handle-message-scan
(method).
make-data-frame-scan
(function).
make-message-adjoin-root
(function).
make-message-ping
(function).
make-message-pong
(function).
make-message-scan
(function).
make-message-soft-adjoin-root
(function).
make-message-soft-ping
(function).
make-message-soft-scan
(function).
make-pong
(method).
make-supervisor
(method).
message-adjoin-root
(structure).
message-adjoin-root-match-edge
(reader).
(setf message-adjoin-root-match-edge)
(writer).
message-adjoin-root-message-id
(function).
(setf message-adjoin-root-message-id)
(function).
message-adjoin-root-p
(function).
message-adjoin-root-ping
(reader).
(setf message-adjoin-root-ping)
(writer).
message-adjoin-root-pong
(reader).
(setf message-adjoin-root-pong)
(writer).
message-adjoin-root-positive?
(reader).
(setf message-adjoin-root-positive?)
(writer).
message-adjoin-root-reply-channel
(function).
(setf message-adjoin-root-reply-channel)
(function).
message-ping
(structure).
message-ping-blossom
(reader).
(setf message-ping-blossom)
(writer).
message-ping-id
(reader).
(setf message-ping-id)
(writer).
message-ping-internal-roots
(reader).
(setf message-ping-internal-roots)
(writer).
message-ping-message-id
(function).
(setf message-ping-message-id)
(function).
message-ping-p
(function).
message-ping-reply-channel
(function).
(setf message-ping-reply-channel)
(function).
message-ping-root
(reader).
(setf message-ping-root)
(writer).
message-ping-weight
(reader).
(setf message-ping-weight)
(writer).
message-pong
(structure).
message-pong-edges
(reader).
(setf message-pong-edges)
(writer).
message-pong-message-id
(function).
(setf message-pong-message-id)
(function).
message-pong-p
(function).
message-pong-recommendation
(reader).
(setf message-pong-recommendation)
(writer).
message-pong-reply-channel
(function).
(setf message-pong-reply-channel)
(function).
message-pong-root-bucket
(reader).
(setf message-pong-root-bucket)
(writer).
message-pong-source-id
(reader).
(setf message-pong-source-id)
(writer).
message-pong-source-root
(reader).
(setf message-pong-source-root)
(writer).
message-pong-target-root
(reader).
(setf message-pong-target-root)
(writer).
message-pong-weight
(reader).
(setf message-pong-weight)
(writer).
message-scan
(structure).
message-scan-internal-roots
(reader).
(setf message-scan-internal-roots)
(writer).
message-scan-local-blossom
(reader).
(setf message-scan-local-blossom)
(writer).
message-scan-local-root
(reader).
(setf message-scan-local-root)
(writer).
message-scan-message-id
(function).
(setf message-scan-message-id)
(function).
message-scan-p
(function).
message-scan-repeat?
(reader).
(setf message-scan-repeat?)
(writer).
message-scan-reply-channel
(function).
(setf message-scan-reply-channel)
(function).
message-scan-weight
(reader).
(setf message-scan-weight)
(writer).
message-soft-adjoin-root
(structure).
message-soft-adjoin-root-match-edge
(function).
(setf message-soft-adjoin-root-match-edge)
(function).
message-soft-adjoin-root-message-id
(function).
(setf message-soft-adjoin-root-message-id)
(function).
message-soft-adjoin-root-p
(function).
message-soft-adjoin-root-ping
(function).
(setf message-soft-adjoin-root-ping)
(function).
message-soft-adjoin-root-pong
(function).
(setf message-soft-adjoin-root-pong)
(function).
message-soft-adjoin-root-positive?
(function).
(setf message-soft-adjoin-root-positive?)
(function).
message-soft-adjoin-root-reply-channel
(function).
(setf message-soft-adjoin-root-reply-channel)
(function).
message-soft-ping
(structure).
message-soft-ping-blossom
(function).
(setf message-soft-ping-blossom)
(function).
message-soft-ping-id
(function).
(setf message-soft-ping-id)
(function).
message-soft-ping-internal-roots
(function).
(setf message-soft-ping-internal-roots)
(function).
message-soft-ping-message-id
(function).
(setf message-soft-ping-message-id)
(function).
message-soft-ping-p
(function).
message-soft-ping-reply-channel
(function).
(setf message-soft-ping-reply-channel)
(function).
message-soft-ping-root
(function).
(setf message-soft-ping-root)
(function).
message-soft-ping-weight
(function).
(setf message-soft-ping-weight)
(function).
message-soft-scan
(structure).
message-soft-scan-internal-roots
(function).
(setf message-soft-scan-internal-roots)
(function).
message-soft-scan-local-blossom
(function).
(setf message-soft-scan-local-blossom)
(function).
message-soft-scan-local-root
(function).
(setf message-soft-scan-local-root)
(function).
message-soft-scan-message-id
(function).
(setf message-soft-scan-message-id)
(function).
message-soft-scan-p
(function).
message-soft-scan-repeat?
(function).
(setf message-soft-scan-repeat?)
(function).
message-soft-scan-reply-channel
(function).
(setf message-soft-scan-reply-channel)
(function).
message-soft-scan-weight
(function).
(setf message-soft-scan-weight)
(function).
pong=
(function).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
recommend
(generic function).
unify-pongs
(method).
anatevka/operations/graft.lisp
scan.lisp
(file).
operations
(module).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
anatevka/operations/augment.lisp
graft.lisp
(file).
operations
(module).
copy-message-percolate
(function).
handle-message-percolate
(method).
make-message-percolate
(function).
message-percolate
(structure).
message-percolate-message-id
(function).
(setf message-percolate-message-id)
(function).
message-percolate-p
(function).
message-percolate-reply-channel
(function).
(setf message-percolate-reply-channel)
(function).
message-percolate-traversal-edge
(reader).
(setf message-percolate-traversal-edge)
(writer).
process-upkeep
(method).
process-upkeep
(method).
anatevka/operations/expand.lisp
augment.lisp
(file).
operations
(module).
copy-message-blossom-parent
(function).
copy-message-expand
(function).
copy-message-replace-child
(function).
handle-message-blossom-parent
(method).
handle-message-expand
(method).
handle-message-replace-child
(method).
make-message-blossom-parent
(function).
make-message-expand
(function).
make-message-replace-child
(function).
message-blossom-parent
(structure).
message-blossom-parent-message-id
(function).
(setf message-blossom-parent-message-id)
(function).
message-blossom-parent-p
(function).
message-blossom-parent-reply-channel
(function).
(setf message-blossom-parent-reply-channel)
(function).
message-blossom-parent-stop-before
(reader).
(setf message-blossom-parent-stop-before)
(writer).
message-expand
(structure).
message-expand-message-id
(function).
(setf message-expand-message-id)
(function).
message-expand-p
(function).
message-expand-reply-channel
(function).
(setf message-expand-reply-channel)
(function).
message-replace-child
(structure).
message-replace-child-message-id
(function).
(setf message-replace-child-message-id)
(function).
message-replace-child-new-child
(reader).
(setf message-replace-child-new-child)
(writer).
message-replace-child-old-child
(reader).
(setf message-replace-child-old-child)
(writer).
message-replace-child-p
(function).
message-replace-child-reply-channel
(function).
(setf message-replace-child-reply-channel)
(function).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
anatevka/operations/contract.lisp
expand.lisp
(file).
operations
(module).
copy-data-frame-contract
(function).
copy-message-attach-parent
(function).
copy-message-convert-child-to-petal
(function).
copy-message-reattach-cycle-child
(function).
copy-message-root-path
(function).
copy-message-set-up-blossom
(function).
data-frame-contract
(structure).
data-frame-contract-fresh-blossom
(reader).
(setf data-frame-contract-fresh-blossom)
(writer).
data-frame-contract-p
(function).
data-frame-contract-path
(reader).
(setf data-frame-contract-path)
(writer).
data-frame-contract-peduncle-edge
(reader).
(setf data-frame-contract-peduncle-edge)
(writer).
data-frame-contract-petal-child-edges
(reader).
(setf data-frame-contract-petal-child-edges)
(writer).
data-frame-contract-pong
(reader).
(setf data-frame-contract-pong)
(writer).
data-frame-contract-stowed-rx-latch
(reader).
(setf data-frame-contract-stowed-rx-latch)
(writer).
data-frame-contract-stowed-tx-latch
(reader).
(setf data-frame-contract-stowed-tx-latch)
(writer).
handle-message-attach-parent
(method).
handle-message-convert-child-to-petal
(method).
handle-message-reattach-cycle-child
(method).
handle-message-root-path
(method).
handle-message-set-up-blossom
(method).
make-data-frame-contract
(function).
make-message-attach-parent
(function).
make-message-convert-child-to-petal
(function).
make-message-reattach-cycle-child
(function).
make-message-root-path
(function).
make-message-set-up-blossom
(function).
message-attach-parent
(structure).
message-attach-parent-fresh-blossom
(reader).
(setf message-attach-parent-fresh-blossom)
(writer).
message-attach-parent-message-id
(function).
(setf message-attach-parent-message-id)
(function).
message-attach-parent-p
(function).
message-attach-parent-peduncle-edge
(reader).
(setf message-attach-parent-peduncle-edge)
(writer).
message-attach-parent-reply-channel
(function).
(setf message-attach-parent-reply-channel)
(function).
message-convert-child-to-petal
(structure).
message-convert-child-to-petal-fresh-blossom
(reader).
(setf message-convert-child-to-petal-fresh-blossom)
(writer).
message-convert-child-to-petal-message-id
(function).
(setf message-convert-child-to-petal-message-id)
(function).
message-convert-child-to-petal-p
(function).
message-convert-child-to-petal-reply-channel
(function).
(setf message-convert-child-to-petal-reply-channel)
(function).
message-reattach-cycle-child
(structure).
message-reattach-cycle-child-fresh-blossom
(reader).
(setf message-reattach-cycle-child-fresh-blossom)
(writer).
message-reattach-cycle-child-message-id
(function).
(setf message-reattach-cycle-child-message-id)
(function).
message-reattach-cycle-child-p
(function).
message-reattach-cycle-child-reply-channel
(function).
(setf message-reattach-cycle-child-reply-channel)
(function).
message-root-path
(structure).
message-root-path-message-id
(function).
(setf message-root-path-message-id)
(function).
message-root-path-p
(function).
message-root-path-path
(reader).
(setf message-root-path-path)
(writer).
message-root-path-reply-channel
(function).
(setf message-root-path-reply-channel)
(function).
message-set-up-blossom
(structure).
message-set-up-blossom-message-id
(function).
(setf message-set-up-blossom-message-id)
(function).
message-set-up-blossom-p
(function).
message-set-up-blossom-peduncle-edge
(reader).
(setf message-set-up-blossom-peduncle-edge)
(writer).
message-set-up-blossom-petal-children
(reader).
(setf message-set-up-blossom-petal-children)
(writer).
message-set-up-blossom-petals
(reader).
(setf message-set-up-blossom-petals)
(writer).
message-set-up-blossom-reply-channel
(function).
(setf message-set-up-blossom-reply-channel)
(function).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
anatevka/operations/multireweight.lisp
contract.lisp
(file).
operations
(module).
address-union
(function).
copy-data-frame-multireweight
(function).
copy-message-convergecast-collect-roots
(function).
data-frame-multireweight
(structure).
data-frame-multireweight-hold-cluster
(reader).
(setf data-frame-multireweight-hold-cluster)
(writer).
data-frame-multireweight-internal-pong
(reader).
(setf data-frame-multireweight-internal-pong)
(writer).
data-frame-multireweight-p
(function).
handle-message-convergecast-collect-roots
(method).
make-data-frame-multireweight
(function).
make-message-convergecast-collect-roots
(function).
message-convergecast-collect-roots
(structure).
message-convergecast-collect-roots-hold-cluster
(reader).
(setf message-convergecast-collect-roots-hold-cluster)
(writer).
message-convergecast-collect-roots-message-id
(function).
(setf message-convergecast-collect-roots-message-id)
(function).
message-convergecast-collect-roots-p
(function).
message-convergecast-collect-roots-reply-channel
(function).
(setf message-convergecast-collect-roots-reply-channel)
(function).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
anatevka/operations/reweight.lisp
multireweight.lisp
(file).
operations
(module).
copy-message-broadcast-reweight
(function).
handle-message-broadcast-reweight
(method).
make-message-broadcast-reweight
(function).
message-broadcast-reweight
(structure).
message-broadcast-reweight-message-id
(function).
(setf message-broadcast-reweight-message-id)
(function).
message-broadcast-reweight-p
(function).
message-broadcast-reweight-reply-channel
(function).
(setf message-broadcast-reweight-reply-channel)
(function).
message-broadcast-reweight-weight
(reader).
(setf message-broadcast-reweight-weight)
(writer).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
anatevka/dryad.lisp
operations
(module).
anatevka
(system).
*dryad-default-clock-rate*
(special variable).
dryad
(class).
dryad-ids
(reader method).
(setf dryad-ids)
(writer method).
dryad-match-address
(reader method).
(setf dryad-match-address)
(writer method).
dryad-sprouted?
(reader method).
(setf dryad-sprouted?)
(writer method).
handler-message-discover
(method).
handler-message-sow
(method).
handler-message-sprout
(method).
handler-message-wilting
(method).
message-dispatch
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
process-upkeep
(method).
Packages are listed by definition order.
anatevka
aether
.
common-lisp
.
*dryad-default-clock-rate*
(special variable).
blossom-node
(class).
dryad
(class).
dryad-ids
(generic reader).
(setf dryad-ids)
(generic writer).
dryad-match-address
(generic reader).
(setf dryad-match-address)
(generic writer).
dryad-sprouted?
(generic reader).
(setf dryad-sprouted?)
(generic writer).
make-blossom-edge
(function).
make-message-discover
(function).
make-message-discovery
(function).
make-message-reap
(function).
make-message-sow
(function).
make-message-sprout
(function).
make-message-wilt
(function).
make-message-wilting
(function).
message-discover
(structure).
message-discover-address
(reader).
(setf message-discover-address)
(writer).
message-discover-id
(reader).
(setf message-discover-id)
(writer).
message-discover-internal-weight
(reader).
(setf message-discover-internal-weight)
(writer).
message-discover-repeat?
(reader).
(setf message-discover-repeat?)
(writer).
message-discovery
(structure).
message-discovery-channels-to-try
(reader).
(setf message-discovery-channels-to-try)
(writer).
message-reap
(structure).
message-reap-ids
(reader).
(setf message-reap-ids)
(writer).
message-sow
(structure).
message-sow-id
(reader).
(setf message-sow-id)
(writer).
message-sprout
(structure).
message-sprout-address
(reader).
(setf message-sprout-address)
(writer).
message-wilt
(structure).
message-wilting
(structure).
message-wilting-address
(reader).
(setf message-wilting-address)
(writer).
min-id
(generic function).
vertex-vertex-distance
(generic function).
with-with
(macro).
%make-blossom-edge
(function).
*blossom-node-clock-rate*
(special variable).
->
(function).
(setf ->)
(function).
address-union
(function).
array-from-fn
(function).
blossom-edge
(structure).
blossom-edge-p
(function).
blossom-edge-source-node
(reader).
(setf blossom-edge-source-node)
(writer).
blossom-edge-source-vertex
(reader).
(setf blossom-edge-source-vertex)
(writer).
blossom-edge-target-node
(reader).
(setf blossom-edge-target-node)
(writer).
blossom-edge-target-vertex
(reader).
(setf blossom-edge-target-vertex)
(writer).
blossom-node-children
(generic reader).
(setf blossom-node-children)
(generic writer).
blossom-node-dryad
(generic reader).
(setf blossom-node-dryad)
(generic writer).
blossom-node-held-by-roots
(generic reader).
(setf blossom-node-held-by-roots)
(generic writer).
blossom-node-id
(generic reader).
(setf blossom-node-id)
(generic writer).
blossom-node-internal-weight
(generic reader).
(setf blossom-node-internal-weight)
(generic writer).
blossom-node-match-edge
(generic reader).
(setf blossom-node-match-edge)
(generic writer).
blossom-node-parent
(generic reader).
(setf blossom-node-parent)
(generic writer).
blossom-node-paused?
(generic reader).
(setf blossom-node-paused?)
(generic writer).
blossom-node-petals
(generic reader).
(setf blossom-node-petals)
(generic writer).
blossom-node-pingable
(generic reader).
(setf blossom-node-pingable)
(generic writer).
blossom-node-pistil
(generic reader).
(setf blossom-node-pistil)
(generic writer).
blossom-node-positive?
(generic reader).
(setf blossom-node-positive?)
(generic writer).
blossom-node-wilting
(generic reader).
(setf blossom-node-wilting)
(generic writer).
copy-blossom-edge
(function).
copy-data-frame-contract
(function).
copy-data-frame-multireweight
(function).
copy-data-frame-scan
(function).
copy-data-frame-supervisor
(function).
copy-message-adjoin-root
(function).
copy-message-attach-parent
(function).
copy-message-blossom-parent
(function).
copy-message-broadcast-pingability
(function).
copy-message-broadcast-reweight
(function).
copy-message-convergecast-collect-roots
(function).
copy-message-convert-child-to-petal
(function).
copy-message-discover
(function).
copy-message-discovery
(function).
copy-message-expand
(function).
copy-message-id-query
(function).
copy-message-percolate
(function).
copy-message-ping
(function).
copy-message-pong
(function).
copy-message-push
(function).
copy-message-reap
(function).
copy-message-reattach-cycle-child
(function).
copy-message-replace-child
(function).
copy-message-root-path
(function).
copy-message-scan
(function).
copy-message-set
(function).
copy-message-set-up-blossom
(function).
copy-message-soft-adjoin-root
(function).
copy-message-soft-ping
(function).
copy-message-soft-scan
(function).
copy-message-sow
(function).
copy-message-sprout
(function).
copy-message-values
(function).
copy-message-wilt
(function).
copy-message-wilting
(function).
data-frame-contract
(structure).
data-frame-contract-fresh-blossom
(reader).
(setf data-frame-contract-fresh-blossom)
(writer).
data-frame-contract-p
(function).
data-frame-contract-path
(reader).
(setf data-frame-contract-path)
(writer).
data-frame-contract-peduncle-edge
(reader).
(setf data-frame-contract-peduncle-edge)
(writer).
data-frame-contract-petal-child-edges
(reader).
(setf data-frame-contract-petal-child-edges)
(writer).
data-frame-contract-pong
(reader).
(setf data-frame-contract-pong)
(writer).
data-frame-contract-stowed-rx-latch
(reader).
(setf data-frame-contract-stowed-rx-latch)
(writer).
data-frame-contract-stowed-tx-latch
(reader).
(setf data-frame-contract-stowed-tx-latch)
(writer).
data-frame-multireweight
(structure).
data-frame-multireweight-hold-cluster
(reader).
(setf data-frame-multireweight-hold-cluster)
(writer).
data-frame-multireweight-internal-pong
(reader).
(setf data-frame-multireweight-internal-pong)
(writer).
data-frame-multireweight-p
(function).
data-frame-scan
(structure).
data-frame-scan-children
(reader).
(setf data-frame-scan-children)
(writer).
data-frame-scan-internal-roots
(reader).
(setf data-frame-scan-internal-roots)
(writer).
data-frame-scan-local-blossom
(reader).
(setf data-frame-scan-local-blossom)
(writer).
data-frame-scan-local-root
(reader).
(setf data-frame-scan-local-root)
(writer).
data-frame-scan-local-weight
(reader).
(setf data-frame-scan-local-weight)
(writer).
data-frame-scan-p
(function).
data-frame-scan-petals
(reader).
(setf data-frame-scan-petals)
(writer).
data-frame-scan-pong
(reader).
(setf data-frame-scan-pong)
(writer).
data-frame-scan-repeat?
(reader).
(setf data-frame-scan-repeat?)
(writer).
data-frame-scan-soft?
(reader).
(setf data-frame-scan-soft?)
(writer).
data-frame-scan-vertices
(reader).
(setf data-frame-scan-vertices)
(writer).
data-frame-scan-weight
(reader).
(setf data-frame-scan-weight)
(writer).
data-frame-supervisor
(structure).
data-frame-supervisor-p
(function).
data-frame-supervisor-pong
(reader).
(setf data-frame-supervisor-pong)
(writer).
discard-args
(function).
edge=
(function).
find-even-arm
(function).
handle-message-adjoin-root
(generic function).
handle-message-attach-parent
(generic function).
handle-message-blossom-parent
(generic function).
handle-message-broadcast-pingability
(generic function).
handle-message-broadcast-reweight
(generic function).
handle-message-convergecast-collect-roots
(generic function).
handle-message-convert-child-to-petal
(generic function).
handle-message-expand
(generic function).
handle-message-id-query
(generic function).
handle-message-percolate
(generic function).
handle-message-ping
(generic function).
handle-message-push
(generic function).
handle-message-reattach-cycle-child
(generic function).
handle-message-replace-child
(generic function).
handle-message-root-path
(generic function).
handle-message-scan
(generic function).
handle-message-set
(generic function).
handle-message-set-up-blossom
(generic function).
handle-message-sprout-on-blossom
(generic function).
handle-message-values
(generic function).
handle-message-wilt
(generic function).
handler-message-discover
(generic function).
handler-message-sow
(generic function).
handler-message-sprout
(generic function).
handler-message-wilting
(generic function).
latest-common-head
(function).
make-bool
(function).
make-data-frame-contract
(function).
make-data-frame-multireweight
(function).
make-data-frame-scan
(function).
make-data-frame-supervisor
(function).
make-message-adjoin-root
(function).
make-message-attach-parent
(function).
make-message-blossom-parent
(function).
make-message-broadcast-pingability
(function).
make-message-broadcast-reweight
(function).
make-message-convergecast-collect-roots
(function).
make-message-convert-child-to-petal
(function).
make-message-expand
(function).
make-message-id-query
(function).
make-message-percolate
(function).
make-message-ping
(function).
make-message-pong
(function).
make-message-push
(function).
make-message-reattach-cycle-child
(function).
make-message-replace-child
(function).
make-message-root-path
(function).
make-message-scan
(function).
make-message-set
(function).
make-message-set-up-blossom
(function).
make-message-soft-adjoin-root
(function).
make-message-soft-ping
(function).
make-message-soft-scan
(function).
make-message-values
(function).
make-pong
(generic function).
make-supervisor
(generic function).
message-adjoin-root
(structure).
message-adjoin-root-match-edge
(reader).
(setf message-adjoin-root-match-edge)
(writer).
message-adjoin-root-message-id
(function).
(setf message-adjoin-root-message-id)
(function).
message-adjoin-root-p
(function).
message-adjoin-root-ping
(reader).
(setf message-adjoin-root-ping)
(writer).
message-adjoin-root-pong
(reader).
(setf message-adjoin-root-pong)
(writer).
message-adjoin-root-positive?
(reader).
(setf message-adjoin-root-positive?)
(writer).
message-adjoin-root-reply-channel
(function).
(setf message-adjoin-root-reply-channel)
(function).
message-attach-parent
(structure).
message-attach-parent-fresh-blossom
(reader).
(setf message-attach-parent-fresh-blossom)
(writer).
message-attach-parent-message-id
(function).
(setf message-attach-parent-message-id)
(function).
message-attach-parent-p
(function).
message-attach-parent-peduncle-edge
(reader).
(setf message-attach-parent-peduncle-edge)
(writer).
message-attach-parent-reply-channel
(function).
(setf message-attach-parent-reply-channel)
(function).
message-blossom-parent
(structure).
message-blossom-parent-message-id
(function).
(setf message-blossom-parent-message-id)
(function).
message-blossom-parent-p
(function).
message-blossom-parent-reply-channel
(function).
(setf message-blossom-parent-reply-channel)
(function).
message-blossom-parent-stop-before
(reader).
(setf message-blossom-parent-stop-before)
(writer).
message-broadcast-pingability
(structure).
message-broadcast-pingability-message-id
(function).
(setf message-broadcast-pingability-message-id)
(function).
message-broadcast-pingability-p
(function).
message-broadcast-pingability-ping-type
(reader).
(setf message-broadcast-pingability-ping-type)
(writer).
message-broadcast-pingability-reply-channel
(function).
(setf message-broadcast-pingability-reply-channel)
(function).
message-broadcast-reweight
(structure).
message-broadcast-reweight-message-id
(function).
(setf message-broadcast-reweight-message-id)
(function).
message-broadcast-reweight-p
(function).
message-broadcast-reweight-reply-channel
(function).
(setf message-broadcast-reweight-reply-channel)
(function).
message-broadcast-reweight-weight
(reader).
(setf message-broadcast-reweight-weight)
(writer).
message-convergecast-collect-roots
(structure).
message-convergecast-collect-roots-hold-cluster
(reader).
(setf message-convergecast-collect-roots-hold-cluster)
(writer).
message-convergecast-collect-roots-message-id
(function).
(setf message-convergecast-collect-roots-message-id)
(function).
message-convergecast-collect-roots-p
(function).
message-convergecast-collect-roots-reply-channel
(function).
(setf message-convergecast-collect-roots-reply-channel)
(function).
message-convert-child-to-petal
(structure).
message-convert-child-to-petal-fresh-blossom
(reader).
(setf message-convert-child-to-petal-fresh-blossom)
(writer).
message-convert-child-to-petal-message-id
(function).
(setf message-convert-child-to-petal-message-id)
(function).
message-convert-child-to-petal-p
(function).
message-convert-child-to-petal-reply-channel
(function).
(setf message-convert-child-to-petal-reply-channel)
(function).
message-discover-message-id
(function).
(setf message-discover-message-id)
(function).
message-discover-p
(function).
message-discover-reply-channel
(function).
(setf message-discover-reply-channel)
(function).
message-discovery-message-id
(function).
(setf message-discovery-message-id)
(function).
message-discovery-p
(function).
message-discovery-reply-channel
(function).
(setf message-discovery-reply-channel)
(function).
message-expand
(structure).
message-expand-message-id
(function).
(setf message-expand-message-id)
(function).
message-expand-p
(function).
message-expand-reply-channel
(function).
(setf message-expand-reply-channel)
(function).
message-id-query
(structure).
message-id-query-message-id
(function).
(setf message-id-query-message-id)
(function).
message-id-query-p
(function).
message-id-query-reply-channel
(function).
(setf message-id-query-reply-channel)
(function).
message-percolate
(structure).
message-percolate-message-id
(function).
(setf message-percolate-message-id)
(function).
message-percolate-p
(function).
message-percolate-reply-channel
(function).
(setf message-percolate-reply-channel)
(function).
message-percolate-traversal-edge
(reader).
(setf message-percolate-traversal-edge)
(writer).
message-ping
(structure).
message-ping-blossom
(reader).
(setf message-ping-blossom)
(writer).
message-ping-id
(reader).
(setf message-ping-id)
(writer).
message-ping-internal-roots
(reader).
(setf message-ping-internal-roots)
(writer).
message-ping-message-id
(function).
(setf message-ping-message-id)
(function).
message-ping-p
(function).
message-ping-reply-channel
(function).
(setf message-ping-reply-channel)
(function).
message-ping-root
(reader).
(setf message-ping-root)
(writer).
message-ping-weight
(reader).
(setf message-ping-weight)
(writer).
message-pong
(structure).
message-pong-edges
(reader).
(setf message-pong-edges)
(writer).
message-pong-message-id
(function).
(setf message-pong-message-id)
(function).
message-pong-p
(function).
message-pong-recommendation
(reader).
(setf message-pong-recommendation)
(writer).
message-pong-reply-channel
(function).
(setf message-pong-reply-channel)
(function).
message-pong-root-bucket
(reader).
(setf message-pong-root-bucket)
(writer).
message-pong-source-id
(reader).
(setf message-pong-source-id)
(writer).
message-pong-source-root
(reader).
(setf message-pong-source-root)
(writer).
message-pong-target-root
(reader).
(setf message-pong-target-root)
(writer).
message-pong-weight
(reader).
(setf message-pong-weight)
(writer).
message-push
(structure).
message-push-message-id
(function).
(setf message-push-message-id)
(function).
message-push-p
(function).
message-push-reply-channel
(function).
(setf message-push-reply-channel)
(function).
message-push-slot
(reader).
(setf message-push-slot)
(writer).
message-push-value
(reader).
(setf message-push-value)
(writer).
message-reap-message-id
(function).
(setf message-reap-message-id)
(function).
message-reap-p
(function).
message-reap-reply-channel
(function).
(setf message-reap-reply-channel)
(function).
message-reattach-cycle-child
(structure).
message-reattach-cycle-child-fresh-blossom
(reader).
(setf message-reattach-cycle-child-fresh-blossom)
(writer).
message-reattach-cycle-child-message-id
(function).
(setf message-reattach-cycle-child-message-id)
(function).
message-reattach-cycle-child-p
(function).
message-reattach-cycle-child-reply-channel
(function).
(setf message-reattach-cycle-child-reply-channel)
(function).
message-replace-child
(structure).
message-replace-child-message-id
(function).
(setf message-replace-child-message-id)
(function).
message-replace-child-new-child
(reader).
(setf message-replace-child-new-child)
(writer).
message-replace-child-old-child
(reader).
(setf message-replace-child-old-child)
(writer).
message-replace-child-p
(function).
message-replace-child-reply-channel
(function).
(setf message-replace-child-reply-channel)
(function).
message-root-path
(structure).
message-root-path-message-id
(function).
(setf message-root-path-message-id)
(function).
message-root-path-p
(function).
message-root-path-path
(reader).
(setf message-root-path-path)
(writer).
message-root-path-reply-channel
(function).
(setf message-root-path-reply-channel)
(function).
message-scan
(structure).
message-scan-internal-roots
(reader).
(setf message-scan-internal-roots)
(writer).
message-scan-local-blossom
(reader).
(setf message-scan-local-blossom)
(writer).
message-scan-local-root
(reader).
(setf message-scan-local-root)
(writer).
message-scan-message-id
(function).
(setf message-scan-message-id)
(function).
message-scan-p
(function).
message-scan-repeat?
(reader).
(setf message-scan-repeat?)
(writer).
message-scan-reply-channel
(function).
(setf message-scan-reply-channel)
(function).
message-scan-weight
(reader).
(setf message-scan-weight)
(writer).
message-set
(structure).
message-set-message-id
(function).
(setf message-set-message-id)
(function).
message-set-p
(function).
message-set-reply-channel
(function).
(setf message-set-reply-channel)
(function).
message-set-slots
(reader).
(setf message-set-slots)
(writer).
message-set-up-blossom
(structure).
message-set-up-blossom-message-id
(function).
(setf message-set-up-blossom-message-id)
(function).
message-set-up-blossom-p
(function).
message-set-up-blossom-peduncle-edge
(reader).
(setf message-set-up-blossom-peduncle-edge)
(writer).
message-set-up-blossom-petal-children
(reader).
(setf message-set-up-blossom-petal-children)
(writer).
message-set-up-blossom-petals
(reader).
(setf message-set-up-blossom-petals)
(writer).
message-set-up-blossom-reply-channel
(function).
(setf message-set-up-blossom-reply-channel)
(function).
message-set-values
(reader).
(setf message-set-values)
(writer).
message-soft-adjoin-root
(structure).
message-soft-adjoin-root-match-edge
(function).
(setf message-soft-adjoin-root-match-edge)
(function).
message-soft-adjoin-root-message-id
(function).
(setf message-soft-adjoin-root-message-id)
(function).
message-soft-adjoin-root-p
(function).
message-soft-adjoin-root-ping
(function).
(setf message-soft-adjoin-root-ping)
(function).
message-soft-adjoin-root-pong
(function).
(setf message-soft-adjoin-root-pong)
(function).
message-soft-adjoin-root-positive?
(function).
(setf message-soft-adjoin-root-positive?)
(function).
message-soft-adjoin-root-reply-channel
(function).
(setf message-soft-adjoin-root-reply-channel)
(function).
message-soft-ping
(structure).
message-soft-ping-blossom
(function).
(setf message-soft-ping-blossom)
(function).
message-soft-ping-id
(function).
(setf message-soft-ping-id)
(function).
message-soft-ping-internal-roots
(function).
(setf message-soft-ping-internal-roots)
(function).
message-soft-ping-message-id
(function).
(setf message-soft-ping-message-id)
(function).
message-soft-ping-p
(function).
message-soft-ping-reply-channel
(function).
(setf message-soft-ping-reply-channel)
(function).
message-soft-ping-root
(function).
(setf message-soft-ping-root)
(function).
message-soft-ping-weight
(function).
(setf message-soft-ping-weight)
(function).
message-soft-scan
(structure).
message-soft-scan-internal-roots
(function).
(setf message-soft-scan-internal-roots)
(function).
message-soft-scan-local-blossom
(function).
(setf message-soft-scan-local-blossom)
(function).
message-soft-scan-local-root
(function).
(setf message-soft-scan-local-root)
(function).
message-soft-scan-message-id
(function).
(setf message-soft-scan-message-id)
(function).
message-soft-scan-p
(function).
message-soft-scan-repeat?
(function).
(setf message-soft-scan-repeat?)
(function).
message-soft-scan-reply-channel
(function).
(setf message-soft-scan-reply-channel)
(function).
message-soft-scan-weight
(function).
(setf message-soft-scan-weight)
(function).
message-sow-message-id
(function).
(setf message-sow-message-id)
(function).
message-sow-p
(function).
message-sow-reply-channel
(function).
(setf message-sow-reply-channel)
(function).
message-sprout-message-id
(function).
(setf message-sprout-message-id)
(function).
message-sprout-p
(function).
message-sprout-reply-channel
(function).
(setf message-sprout-reply-channel)
(function).
message-values
(structure).
message-values-message-id
(function).
(setf message-values-message-id)
(function).
message-values-p
(function).
message-values-reply-channel
(function).
(setf message-values-reply-channel)
(function).
message-values-values
(reader).
(setf message-values-values)
(writer).
message-wilt-message-id
(function).
(setf message-wilt-message-id)
(function).
message-wilt-p
(function).
message-wilt-reply-channel
(function).
(setf message-wilt-reply-channel)
(function).
message-wilting-message-id
(function).
(setf message-wilting-message-id)
(function).
message-wilting-p
(function).
message-wilting-reply-channel
(function).
(setf message-wilting-reply-channel)
(function).
pick-randomly
(function).
pick-the-other
(function).
ping-type
(type).
pong=
(function).
print-log-entry
(generic function).
recommend
(generic function).
reduce-log
(function).
reverse-blossom-edge
(function).
reverse-blossom-edges
(function).
successful-supervisors
(function).
supervisor
(class).
supervisor-command-from-recommendation
(generic function).
supervisor-node-class
(generic reader).
(setf supervisor-node-class)
(generic writer).
unify-pongs
(generic function).
vertex?
(function).
vnth
(function).
Definitions are sorted by export status, category, package, and then by lexicographic order.
Permits the chaining of context macros via WITH-DESIGNATORS.
id
.
ids
.
id
.
Computes the smaller of two IDs.
Returns the distance between the blossom vertex with ID given by ID-V and that with ID given by ID-W.
blossom-node
) (message message-lock
) now) ¶Prepares a BLOSSOM-NODE to be locked.
aether
.
blossom-node
) stream) ¶message-pong
) stream) ¶Convenience printing for PONGs.
blossom-edge
) stream) ¶blossom-node
)) ¶aether
.
Sent from a blossom process to a ‘DRYAD’ to query for a list of other blossom processes to which it should send PINGs.
The response to a DISCOVER message.
CHANNELS-TO-TRY: The addresses to send PINGs to.
message
.
list
Reported by a ‘DRYAD’ to its ‘MATCH-ADDRESS’ with a pair of IDs that participate in the calculated matching.
message
.
list
Instructs a ‘DRYAD’ to inject a new vertex with the indicated id.
message
.
Whenever a vertex participates in an augmentation, we are guaranteed that it has been assigned a match (possibly after any parent blossom undergoes expansion). Upon augmentation, it sends this message to the DRYAD to indicate that it no longer need consider this vertex to be "live".
message
.
aether
.
aether:address
An instruction to a ‘BLOSSOM-NODE’ to cease operation as a process.
message
.
When a ‘BLOSSOM-NODE’ wilts, it notifies its parent ‘DRYAD’ to remove it from consideration.
message
.
aether
.
aether:address
Embodies a blossom in the blossom algorithm.
process-lockable
.
(setf blossom-node-children)
.
blossom-node-children
.
(setf blossom-node-dryad)
.
blossom-node-dryad
.
(setf blossom-node-held-by-roots)
.
blossom-node-held-by-roots
.
(setf blossom-node-id)
.
blossom-node-id
.
(setf blossom-node-internal-weight)
.
blossom-node-internal-weight
.
(setf blossom-node-match-edge)
.
blossom-node-match-edge
.
(setf blossom-node-parent)
.
blossom-node-parent
.
(setf blossom-node-paused?)
.
blossom-node-paused?
.
(setf blossom-node-petals)
.
blossom-node-petals
.
(setf blossom-node-pingable)
.
blossom-node-pingable
.
(setf blossom-node-pistil)
.
blossom-node-pistil
.
(setf blossom-node-positive?)
.
blossom-node-positive?
.
(setf blossom-node-wilting)
.
blossom-node-wilting
.
handle-message-adjoin-root
.
handle-message-attach-parent
.
handle-message-blossom-parent
.
handle-message-broadcast-pingability
.
handle-message-broadcast-reweight
.
handle-message-convergecast-collect-roots
.
handle-message-convert-child-to-petal
.
handle-message-expand
.
handle-message-id-query
.
handle-message-lock
.
handle-message-percolate
.
handle-message-ping
.
handle-message-push
.
handle-message-reattach-cycle-child
.
handle-message-replace-child
.
handle-message-root-path
.
handle-message-scan
.
handle-message-set
.
handle-message-set-up-blossom
.
handle-message-sprout-on-blossom
.
handle-message-values
.
handle-message-wilt
.
make-pong
.
make-supervisor
.
message-dispatch
.
print-object
.
process-lockable-targets
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
recommend
.
Number of blossom actions per unit of simulation time. Overrides the parent slot provided by PROCESS.
aether
.
anatevka::*blossom-node-clock-rate*
The address of the host DRYAD.
(or null aether:address)
:dryad
Used by message handler guards to determine whether this process is currently servicing PING requests. SOFT-PINGs are serviced when set to :SOFT or :ALL, PINGs are serviced when set to :ALL, nothing is serviced when set to :NONE.
anatevka::ping-type
(quote :all)
If T, BLOSSOM-NODE has lost the will to live.
boolean
:wilting
If T, do not start a new scan.
boolean
:paused?
Internal name for this blossom node. Used by VERTEX-VERTEX-DISTANCE to the edge weight in the graph.
:id
If this vertex is matched, point to the match.
(or null anatevka::blossom-edge)
:match-edge
The dual weight y_v in the algorithm.
real
0
:internal-weight
(Immediate) blossom that this vertex belongs to.
(or null aether:address)
:pistil
List of BLOSSOM-EDGEs. Runs through nodes in this blossom in cyclic order.
list
:petals
If this blossom is part of a nontrivial tree, point to parent.
(or null anatevka::blossom-edge)
:parent
If this blossom is part of a tree, these are its children.
list
:children
Parity of distance from root, as in C_2.
boolean
t
:positive?
LIST of ‘BLOSSOM-NODE’ roots who are causing us to ‘HOLD’.
list
:held-by-roots
PROCESS responsible for the injection and ejection of nodes from the blossom algorithm.
process-lockable
.
aether
.
anatevka:*dryad-default-clock-rate*
The ‘ADDRESS’ to which the ‘DRYAD’ will send REAP messages.
aether:address
:match-address
A map ADDRESS -> ID which records the id of a ‘BLOSSOM-NODE’ instance.
hash-table
(make-hash-table :hash-function (function aether:hash-address) :test (function aether:address=))
A map ADDRESS -> BOOLEAN which records whether a ‘BLOSSOM-NODE’ has begun participating in matches.
hash-table
(make-hash-table :hash-function (function aether:hash-address) :test (function aether:address=))
Determines the number of actions a blossom process takes per unit of simulation time. This is used to initialize (PROCESS-CLOCK-RATE BLOSSOM), offset so that it catches the eye.
Analogous to the C expression obj->slot1->slot2->...->slotn.
Analogous to the C expression obj->slot1->slot2->...->slotn = value.
Helper function for computing the union of two ‘LIST’s of ‘ADDRESS’es.
Initializes an array of a particular LENGTH (and with possible other ARRAY-INITARGS) by evaluating (FN J) for each position 0 <= J < LENGTH and storing the result at (AREF ARRAY J).
path
.
pong
.
pong
.
Converts NIL -> B’ to A’ -> B’ by discarding the input.
Given an odd-length list of items, stored as ‘CYCLE’, in which ‘START’ and ‘END’ appear, finds the even-length path connecting ‘START’ and (just before) ‘END’. To find this path, we make use of the ‘KEY’ and ‘TEST’ keyword arguments as inputs to the ‘POSITION’ function. Returns a VALUES triple: the even-length subpath, a boolean indicating whether the path proceeds in an opposite direction from that natural orientation of ‘CYCLE’ (i.e., if it proceeds from END to START), and the full cycle rotated to begin just after ‘END’ and potentially reversed to match the orientation of the subpath. If reversal is necessary, we use the function specified by the ‘REV’ keyword argument to reverse the ‘CYCLE’ and recurse to find the reverse paths.
For instance,
(find-even-arm (list 1 2 3 4 5 6 7) 5 3)
evalutes to
(5 4)
T
(3 2 1 7 6 5 4) .
Given a pair of lists
(A1 A2 ... An A(n+1) ... Am) and
(A1 A2 ... An B(n+1) ... Bl),
computes the pair
((An A(n+1) ... Am) (An B(n+1) ... Bl)).
Turns a generalized boolean into a boolean.
path
.
Picks uniformly randomly from a noncircular list.
Selects the "other" item from a pair.
Checks whether two PONGs recommend the same operation.
Trims log messages to only ones of primary interest.
(Nondestructively) reverses the directionality of EDGE.
(Nondestructively) reverses the directionality of a path of EDGEs.
Collects addresses of supervisors which either complete successfully or fail to complete at all.
Is NODE a VERTEX? (That is: does it have blossom children that it’s contracting?)
Like NTH, but for vectors.
blossom-node
)) ¶blossom-node
)) ¶If this blossom is part of a tree, these are its children.
blossom-node
)) ¶blossom-node
)) ¶The address of the host DRYAD.
blossom-node
)) ¶blossom-node
)) ¶LIST of ‘BLOSSOM-NODE’ roots who are causing us to ‘HOLD’.
blossom-node
)) ¶blossom-node
)) ¶Internal name for this blossom node. Used by VERTEX-VERTEX-DISTANCE to the edge weight in the graph.
blossom-node
)) ¶blossom-node
)) ¶The dual weight y_v in the algorithm.
blossom-node
)) ¶blossom-node
)) ¶If this vertex is matched, point to the match.
blossom-node
)) ¶blossom-node
)) ¶If this blossom is part of a nontrivial tree, point to parent.
blossom-node
)) ¶blossom-node
)) ¶If T, do not start a new scan.
blossom-node
)) ¶blossom-node
)) ¶List of BLOSSOM-EDGEs. Runs through nodes in this blossom in cyclic order.
blossom-node
)) ¶blossom-node
)) ¶Used by message handler guards to determine whether this process is currently servicing PING requests. SOFT-PINGs are serviced when set to :SOFT or :ALL, PINGs are serviced when set to :ALL, nothing is serviced when set to :NONE.
blossom-node
)) ¶blossom-node
)) ¶(Immediate) blossom that this vertex belongs to.
blossom-node
)) ¶blossom-node
)) ¶Parity of distance from root, as in C_2.
blossom-node
)) ¶blossom-node
)) ¶If T, BLOSSOM-NODE has lost the will to live.
blossom-node
) (message message-adjoin-root
) now) ¶The workhorse of responding to a PING message: walks up the blossom contractions, then up the maximally-contracted tree, ultimately resulting in a PONG.
This handler is responsible for actually assigning a recommended-next-move for the blossom algorithm, which makes up the bulk of the function body.
blossom-node
) (message message-attach-parent
) now) ¶blossom-node
) (message message-blossom-parent
) now) ¶Calculates the topmost blossom which contains NODE, subject to the possible limitation that we not exceed STOP-BEFORE.
blossom-node
) (message message-broadcast-pingability
) now) ¶blossom-node
) (message message-broadcast-reweight
) now) ¶blossom-node
) (message message-convergecast-collect-roots
) now) ¶blossom-node
) (message message-convert-child-to-petal
) now) ¶blossom-node
) (message message-expand
) now) ¶Starts the procedure for popping a contracting blossom.
blossom-node
) (message message-id-query
) now) ¶blossom-node
) (message message-percolate
) now) ¶Performs a step in the path augmentation process.
blossom-node
) (message message-ping
) now) ¶Begins the process of responding to a PING message: starts an ADJOIN-ROOT sequence.
blossom-node
) (message message-push
) now) ¶blossom-node
) (message message-reattach-cycle-child
) now) ¶blossom-node
) (message message-replace-child
) now) ¶blossom-node
) (message message-root-path
) now) ¶Calculates the path from a blossom through to the tree root (consisting only of toplevel blossoms).
blossom-node
) (message message-scan
) now) ¶Begins a scanning process.
blossom-node
) (message message-set
) now) ¶blossom-node
) (message message-set-up-blossom
) now) ¶blossom-node
) (message message-sprout
) now) ¶Handles a request that a root node (perhaps not a vertex) alert the DRYAD that it has sprouted.
blossom-node
) (message message-values
) now) ¶blossom-node
) (message message-wilt
) now) ¶dryad
) (message message-discover
) now) ¶Handles a DISCOVER message, sent by a BLOSSOM-NODE which expects a list of other BLOSSOM-NODE addresses to which it should send PINGs.
dryad
) (message message-sow
) now) ¶Adjoin a new node to the problem graph.
NOTE: In the basic implementation, these messages must be waiting for the DRYAD on launch.
dryad
) (message message-sprout
) now) ¶Handles a SPROUT message, indicating that a BLOSSOM-NODE has been matched (for the first time).
dryad
) (message message-wilting
) now) ¶blossom-node
) &rest initargs) ¶Wrapper for generating a pong message of the appropriate type for ‘NODE’.
blossom-node
) &rest initargs) ¶Wrapper for generating a supervisor of the appropriate type for ‘NODE’.
(eql anatevka:dryad)
) (entry-type (eql anatevka::handling-sow)
) &optional stream) ¶(eql anatevka:blossom-node)
) (entry-type (eql anatevka::set-up-blossom)
) &optional stream) ¶Log entry for when a blossom node finishes setting itself up.
(eql anatevka::supervisor)
) (entry-type (eql anatevka::success)
) &optional stream) ¶(eql anatevka::supervisor)
) (entry-type (eql anatevka::got-recommendation)
) &optional stream) ¶Computes an action to propose as part of a PONG.
blossom-node
) ping pong adjoin-root) ¶Converts a PONG recommendation to a supervisor procedure jump point.
(eql :augment)
)) ¶(eql :graft)
)) ¶(eql :contract)
)) ¶(eql :expand)
)) ¶(eql :hold)
)) ¶supervisor
)) ¶supervisor
)) ¶The class identifier who spawned this SUPERVISOR.
message-pong
) &key internal-root-set) ¶Given two PONGs proposing two operations, selects the more immediate of the two.
Returns a VALUES pair of the unified PONG message as well as a boolean indicating whether the default clause was triggered, for other method handlers to decide whether a preceding handler has made a decision that they are then overriding, or if there’s no danger of overriding an intentional decision.
When INTERNAL-ROOT-SET is supplied, discard HOLD recommendations which emanate from the indicated root addresses.
blossom-node
) now2) ¶aether
.
supervisor
) now2) ¶aether
.
dryad
) now (command-place0 (eql anatevka::wind-down)
) argument-list1) ¶aether
.
dryad
) now (command-place0 (eql anatevka::send-expand)
) argument-list1) ¶Directs SPROUT to perform blossom expansion.
aether
.
dryad
) now (command-place0 (eql anatevka::sprouts-loop)
) argument-list1) ¶Loop over sprouted nodes, looking for ripe pairs.
aether
.
dryad
) now (command-place0 (eql aether:start)
) argument-list1) ¶Start listening for ripe sprouted pairs.
aether
.
blossom-node
) now (command-place0 (eql anatevka::extinguish-blossom)
) argument-list1) ¶Tell this blossom process to die.
aether
.
blossom-node
) now (command-place0 (eql anatevka::expand-blossom-attach-match)
) argument-list1) ¶This command takes the blossom’s match relationship and pushes it onto the petal vertex that is the source vertex of the relationship.
r —> [b0 ] r —> [b0 ] ===> a
[| ] [| ]
[| ] [| ]
[| b1] <— blossom B —> [| b1]
[| / ] [| / ]
[| / ] [| / ]
a <=== [b2 ] [b2 ]
left diagram: right diagram:
‘edge’ is ‘B:b2===>a’ ‘edge’ is ‘B:b0===>a’
‘root-node’ is b0 ‘root-node’ is b0
‘matched-node’ is b2 ‘matched-node’ is b0
In the right diagram, b0 is both the ‘root-node’ and the ‘matched-node’, because it is the vertex attached to both r and a. For the follow-on comments below, we will use the left diagram labels.
aether
.
blossom-node
) now (command-place0 (eql anatevka::expand-blossom-attach-parent)
) argument-list1) ¶This command takes the blossom’s parent relationship and pushes it onto the petal node that is the source vertex of the relationship. This should be performed whenever the blossom has a parent, even if ‘root-node’ is equal to ‘matched-node’.
Here are two example configurations:
r —> [b0 ] r —> [b0 ] ===> a
[| ] [| ]
[| ] [| ]
[| b1] <— blossom B —> [| b1]
[| / ] [| / ]
[| / ] [| / ]
a <=== [b2 ] [b2 ]
left diagram: right diagram:
‘parent-edge’ is ‘B:b0—>r’ ‘parent-edge’ is ‘B:b0—>r’
‘root-node’ is b0 ‘root-node’ is b0
‘matched-node’ is b2 ‘matched-node’ is b0
Note that in the right diagram, b0 is both the ‘root-node’ and the ‘matched-node’, because it is the vertex attached to both r and a.
aether
.
blossom-node
) now (command-place0 (eql anatevka::expand-blossom-add-cycle-matches)
) argument-list1) ¶This command detaches all of the blossom children from their ‘pistil’ (except for the ‘matched-node’, which is handled separately in the command ‘EXPAND-BLOSSOM-ATTACH-MATCH’). In addition, it establishes all the ‘match-edge’ relationships in the cycle, both in the alternating tree and for lone barbells.
root root
| |
b0 b0
/ //
/ //
b1 b4 b1 b4
| | ||
| B | becomes ||
| | ||
b2—b3 b2 b3
// //
// //
a a
In the above example, ‘full-path’ would originally be (‘b2–>b3’, ‘b3–>b4’, ‘b4–>b0’, ‘b0–>b1’, ‘b1–>b2’), but the first entry is trimmed in the calling command, and then we drop two more every iteration, so the edges that are actually considered in this command are ‘b3–>b4’ and ‘b0–>b1’, which are exactly the edges that should be matched. Additionally, that list of edges contains all the vertices that do not participate in the ‘a==>b2’ matched edge, so we are confident that everybody is ridden of their blossom parent.
aether
.
blossom-node
) now (command-place0 (eql anatevka::expand-blossom-build-tree-path)
) argument-list1) ¶This command walks the path from ‘root-node’->‘matched-node’, establishing all the parent and child relationships and setting ‘positive?’ accordingly. The parent/child relationship between the blossom’s parent and ‘root-node’ is established separatedly in ‘EXPAND-BLOSSOM-ATTACH-PARENT’. The parent/child relationship between the blossom’s match and ‘matched-node’, as well as the ‘positive?’ setting of ‘matched-node’, is implemented separately in the ‘EXPAND-BLOSSOM-ATTACH-MATCH’ command.
root root
| |
b0 (NIL) b0
/ /
/ v
b1 b4 (T) b1 b4
| | | |
| B | becomes | B |
| | v |
b2—b3 (NIL) b2—b3
// //
// //
a a
In the above example, ‘path’ would be (‘b0–>b1’, ‘b1–>b2’), and so we build the parent/child relationships ‘b0–>b1’ and ‘b1–>b2’, and we set ‘positive?’ of (b0, b1, b2) to be (NIL, T, NIL).
aether
.
blossom-node
) now (command-place0 (eql anatevka::expand-blossom)
) argument-list1) ¶Sets up the EXPAND stack frame.
aether
.
blossom-node
) now (command-place0 (eql anatevka::finish-scan)
) argument-list1) ¶Finalize the SCAN procedure’s stack frames. this includes forwarding the result to a parent if one instigated the SCAN procedure, or spawning a new SUPERVISOR process to handle the result if this SCAN was spontaneous.
aether
.
blossom-node
) now (command-place0 (eql anatevka::ping)
) argument-list1) ¶Sends a PING message to any neighboring vertices as previously provided by the DISCOVER query sent to the dryad.
NOTE: this command is only installed when NODE is a vertex.
aether
.
blossom-node
) now (command-place0 (eql anatevka::forward-scan)
) argument-list1) ¶Sends a SCAN message to each of the children tabulated in ADDRESSES.
aether
.
blossom-node
) now (command-place0 (eql anatevka::process-addresses)
) argument-list1) ¶Performs postprocessing, if any, on the list of candidate neighbor nodes received from the dryad, then sets up the PING command to start communicating with them.
aether
.
blossom-node
) now (command-place0 (eql anatevka::contact-dryad)
) argument-list1) ¶Request from the dryad responsible for this node a list of candidate node neighbors with which to coordinate for this node’s next operation. Defers the actual processing of that list to PROCESS-ADDRESSES.
aether
.
blossom-node
) now (command-place0 (eql anatevka::start-scan)
) argument-list1) ¶Sets up the scanning procedure stack frames.
aether
.
blossom-node
) now (command-place0 (eql aether::%finish-unlock)
) argument-list1) ¶aether
.
blossom-node
) now (command-place0 (eql anatevka::idle)
) argument-list1) ¶aether
.
blossom-node
) now (command-place0 (eql anatevka::scan-loop)
) argument-list1) ¶If we’re out of things to do & unmatched, consider starting a SCAN. If REPEAT? is set, then this is _not_ our first time trying to SCAN to find something to do, and the previous attempt(s) resulted in no action.
aether
.
blossom-node
) now (command-place0 (eql aether:start)
) argument-list1) ¶Blossom nodes represent (contracted subgraphs of) vertex(es). The START command drops the blossom node into an infinite loop, SCAN-LOOP, which enacts the basic behavior.
aether
.
supervisor
) now (command-place0 (eql anatevka::check-rewinding)
) argument-list1) ¶Instruct a set of ‘ROOTS’ to ensure that their reweighting has not resulted in an erroneous global state. If they have, then we want to rewind the reweighting, by using the ‘BROADCAST-REWEIGHT’ command.
aether
.
supervisor
) now (command-place0 (eql anatevka::broadcast-reweight)
) argument-list1) ¶Instruct some ‘ROOTS’ to reweight their trees by ‘WEIGHT’.
aether
.
supervisor
) now (command-place0 (eql anatevka::check-reweight)
) argument-list1) ¶Because ‘CHECK-PONG’ doesn’t do a global check, we potentially can end up with a reweighting when we shouldn’t. This fixes that by making sure that there are no lower-weight recommendations available before we begin reweighting.
aether
.
supervisor
) now (command-place0 (eql anatevka::start-reweight)
) argument-list1) ¶Sets up the reweight procedure.
1. Lock the targets.
2. Change their pingability to ‘:SOFT’.
3. Check for a weightless edge. Abort if found.
4. Change the pingability of the targets to ‘:NONE’.
5. Reweight the ‘source-root’ by the ‘weight’ of the ‘pong’.
6. Change the pingability of the targets to ‘:SOFT’.
7. Check if reweighting the ‘source-root’ resulted in a negative-weight edge.
a. If so, and this is the second time we’ve been here, rewind fully.
b. Otherwise, if so, rewind the reweighting by half and go back to (7).
8. Unlock the targets.
aether
.
supervisor
) now (command-place0 (eql anatevka::finish-multireweight)
) argument-list1) ¶Clean up after the local state of the multireweight operation.
aether
.
supervisor
) now (command-place0 (eql anatevka::multireweight-check-rewinding)
) argument-list1) ¶Just as when we’re reweighting, now we have to check to make sure we didn’t create any negative-weight edges. We do so by pushing the ‘CHECK-REWINDING’ command onto the command stack.
aether
.
supervisor
) now (command-place0 (eql anatevka::multireweight-broadcast-reweight)
) argument-list1) ¶Having aggregated coordinated advice, we now enact it by sending individual reweight instructions to all the ‘ROOTS’. This is achieved via the ‘BROADCAST-REWEIGHT’ command.
aether
.
supervisor
) now (command-place0 (eql anatevka::multireweight-broadcast-scan)
) argument-list1) ¶Now that we know the full ‘HOLD-CLUSTER’, we ‘SCAN’ each, and aggregate the results in order to make a reweighting decision.
aether
.
supervisor
) now (command-place0 (eql anatevka::start-inner-multireweight)
) argument-list1) ¶This is the start of the "critical segment", where it begins to be impossible to rewind partway through the modifications we’re about to make.
aether
.
supervisor
) now (command-place0 (eql anatevka::check-priority)
) argument-list1) ¶Confirm that, of the roots in the hold cluster, we have priority to act. Namely, we have priority when our ‘ORIGINAL-ROOT’ carries the minimum ID of all the roots in the cluster.
aether
.
supervisor
) now (command-place0 (eql anatevka::convergecast-collect-roots)
) argument-list1) ¶Recursively collects the ‘HELD-BY-ROOTS’ values of ‘ROOTS’ to determine the set of roots that are participating in this ‘HOLD’ cluster (meaning that they are mutually held by each other), starting with a base ‘CLUSTER’ of just the ‘SOURCE-ROOT’. If any replies are NIL, we abort.
aether
.
supervisor
) now (command-place0 (eql anatevka::start-multireweight)
) argument-list1) ¶Sets up the multireweight procedure.
1. Collect the mutually held roots for the ‘HOLD-CLUSTER’
2. Lock the ‘HOLD-CLUSTER’ and check the rootiness of each root.
3. Change the pingability of the cluster to ‘:SOFT’.
4. Scan the ‘HOLD-CLUSTER’ for the best external rec to use for reweighting.
5. Reweight the ‘HOLD-CLUSTER’ according to the recommendation.
6. Check to see if the ‘HOLD-CLUSTER’ should be rewound, and do so if need be.
7. Unlock the targets and tear down transient state.
aether
.
supervisor
) now (command-place0 (eql anatevka::handle-new-blossom)
) argument-list1) ¶Tell the blossom itself what’s up.
aether
.
supervisor
) now (command-place0 (eql anatevka::handle-blossom-sub-children)
) argument-list1) ¶Tell all the other children what’s up.
aether
.
supervisor
) now (command-place0 (eql anatevka::handle-petals)
) argument-list1) ¶Tell the blossom’s petals what’s up.
aether
.
supervisor
) now (command-place0 (eql anatevka::handle-pistil)
) argument-list1) ¶Tell the source of the peduncle edge that the fresh blossom is its child.
G <– root –> G
| |
F F
| <– peduncle edge –> |
[ C ] [C~~~]
[ / ] [| ~]
[B D] <– fresh blossom (H) –> [B ~]
[| |] [| ~]
[A ~ E] [A~~~]
If we have a non-null peduncle edge (F -> C above), then we need to tell its source node (F) that it has a new child – the fresh blossom (which we will call H). So, we send F a ‘message-attach-parent’ message, which iterates through F’s existing child relationships, and whichever one matches the peduncle edge has its target node updated from C to H:C, meaning that the target has node H and vertex C.
aether
.
supervisor
) now (command-place0 (eql anatevka::compute-blossom-paths)
) argument-list1) ¶This command computes the cycle which will constitute the fresh blossom.
G <– root –> G
| |
F F
| <– peduncle edge –> |
[ C ] [C~~~]
[ / ] [| ~]
[B D] <– fresh blossom –> [B ~]
[| |] [| ~]
[A ~ E] [A~~~]
Both above tree diagrams are valid arrangments that would trigger this operation, but we will concern ourselves with the left one.
(1) A ‘CONTRACT’ 0 is recommended between A and E, so the first thing we do is determine the two paths from the root G to the nodes A and E:
G -> A : (NIL G -> F F -> C C -> B B -> A)
G -> E : (NIL G -> F F -> C C -> D D -> E)
(2) Then, we want to trim everything higher in the tree than the first edge shared by the two root paths, so that we know what constitutes the cycle of edges in the fresh blossom we’re about to create.
tail A : (F -> C C -> B B -> A)
tail E : (F -> C C -> D D -> E)
(3) Then, we trim the first entry off of the tails, and we call that the peduncle as long as it non-null (it would be null if the tree root was C instead of F). This becomes the match and parent of the fresh blossom.
peduncle edge : F -> C
trimmed tail A : (C -> B B -> A)
trimmed tail E : (C -> D D -> E)
(4) Finally, we combine the two trimmed tails (one of which is reversed) and the edge that suggested the contract blossom operation, to build the cycle.
blossom cycle : (C -> B B -> A A -> E E -> D D -> C)
aether
.
supervisor
) now (command-place0 (eql anatevka::release-stowed-lock)
) argument-list1) ¶aether
.
supervisor
) now (command-place0 (eql anatevka::stow-lock)
) argument-list1) ¶aether
.
supervisor
) now (command-place0 (eql anatevka::start-inner-contract)
) argument-list1) ¶Begins the critical section of the CONTRACT routine.
aether
.
supervisor
) now (command-place0 (eql anatevka::start-contract)
) argument-list1) ¶Begins the CONTRACT routine, sets up the stack frames.
aether
.
supervisor
) now (command-place0 (eql anatevka::expand-inner-blossom)
) argument-list1) ¶Blossom expansion is handled by the blossom itself. This instruction just triggers the expansion routine remotely and waits for it to complete.
aether
.
supervisor
) now (command-place0 (eql anatevka::check-inner-blossom)
) argument-list1) ¶When a supervisor is in charge of blossom expansion, we know that the blossom to be expanded is necessarily an inner blossom. Why? Because outer blossoms don’t get an expand recommendation from the tree, and barbell blossoms are expanded by the dryad. However, as is common in this distributed algorithm, there are many opportunities for information to go stale, and so before we tell the blossom to expand itself, we double check that it is, in fact, an inner blossom, by checking its ‘internal-weight’, ‘positive?’, and ‘pistil’ slots, as well as making sure that its root is as the supervisor expected, which ensures that everything is a-OK.
aether
.
supervisor
) now (command-place0 (eql anatevka::start-expand)
) argument-list1) ¶Sets up the expand procedure.
aether
.
supervisor
) now (command-place0 (eql anatevka::augment)
) argument-list1) ¶Perform an augmentation along a given edge.
aether
.
supervisor
) now (command-place0 (eql anatevka::start-augment)
) argument-list1) ¶Sets up the augmentation procedure.
aether
.
supervisor
) now (command-place0 (eql anatevka::install-positivity)
) argument-list1) ¶Sets a target’s POSITIVE? field.
aether
.
supervisor
) now (command-place0 (eql anatevka::install-child)
) argument-list1) ¶Appends a child to a target.
aether
.
supervisor
) now (command-place0 (eql anatevka::install-parent)
) argument-list1) ¶Sets a target’s parent.
aether
.
supervisor
) now (command-place0 (eql anatevka::inner-graft)
) argument-list1) ¶Actually perform the graft procedure.
aether
.
supervisor
) now (command-place0 (eql anatevka::start-graft)
) argument-list1) ¶Set up the checks for the graft procedure.
aether
.
supervisor
) now (command-place0 (eql aether:broadcast-unlock)
) argument-list1) ¶Cleans up after BROADCAST-LOCK.
aether
.
supervisor
) now (command-place0 (eql anatevka::broadcast-pingability)
) argument-list1) ¶Instruct the trees rooted at ‘TARGETS’ to change their pingability to ‘NEW-TYPE’.
aether
.
supervisor
) now (command-place0 (eql anatevka::ensure-aborting)
) argument-list1) ¶This command is used upon encountering a negatively-weighted edge rec, to cause the algorithm to crash if the recommendation doesn’t resolve itself.
aether
.
supervisor
) now (command-place0 (eql anatevka::evaluate-check-pong)
) argument-list1) ¶CHECK-PONG results in a refreshed REPLICA-PONG, which we’re to compare against STALE-PONG and LOCAL-PONG, aborting if they differ in a way that indicates stale information.
aether
.
supervisor
) now (command-place0 (eql anatevka::check-pong)
) argument-list1) ¶Ensure that two locked trees still agree that this is a responsible weightless operation.
aether
.
supervisor
) now (command-place0 (eql anatevka::check-roots)
) argument-list1) ¶Ensure that these nodes are still actually unmatched roots.
aether
.
supervisor
) now (command-place0 (eql anatevka::halt)
) argument-list1) ¶Stop the current ‘SUPERVISOR’ and announce whether it’s been a success. Additionally, unpause the ‘SOURCE-ROOT’ so that it can start scanning again.
aether
.
supervisor
) now (command-place0 (eql aether:start)
) argument-list1) ¶Set up initial state: the stack frame and which procedure to branch on.
aether
.
Represents a directed edge between two blossoms X and Y, as connected by vertices A, B.
[X: ... A–]–[->B ... :Y]
structure-object
.
(or null aether:address)
(or null aether:address)
(or null aether:address)
(or null aether:address)
Data frame associated to a SUPERVISOR process enacting CONTRACT.
PONG: The PONG that this processes received at its START.
PATH: The cycle of blossom child edges to install into this blossom.
PEDUNCLE-EDGE: The edge leading from the root of this subtree out of the graph.
FRESH-BLOSSOM: The address of the newly contracted blossom.
PETAL-CHILD-EDGES: The list of child edges attached to the blossoms in the subtree which will become children of the newly contracted blossom.
structure-object
.
anatevka::message-pong
list
(or null anatevka::blossom-edge)
aether:address
list
(or null aether:address)
(or null aether:address)
Data frame associated to a ‘SUPERVISOR’ process enacting ‘MULTIREWEIGHT’.
‘HOLD-CLUSTER’: The aggregated set of mutually held roots, for which deadlock can only be broken via ‘MULTIREWEIGHT’.
‘INTERNAL-PONG’: The unified ‘message-pong’ among the different roots in this ‘HOLD-CLUSTER’, where all the roots in the cluster are treated as part of the same tree. Ultimately serves to measure the amount by which to ‘MULTIREWEIGHT’.
Data frame associated to a SCAN procedure running on a BLOSSOM process.
structure-object
.
anatevka::message-pong
boolean
aether:address
aether:address
(or null real)
list
list
list
real
list
boolean
Data frame associated to the basic functioning on a SUPERVISOR process.
PONG: The PONG that this process received at its START.
structure-object
.
anatevka::message-pong
A capsule used to move a PING around inside its target tree, which is done in order to accrue information (viz., the target blossom, root, and blossom weight) used to construct the reply PONG.
message
.
(or null anatevka::blossom-edge)
anatevka::message-ping
anatevka::message-pong
boolean
Sent from a SUPERVISOR to a BLOSSOM-NODE to install a new PARENT.
Calculates the highest blossom parent which contains the recipient and which is contained in STOP-BEFORE.
message
.
(or null aether:address)
Sent from a ‘SUPERVISOR’ to a tree to change its pingability to ‘PING-TYPE’.
message
.
anatevka::ping-type
Sent from a ‘SUPERVISOR’ to a tree to reweight its top-level nodes by ‘WEIGHT’.
message
.
real
Sent from a ‘SUPERVISOR’ to a tree to collect a cluster of roots that are mutually held by each other. The ‘HOLD-CLUSTER’ is the current ‘LIST’ of ‘BLOSSOM-NODE’ roots that are known to be mutually held up.
message
.
list
Sent from a SUPERVISOR to a BLOSSOM-NODE to install a new CHILD.
message
.
aether:address
Sent from a SUPERVISOR to a BLOSSOM to cause it to pop.
message
.
Replies with the minimum ID at this macrovertex.
message
.
Sent from a SUPERVISOR to a tree (and then internally to a tree) to cause a path augmentation.
message
.
anatevka::blossom-edge
Broadcast from one vertex to another, to probe its weight and its position in its tree. Expects as a reply a PONG message. Includes as part of its payload some information about the tree structure at the originator, so that the receiver can generate an appropriate recommendation.
message
.
(or null aether:address)
(or null aether:address)
real
list
A reply to a PING message, which contains the adjusted edge weight and its proposed tree operation.
Most of the slots are self-explanatory. As an exception, ROOT-BUCKET aggregates values of TARGET-ROOT when two PONGs are merged by UNIFY-PONG.
message
.
real
0
list
(or null aether:address)
(or null aether:address)
keyword
(quote :pass)
list
Causes a remote PUSH (on the BLOSSOM-NODE object). The VALUE is pushed to the head of SLOT.
Sent from a SUPERVISOR to a BLOSSOM-NODE to transfer responsibility for a petal-child.
message
.
aether:address
Replaces any child edges attaching to OLD-CHILD with edges attaching to NEW-CHILD instead.
Calculates the path from a node through to the root of its containing tree.
message
.
list
Broadcast internally to a tree, like activation down a the length of a neuron, to spur its vertices to send out PING messages to their neighbors.
message
.
(or null aether:address)
(or null aether:address)
real
list
boolean
Causes a remote SETF (on the BLOSSOM-NODE object). The nth slot is set to the nth value.
Sent from a SUPERVISOR to a newly formed contracting BLOSSOM to set up its slots.
The same as an ADJOIN-ROOT, but with the signaled intent that it _will not_ be used to advocate for a fresh tree operation, only to check the consistency of the state.
The same as a PING, but with the signaled intent that it _will not_ be used to advocate for a fresh tree operation, only to check the consistency of the state.
The same as a SCAN, but it generates soft PINGs.
Replies with slot-values (on the BLOSSOM-NODE object).
message
.
common-lisp
.
list
A companion process responsible for coordinating a tree operation.
process-lockable
.
message-dispatch
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
process-upkeep
.
(setf supervisor-node-class)
.
supervisor-node-class
.
aether
.
anatevka::*blossom-node-clock-rate*
The class identifier who spawned this SUPERVISOR.
symbol
(quote anatevka:blossom-node)
:node-class
Jump to: | %
(
-
A B C D E F G H L M P R S U V W |
---|
Jump to: | %
(
-
A B C D E F G H L M P R S U V W |
---|
Jump to: | *
A B C D E F H I L M N O P R S T V W |
---|
Jump to: | *
A B C D E F H I L M N O P R S T V W |
---|
Jump to: | A B C D E F G L M N O P R S T U |
---|
Jump to: | A B C D E F G L M N O P R S T U |
---|