The anatevka Reference Manual

This is the anatevka Reference Manual, version 1.0.0, generated automatically by Declt version 4.0 beta 2 "William Riker" on Sat Dec 03 19:24:59 2022 GMT+0.

Table of Contents


1 Introduction


2 Systems

The main system appears first, followed by any subsystem dependency.


2.1 anatevka

A distributed blossom algorithm for minimum-weight perfect matching.

Author

Eric Peterson <>

Version

1.0.0

Dependencies
  • alexandria (system).
  • aether (system)., at least version "1.1.0"
Source

anatevka.asd.

Child Components

3 Modules

Modules are listed depth-first from the system components tree.


3.1 anatevka/operations

Dependency

lock.lisp (file).

Source

anatevka.asd.

Parent Component

anatevka (system).

Child Components

4 Files

Files are sorted by type and then listed depth-first from the systems components trees.


4.1 Lisp


4.1.1 anatevka/anatevka.asd

Source

anatevka.asd.

Parent Component

anatevka (system).

ASDF Systems

anatevka.


4.1.2 anatevka/package.lisp

Source

anatevka.asd.

Parent Component

anatevka (system).

Packages

anatevka.


4.1.3 anatevka/utilities.lisp

Dependency

package.lisp (file).

Source

anatevka.asd.

Parent Component

anatevka (system).

Public Interface

with-with (macro).

Internals

4.1.4 anatevka/logger.lisp

Dependency

utilities.lisp (file).

Source

anatevka.asd.

Parent Component

anatevka (system).

Internals

4.1.5 anatevka/dryad-api.lisp

Dependency

logger.lisp (file).

Source

anatevka.asd.

Parent Component

anatevka (system).

Public Interface
Internals

4.1.6 anatevka/node.lisp

Dependency

dryad-api.lisp (file).

Source

anatevka.asd.

Parent Component

anatevka (system).

Public Interface
Internals

4.1.7 anatevka/supervisor.lisp

Dependency

node.lisp (file).

Source

anatevka.asd.

Parent Component

anatevka (system).

Internals

4.1.8 anatevka/lock.lisp

Dependency

supervisor.lisp (file).

Source

anatevka.asd.

Parent Component

anatevka (system).

Public Interface
Internals

4.1.9 anatevka/operations/scan.lisp

Source

anatevka.asd.

Parent Component

operations (module).

Public Interface

print-object (method).

Internals

4.1.10 anatevka/operations/graft.lisp

Dependency

scan.lisp (file).

Source

anatevka.asd.

Parent Component

operations (module).

Internals

4.1.11 anatevka/operations/augment.lisp

Dependency

graft.lisp (file).

Source

anatevka.asd.

Parent Component

operations (module).

Internals

4.1.12 anatevka/operations/expand.lisp

Dependency

augment.lisp (file).

Source

anatevka.asd.

Parent Component

operations (module).

Internals

4.1.13 anatevka/operations/contract.lisp

Dependency

expand.lisp (file).

Source

anatevka.asd.

Parent Component

operations (module).

Internals

4.1.16 anatevka/dryad.lisp

Dependency

operations (module).

Source

anatevka.asd.

Parent Component

anatevka (system).

Public Interface
Internals

5 Packages

Packages are listed by definition order.


5.1 anatevka

Source

package.lisp.

Use List
  • aether.
  • common-lisp.
Public Interface
Internals

6 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


6.1 Public Interface


6.1.1 Special variables

Special Variable: *dryad-default-clock-rate*
Package

anatevka.

Source

dryad.lisp.


6.1.2 Macros

Macro: with-with ((&rest with-designators) &body body)

Permits the chaining of context macros via WITH-DESIGNATORS.

Package

anatevka.

Source

utilities.lisp.


6.1.3 Ordinary functions

Function: make-blossom-edge (&key source-node source-vertex target-vertex target-node)
Package

anatevka.

Source

node.lisp.

Function: make-message-discover (&key reply-channel message-id address id internal-weight repeat?)
Package

anatevka.

Source

dryad-api.lisp.

Function: make-message-discovery (&key reply-channel message-id channels-to-try)
Package

anatevka.

Source

dryad-api.lisp.

Function: make-message-reap (&key reply-channel message-id ids)
Package

anatevka.

Source

dryad-api.lisp.

Function: make-message-sow (&key reply-channel message-id id)
Package

anatevka.

Source

dryad-api.lisp.

Function: make-message-sprout (&key reply-channel message-id address)
Package

anatevka.

Source

dryad-api.lisp.

Function: make-message-wilt (&key reply-channel message-id)
Package

anatevka.

Source

dryad-api.lisp.

Function: make-message-wilting (&key reply-channel message-id address)
Package

anatevka.

Source

dryad-api.lisp.

Reader: message-discover-address (instance)
Writer: (setf message-discover-address) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Target Slot

address.

Reader: message-discover-id (instance)
Writer: (setf message-discover-id) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Target Slot

id.

Reader: message-discover-internal-weight (instance)
Writer: (setf message-discover-internal-weight) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Target Slot

internal-weight.

Reader: message-discover-repeat? (instance)
Writer: (setf message-discover-repeat?) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Target Slot

repeat?.

Reader: message-discovery-channels-to-try (instance)
Writer: (setf message-discovery-channels-to-try) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Target Slot

channels-to-try.

Reader: message-reap-ids (instance)
Writer: (setf message-reap-ids) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Target Slot

ids.

Reader: message-sow-id (instance)
Writer: (setf message-sow-id) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Target Slot

id.

Reader: message-sprout-address (instance)
Writer: (setf message-sprout-address) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Target Slot

address.

Reader: message-wilting-address (instance)
Writer: (setf message-wilting-address) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Target Slot

address.


6.1.4 Generic functions

Generic Reader: dryad-ids (object)
Generic Writer: (setf dryad-ids) (object)
Package

anatevka.

Methods
Reader Method: dryad-ids ((dryad dryad))
Writer Method: (setf dryad-ids) ((dryad dryad))

A map ADDRESS -> ID which records the id of a ‘BLOSSOM-NODE’ instance.

Source

dryad.lisp.

Target Slot

ids.

Generic Reader: dryad-match-address (object)
Generic Writer: (setf dryad-match-address) (object)
Package

anatevka.

Methods
Reader Method: dryad-match-address ((dryad dryad))
Writer Method: (setf dryad-match-address) ((dryad dryad))

The ‘ADDRESS’ to which the ‘DRYAD’ will send REAP messages.

Source

dryad.lisp.

Target Slot

match-address.

Generic Reader: dryad-sprouted? (object)
Generic Writer: (setf dryad-sprouted?) (object)
Package

anatevka.

Methods
Reader Method: dryad-sprouted? ((dryad dryad))
Writer Method: (setf dryad-sprouted?) ((dryad dryad))

A map ADDRESS -> BOOLEAN which records whether a ‘BLOSSOM-NODE’ has begun participating in matches.

Source

dryad.lisp.

Target Slot

sprouted?.

Generic Function: min-id (x y)

Computes the smaller of two IDs.

Package

anatevka.

Source

node.lisp.

Methods
Method: min-id ((x real) (y real))
Method: min-id ((x string) (y string))
Generic Function: vertex-vertex-distance (id-v id-w)

Returns the distance between the blossom vertex with ID given by ID-V and that with ID given by ID-W.

Package

anatevka.

Source

node.lisp.


6.1.5 Standalone methods

Method: handle-message-lock ((node blossom-node) (message message-lock) now)

Prepares a BLOSSOM-NODE to be locked.

Package

aether.

Source

lock.lisp.

Method: print-object ((object blossom-node) stream)
Source

node.lisp.

Method: print-object ((pong message-pong) stream)

Convenience printing for PONGs.

Source

scan.lisp.

Method: print-object ((object blossom-edge) stream)
Source

node.lisp.

Method: process-lockable-targets ((node blossom-node))
Package

aether.

Source

lock.lisp.


6.1.6 Structures

Structure: message-discover

Sent from a blossom process to a ‘DRYAD’ to query for a list of other blossom processes to which it should send PINGs.

Package

anatevka.

Source

dryad-api.lisp.

Direct superclasses

message.

Direct methods

handler-message-discover.

Direct slots
Slot: address
Package

aether.

Type

aether:address

Readers

message-discover-address.

Writers

(setf message-discover-address).

Slot: id
Readers

message-discover-id.

Writers

(setf message-discover-id).

Slot: internal-weight
Type

real

Readers

message-discover-internal-weight.

Writers

(setf message-discover-internal-weight).

Slot: repeat?
Type

boolean

Readers

message-discover-repeat?.

Writers

(setf message-discover-repeat?).

Structure: message-discovery

The response to a DISCOVER message.

CHANNELS-TO-TRY: The addresses to send PINGs to.

Package

anatevka.

Source

dryad-api.lisp.

Direct superclasses

message.

Direct slots
Slot: channels-to-try
Type

list

Readers

message-discovery-channels-to-try.

Writers

(setf message-discovery-channels-to-try).

Structure: message-reap

Reported by a ‘DRYAD’ to its ‘MATCH-ADDRESS’ with a pair of IDs that participate in the calculated matching.

Package

anatevka.

Source

dryad-api.lisp.

Direct superclasses

message.

Direct slots
Slot: ids
Type

list

Readers

message-reap-ids.

Writers

(setf message-reap-ids).

Structure: message-sow

Instructs a ‘DRYAD’ to inject a new vertex with the indicated id.

Package

anatevka.

Source

dryad-api.lisp.

Direct superclasses

message.

Direct methods

handler-message-sow.

Direct slots
Slot: id
Readers

message-sow-id.

Writers

(setf message-sow-id).

Structure: message-sprout

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".

Package

anatevka.

Source

dryad-api.lisp.

Direct superclasses

message.

Direct methods
Direct slots
Slot: address
Package

aether.

Type

aether:address

Readers

message-sprout-address.

Writers

(setf message-sprout-address).

Structure: message-wilt

An instruction to a ‘BLOSSOM-NODE’ to cease operation as a process.

Package

anatevka.

Source

dryad-api.lisp.

Direct superclasses

message.

Direct methods

handle-message-wilt.

Structure: message-wilting

When a ‘BLOSSOM-NODE’ wilts, it notifies its parent ‘DRYAD’ to remove it from consideration.

Package

anatevka.

Source

dryad-api.lisp.

Direct superclasses

message.

Direct methods

handler-message-wilting.

Direct slots
Slot: address
Package

aether.

Type

aether:address

Readers

message-wilting-address.

Writers

(setf message-wilting-address).


6.1.7 Classes

Class: blossom-node

Embodies a blossom in the blossom algorithm.

Package

anatevka.

Source

node.lisp.

Direct superclasses

process-lockable.

Direct methods
Direct slots
Slot: process-clock-rate

Number of blossom actions per unit of simulation time. Overrides the parent slot provided by PROCESS.

Package

aether.

Initform

anatevka::*blossom-node-clock-rate*

Slot: dryad

The address of the host DRYAD.

Type

(or null aether:address)

Initargs

:dryad

Readers

blossom-node-dryad.

Writers

(setf blossom-node-dryad).

Slot: pingable

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.

Type

anatevka::ping-type

Initform

(quote :all)

Readers

blossom-node-pingable.

Writers

(setf blossom-node-pingable).

Slot: wilting

If T, BLOSSOM-NODE has lost the will to live.

Type

boolean

Initargs

:wilting

Readers

blossom-node-wilting.

Writers

(setf blossom-node-wilting).

Slot: paused?

If T, do not start a new scan.

Type

boolean

Initargs

:paused?

Readers

blossom-node-paused?.

Writers

(setf blossom-node-paused?).

Slot: id

Internal name for this blossom node. Used by VERTEX-VERTEX-DISTANCE to the edge weight in the graph.

Initargs

:id

Readers

blossom-node-id.

Writers

(setf blossom-node-id).

Slot: match-edge

If this vertex is matched, point to the match.

Type

(or null anatevka::blossom-edge)

Initargs

:match-edge

Readers

blossom-node-match-edge.

Writers

(setf blossom-node-match-edge).

Slot: internal-weight

The dual weight y_v in the algorithm.

Type

real

Initform

0

Initargs

:internal-weight

Readers

blossom-node-internal-weight.

Writers

(setf blossom-node-internal-weight).

Slot: pistil

(Immediate) blossom that this vertex belongs to.

Type

(or null aether:address)

Initargs

:pistil

Readers

blossom-node-pistil.

Writers

(setf blossom-node-pistil).

Slot: petals

List of BLOSSOM-EDGEs. Runs through nodes in this blossom in cyclic order.

Type

list

Initargs

:petals

Readers

blossom-node-petals.

Writers

(setf blossom-node-petals).

Slot: parent

If this blossom is part of a nontrivial tree, point to parent.

Type

(or null anatevka::blossom-edge)

Initargs

:parent

Readers

blossom-node-parent.

Writers

(setf blossom-node-parent).

Slot: children

If this blossom is part of a tree, these are its children.

Type

list

Initargs

:children

Readers

blossom-node-children.

Writers

(setf blossom-node-children).

Slot: positive?

Parity of distance from root, as in C_2.

Type

boolean

Initform

t

Initargs

:positive?

Readers

blossom-node-positive?.

Writers

(setf blossom-node-positive?).

Slot: held-by-roots

LIST of ‘BLOSSOM-NODE’ roots who are causing us to ‘HOLD’.

Type

list

Initargs

:held-by-roots

Readers

blossom-node-held-by-roots.

Writers

(setf blossom-node-held-by-roots).

Class: dryad

PROCESS responsible for the injection and ejection of nodes from the blossom algorithm.

Package

anatevka.

Source

dryad.lisp.

Direct superclasses

process-lockable.

Direct methods
Direct slots
Slot: process-clock-rate
Package

aether.

Initform

anatevka:*dryad-default-clock-rate*

Slot: match-address

The ‘ADDRESS’ to which the ‘DRYAD’ will send REAP messages.

Type

aether:address

Initargs

:match-address

Readers

dryad-match-address.

Writers

(setf dryad-match-address).

Slot: ids

A map ADDRESS -> ID which records the id of a ‘BLOSSOM-NODE’ instance.

Type

hash-table

Initform

(make-hash-table :hash-function (function aether:hash-address) :test (function aether:address=))

Readers

dryad-ids.

Writers

(setf dryad-ids).

Slot: sprouted?

A map ADDRESS -> BOOLEAN which records whether a ‘BLOSSOM-NODE’ has begun participating in matches.

Type

hash-table

Initform

(make-hash-table :hash-function (function aether:hash-address) :test (function aether:address=))

Readers

dryad-sprouted?.

Writers

(setf dryad-sprouted?).


6.2 Internals


6.2.1 Special variables

Special Variable: *blossom-node-clock-rate*

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.

Package

anatevka.

Source

node.lisp.


6.2.2 Ordinary functions

Function: %make-blossom-edge (&key source-node source-vertex target-node target-vertex)
Package

anatevka.

Source

node.lisp.

Function: -> (obj &rest slots)

Analogous to the C expression obj->slot1->slot2->...->slotn.

Package

anatevka.

Source

utilities.lisp.

Function: (setf ->) (obj &rest slots)

Analogous to the C expression obj->slot1->slot2->...->slotn = value.

Package

anatevka.

Source

utilities.lisp.

Function: address-union (list1 list2)

Helper function for computing the union of two ‘LIST’s of ‘ADDRESS’es.

Package

anatevka.

Source

multireweight.lisp.

Function: array-from-fn (length fn &rest array-initargs)

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).

Package

anatevka.

Source

utilities.lisp.

Function: blossom-edge-p (object)
Package

anatevka.

Source

node.lisp.

Reader: blossom-edge-source-node (instance)
Writer: (setf blossom-edge-source-node) (instance)
Package

anatevka.

Source

node.lisp.

Target Slot

source-node.

Reader: blossom-edge-source-vertex (instance)
Writer: (setf blossom-edge-source-vertex) (instance)
Package

anatevka.

Source

node.lisp.

Target Slot

source-vertex.

Reader: blossom-edge-target-node (instance)
Writer: (setf blossom-edge-target-node) (instance)
Package

anatevka.

Source

node.lisp.

Target Slot

target-node.

Reader: blossom-edge-target-vertex (instance)
Writer: (setf blossom-edge-target-vertex) (instance)
Package

anatevka.

Source

node.lisp.

Target Slot

target-vertex.

Function: copy-blossom-edge (instance)
Package

anatevka.

Source

node.lisp.

Function: copy-data-frame-contract (instance)
Package

anatevka.

Source

contract.lisp.

Function: copy-data-frame-multireweight (instance)
Package

anatevka.

Source

multireweight.lisp.

Function: copy-data-frame-scan (instance)
Package

anatevka.

Source

scan.lisp.

Function: copy-data-frame-supervisor (instance)
Package

anatevka.

Source

supervisor.lisp.

Function: copy-message-adjoin-root (instance)
Package

anatevka.

Source

scan.lisp.

Function: copy-message-attach-parent (instance)
Package

anatevka.

Source

contract.lisp.

Function: copy-message-blossom-parent (instance)
Package

anatevka.

Source

expand.lisp.

Function: copy-message-broadcast-pingability (instance)
Package

anatevka.

Source

node.lisp.

Function: copy-message-broadcast-reweight (instance)
Package

anatevka.

Source

reweight.lisp.

Function: copy-message-convergecast-collect-roots (instance)
Package

anatevka.

Source

multireweight.lisp.

Function: copy-message-convert-child-to-petal (instance)
Package

anatevka.

Source

contract.lisp.

Function: copy-message-discover (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: copy-message-discovery (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: copy-message-expand (instance)
Package

anatevka.

Source

expand.lisp.

Function: copy-message-id-query (instance)
Package

anatevka.

Source

node.lisp.

Function: copy-message-percolate (instance)
Package

anatevka.

Source

augment.lisp.

Function: copy-message-ping (instance)
Package

anatevka.

Source

scan.lisp.

Function: copy-message-pong (instance)
Package

anatevka.

Source

scan.lisp.

Function: copy-message-push (instance)
Package

anatevka.

Source

node.lisp.

Function: copy-message-reap (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: copy-message-reattach-cycle-child (instance)
Package

anatevka.

Source

contract.lisp.

Function: copy-message-replace-child (instance)
Package

anatevka.

Source

expand.lisp.

Function: copy-message-root-path (instance)
Package

anatevka.

Source

contract.lisp.

Function: copy-message-scan (instance)
Package

anatevka.

Source

scan.lisp.

Function: copy-message-set (instance)
Package

anatevka.

Source

node.lisp.

Function: copy-message-set-up-blossom (instance)
Package

anatevka.

Source

contract.lisp.

Function: copy-message-soft-adjoin-root (instance)
Package

anatevka.

Source

scan.lisp.

Function: copy-message-soft-ping (instance)
Package

anatevka.

Source

scan.lisp.

Function: copy-message-soft-scan (instance)
Package

anatevka.

Source

scan.lisp.

Function: copy-message-sow (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: copy-message-sprout (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: copy-message-values (instance)
Package

anatevka.

Source

node.lisp.

Function: copy-message-wilt (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: copy-message-wilting (instance)
Package

anatevka.

Source

dryad-api.lisp.

Reader: data-frame-contract-fresh-blossom (instance)
Writer: (setf data-frame-contract-fresh-blossom) (instance)
Package

anatevka.

Source

contract.lisp.

Target Slot

fresh-blossom.

Function: data-frame-contract-p (object)
Package

anatevka.

Source

contract.lisp.

Reader: data-frame-contract-path (instance)
Writer: (setf data-frame-contract-path) (instance)
Package

anatevka.

Source

contract.lisp.

Target Slot

path.

Reader: data-frame-contract-peduncle-edge (instance)
Writer: (setf data-frame-contract-peduncle-edge) (instance)
Package

anatevka.

Source

contract.lisp.

Target Slot

peduncle-edge.

Reader: data-frame-contract-petal-child-edges (instance)
Writer: (setf data-frame-contract-petal-child-edges) (instance)
Package

anatevka.

Source

contract.lisp.

Target Slot

petal-child-edges.

Reader: data-frame-contract-pong (instance)
Writer: (setf data-frame-contract-pong) (instance)
Package

anatevka.

Source

contract.lisp.

Target Slot

pong.

Reader: data-frame-contract-stowed-rx-latch (instance)
Writer: (setf data-frame-contract-stowed-rx-latch) (instance)
Package

anatevka.

Source

contract.lisp.

Target Slot

stowed-rx-latch.

Reader: data-frame-contract-stowed-tx-latch (instance)
Writer: (setf data-frame-contract-stowed-tx-latch) (instance)
Package

anatevka.

Source

contract.lisp.

Target Slot

stowed-tx-latch.

Reader: data-frame-multireweight-hold-cluster (instance)
Writer: (setf data-frame-multireweight-hold-cluster) (instance)
Package

anatevka.

Source

multireweight.lisp.

Target Slot

hold-cluster.

Reader: data-frame-multireweight-internal-pong (instance)
Writer: (setf data-frame-multireweight-internal-pong) (instance)
Package

anatevka.

Source

multireweight.lisp.

Target Slot

internal-pong.

Function: data-frame-multireweight-p (object)
Package

anatevka.

Source

multireweight.lisp.

Reader: data-frame-scan-children (instance)
Writer: (setf data-frame-scan-children) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

children.

Reader: data-frame-scan-internal-roots (instance)
Writer: (setf data-frame-scan-internal-roots) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

internal-roots.

Reader: data-frame-scan-local-blossom (instance)
Writer: (setf data-frame-scan-local-blossom) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

local-blossom.

Reader: data-frame-scan-local-root (instance)
Writer: (setf data-frame-scan-local-root) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

local-root.

Reader: data-frame-scan-local-weight (instance)
Writer: (setf data-frame-scan-local-weight) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

local-weight.

Function: data-frame-scan-p (object)
Package

anatevka.

Source

scan.lisp.

Reader: data-frame-scan-petals (instance)
Writer: (setf data-frame-scan-petals) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

petals.

Reader: data-frame-scan-pong (instance)
Writer: (setf data-frame-scan-pong) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

pong.

Reader: data-frame-scan-repeat? (instance)
Writer: (setf data-frame-scan-repeat?) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

repeat?.

Reader: data-frame-scan-soft? (instance)
Writer: (setf data-frame-scan-soft?) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

soft?.

Reader: data-frame-scan-vertices (instance)
Writer: (setf data-frame-scan-vertices) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

vertices.

Reader: data-frame-scan-weight (instance)
Writer: (setf data-frame-scan-weight) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

weight.

Function: data-frame-supervisor-p (object)
Package

anatevka.

Source

supervisor.lisp.

Reader: data-frame-supervisor-pong (instance)
Writer: (setf data-frame-supervisor-pong) (instance)
Package

anatevka.

Source

supervisor.lisp.

Target Slot

pong.

Function: discard-args (fn)

Converts NIL -> B’ to A’ -> B’ by discarding the input.

Package

anatevka.

Source

utilities.lisp.

Function: edge= (x y)
Package

anatevka.

Source

node.lisp.

Function: find-even-arm (cycle start end &key key test rev reversed?)

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) .

Package

anatevka.

Source

node.lisp.

Function: latest-common-head (l r &key prev test key)

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)).

Package

anatevka.

Source

utilities.lisp.

Function: make-bool (val)

Turns a generalized boolean into a boolean.

Package

anatevka.

Source

utilities.lisp.

Function: make-data-frame-contract (&key pong path peduncle-edge fresh-blossom petal-child-edges stowed-rx-latch stowed-tx-latch)
Package

anatevka.

Source

contract.lisp.

Function: make-data-frame-multireweight (&key hold-cluster internal-pong)
Package

anatevka.

Source

multireweight.lisp.

Function: make-data-frame-scan (&key pong soft? local-root local-blossom local-weight vertices children petals weight internal-roots repeat?)
Package

anatevka.

Source

scan.lisp.

Function: make-data-frame-supervisor (&key pong)
Package

anatevka.

Source

supervisor.lisp.

Function: make-message-adjoin-root (&key reply-channel message-id match-edge ping pong positive?)
Package

anatevka.

Source

scan.lisp.

Function: make-message-attach-parent (&key reply-channel message-id fresh-blossom peduncle-edge)
Package

anatevka.

Source

contract.lisp.

Function: make-message-blossom-parent (&key reply-channel message-id stop-before)
Package

anatevka.

Source

expand.lisp.

Function: make-message-broadcast-pingability (&key reply-channel message-id ping-type)
Package

anatevka.

Source

node.lisp.

Function: make-message-broadcast-reweight (&key reply-channel message-id weight)
Package

anatevka.

Source

reweight.lisp.

Function: make-message-convergecast-collect-roots (&key reply-channel message-id hold-cluster)
Package

anatevka.

Source

multireweight.lisp.

Function: make-message-convert-child-to-petal (&key reply-channel message-id fresh-blossom)
Package

anatevka.

Source

contract.lisp.

Function: make-message-expand (&key reply-channel message-id)
Package

anatevka.

Source

expand.lisp.

Function: make-message-id-query (&key reply-channel message-id)
Package

anatevka.

Source

node.lisp.

Function: make-message-percolate (&key reply-channel message-id traversal-edge)
Package

anatevka.

Source

augment.lisp.

Function: make-message-ping (&key reply-channel message-id root blossom id weight internal-roots)
Package

anatevka.

Source

scan.lisp.

Function: make-message-pong (&key reply-channel message-id weight edges source-root target-root recommendation source-id root-bucket)
Package

anatevka.

Source

scan.lisp.

Function: make-message-push (&key reply-channel message-id slot value)
Package

anatevka.

Source

node.lisp.

Function: make-message-reattach-cycle-child (&key reply-channel message-id fresh-blossom)
Package

anatevka.

Source

contract.lisp.

Function: make-message-replace-child (&key reply-channel message-id old-child new-child)
Package

anatevka.

Source

expand.lisp.

Function: make-message-root-path (&key reply-channel message-id path)
Package

anatevka.

Source

contract.lisp.

Function: make-message-scan (&key reply-channel message-id local-root local-blossom weight internal-roots repeat?)
Package

anatevka.

Source

scan.lisp.

Function: make-message-set (&key reply-channel message-id slots values)
Package

anatevka.

Source

node.lisp.

Function: make-message-set-up-blossom (&key reply-channel message-id peduncle-edge petals petal-children)
Package

anatevka.

Source

contract.lisp.

Function: make-message-soft-adjoin-root (&key reply-channel message-id match-edge ping pong positive?)
Package

anatevka.

Source

scan.lisp.

Function: make-message-soft-ping (&key reply-channel message-id root blossom id weight internal-roots)
Package

anatevka.

Source

scan.lisp.

Function: make-message-soft-scan (&key reply-channel message-id local-root local-blossom weight internal-roots repeat?)
Package

anatevka.

Source

scan.lisp.

Function: make-message-values (&key reply-channel message-id values)
Package

anatevka.

Source

node.lisp.

Reader: message-adjoin-root-match-edge (instance)
Writer: (setf message-adjoin-root-match-edge) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

match-edge.

Function: message-adjoin-root-message-id (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-adjoin-root-message-id) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-adjoin-root-p (object)
Package

anatevka.

Source

scan.lisp.

Reader: message-adjoin-root-ping (instance)
Writer: (setf message-adjoin-root-ping) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

ping.

Reader: message-adjoin-root-pong (instance)
Writer: (setf message-adjoin-root-pong) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

pong.

Reader: message-adjoin-root-positive? (instance)
Writer: (setf message-adjoin-root-positive?) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

positive?.

Function: message-adjoin-root-reply-channel (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-adjoin-root-reply-channel) (instance)
Package

anatevka.

Source

scan.lisp.

Reader: message-attach-parent-fresh-blossom (instance)
Writer: (setf message-attach-parent-fresh-blossom) (instance)
Package

anatevka.

Source

contract.lisp.

Target Slot

fresh-blossom.

Function: message-attach-parent-message-id (instance)
Package

anatevka.

Source

contract.lisp.

Function: (setf message-attach-parent-message-id) (instance)
Package

anatevka.

Source

contract.lisp.

Function: message-attach-parent-p (object)
Package

anatevka.

Source

contract.lisp.

Reader: message-attach-parent-peduncle-edge (instance)
Writer: (setf message-attach-parent-peduncle-edge) (instance)
Package

anatevka.

Source

contract.lisp.

Target Slot

peduncle-edge.

Function: message-attach-parent-reply-channel (instance)
Package

anatevka.

Source

contract.lisp.

Function: (setf message-attach-parent-reply-channel) (instance)
Package

anatevka.

Source

contract.lisp.

Function: message-blossom-parent-message-id (instance)
Package

anatevka.

Source

expand.lisp.

Function: (setf message-blossom-parent-message-id) (instance)
Package

anatevka.

Source

expand.lisp.

Function: message-blossom-parent-p (object)
Package

anatevka.

Source

expand.lisp.

Function: message-blossom-parent-reply-channel (instance)
Package

anatevka.

Source

expand.lisp.

Function: (setf message-blossom-parent-reply-channel) (instance)
Package

anatevka.

Source

expand.lisp.

Reader: message-blossom-parent-stop-before (instance)
Writer: (setf message-blossom-parent-stop-before) (instance)
Package

anatevka.

Source

expand.lisp.

Target Slot

stop-before.

Function: message-broadcast-pingability-message-id (instance)
Package

anatevka.

Source

node.lisp.

Function: (setf message-broadcast-pingability-message-id) (instance)
Package

anatevka.

Source

node.lisp.

Function: message-broadcast-pingability-p (object)
Package

anatevka.

Source

node.lisp.

Reader: message-broadcast-pingability-ping-type (instance)
Writer: (setf message-broadcast-pingability-ping-type) (instance)
Package

anatevka.

Source

node.lisp.

Target Slot

ping-type.

Function: message-broadcast-pingability-reply-channel (instance)
Package

anatevka.

Source

node.lisp.

Function: (setf message-broadcast-pingability-reply-channel) (instance)
Package

anatevka.

Source

node.lisp.

Function: message-broadcast-reweight-message-id (instance)
Package

anatevka.

Source

reweight.lisp.

Function: (setf message-broadcast-reweight-message-id) (instance)
Package

anatevka.

Source

reweight.lisp.

Function: message-broadcast-reweight-p (object)
Package

anatevka.

Source

reweight.lisp.

Function: message-broadcast-reweight-reply-channel (instance)
Package

anatevka.

Source

reweight.lisp.

Function: (setf message-broadcast-reweight-reply-channel) (instance)
Package

anatevka.

Source

reweight.lisp.

Reader: message-broadcast-reweight-weight (instance)
Writer: (setf message-broadcast-reweight-weight) (instance)
Package

anatevka.

Source

reweight.lisp.

Target Slot

weight.

Reader: message-convergecast-collect-roots-hold-cluster (instance)
Writer: (setf message-convergecast-collect-roots-hold-cluster) (instance)
Package

anatevka.

Source

multireweight.lisp.

Target Slot

hold-cluster.

Function: message-convergecast-collect-roots-message-id (instance)
Package

anatevka.

Source

multireweight.lisp.

Function: (setf message-convergecast-collect-roots-message-id) (instance)
Package

anatevka.

Source

multireweight.lisp.

Function: message-convergecast-collect-roots-p (object)
Package

anatevka.

Source

multireweight.lisp.

Function: message-convergecast-collect-roots-reply-channel (instance)
Package

anatevka.

Source

multireweight.lisp.

Function: (setf message-convergecast-collect-roots-reply-channel) (instance)
Package

anatevka.

Source

multireweight.lisp.

Reader: message-convert-child-to-petal-fresh-blossom (instance)
Writer: (setf message-convert-child-to-petal-fresh-blossom) (instance)
Package

anatevka.

Source

contract.lisp.

Target Slot

fresh-blossom.

Function: message-convert-child-to-petal-message-id (instance)
Package

anatevka.

Source

contract.lisp.

Function: (setf message-convert-child-to-petal-message-id) (instance)
Package

anatevka.

Source

contract.lisp.

Function: message-convert-child-to-petal-p (object)
Package

anatevka.

Source

contract.lisp.

Function: message-convert-child-to-petal-reply-channel (instance)
Package

anatevka.

Source

contract.lisp.

Function: (setf message-convert-child-to-petal-reply-channel) (instance)
Package

anatevka.

Source

contract.lisp.

Function: message-discover-message-id (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: (setf message-discover-message-id) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-discover-p (object)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-discover-reply-channel (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: (setf message-discover-reply-channel) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-discovery-message-id (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: (setf message-discovery-message-id) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-discovery-p (object)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-discovery-reply-channel (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: (setf message-discovery-reply-channel) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-expand-message-id (instance)
Package

anatevka.

Source

expand.lisp.

Function: (setf message-expand-message-id) (instance)
Package

anatevka.

Source

expand.lisp.

Function: message-expand-p (object)
Package

anatevka.

Source

expand.lisp.

Function: message-expand-reply-channel (instance)
Package

anatevka.

Source

expand.lisp.

Function: (setf message-expand-reply-channel) (instance)
Package

anatevka.

Source

expand.lisp.

Function: message-id-query-message-id (instance)
Package

anatevka.

Source

node.lisp.

Function: (setf message-id-query-message-id) (instance)
Package

anatevka.

Source

node.lisp.

Function: message-id-query-p (object)
Package

anatevka.

Source

node.lisp.

Function: message-id-query-reply-channel (instance)
Package

anatevka.

Source

node.lisp.

Function: (setf message-id-query-reply-channel) (instance)
Package

anatevka.

Source

node.lisp.

Function: message-percolate-message-id (instance)
Package

anatevka.

Source

augment.lisp.

Function: (setf message-percolate-message-id) (instance)
Package

anatevka.

Source

augment.lisp.

Function: message-percolate-p (object)
Package

anatevka.

Source

augment.lisp.

Function: message-percolate-reply-channel (instance)
Package

anatevka.

Source

augment.lisp.

Function: (setf message-percolate-reply-channel) (instance)
Package

anatevka.

Source

augment.lisp.

Reader: message-percolate-traversal-edge (instance)
Writer: (setf message-percolate-traversal-edge) (instance)
Package

anatevka.

Source

augment.lisp.

Target Slot

traversal-edge.

Reader: message-ping-blossom (instance)
Writer: (setf message-ping-blossom) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

blossom.

Reader: message-ping-id (instance)
Writer: (setf message-ping-id) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

id.

Reader: message-ping-internal-roots (instance)
Writer: (setf message-ping-internal-roots) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

internal-roots.

Function: message-ping-message-id (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-ping-message-id) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-ping-p (object)
Package

anatevka.

Source

scan.lisp.

Function: message-ping-reply-channel (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-ping-reply-channel) (instance)
Package

anatevka.

Source

scan.lisp.

Reader: message-ping-root (instance)
Writer: (setf message-ping-root) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

root.

Reader: message-ping-weight (instance)
Writer: (setf message-ping-weight) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

weight.

Reader: message-pong-edges (instance)
Writer: (setf message-pong-edges) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

edges.

Function: message-pong-message-id (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-pong-message-id) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-pong-p (object)
Package

anatevka.

Source

scan.lisp.

Reader: message-pong-recommendation (instance)
Writer: (setf message-pong-recommendation) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

recommendation.

Function: message-pong-reply-channel (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-pong-reply-channel) (instance)
Package

anatevka.

Source

scan.lisp.

Reader: message-pong-root-bucket (instance)
Writer: (setf message-pong-root-bucket) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

root-bucket.

Reader: message-pong-source-id (instance)
Writer: (setf message-pong-source-id) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

source-id.

Reader: message-pong-source-root (instance)
Writer: (setf message-pong-source-root) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

source-root.

Reader: message-pong-target-root (instance)
Writer: (setf message-pong-target-root) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

target-root.

Reader: message-pong-weight (instance)
Writer: (setf message-pong-weight) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

weight.

Function: message-push-message-id (instance)
Package

anatevka.

Source

node.lisp.

Function: (setf message-push-message-id) (instance)
Package

anatevka.

Source

node.lisp.

Function: message-push-p (object)
Package

anatevka.

Source

node.lisp.

Function: message-push-reply-channel (instance)
Package

anatevka.

Source

node.lisp.

Function: (setf message-push-reply-channel) (instance)
Package

anatevka.

Source

node.lisp.

Reader: message-push-slot (instance)
Writer: (setf message-push-slot) (instance)
Package

anatevka.

Source

node.lisp.

Target Slot

slot.

Reader: message-push-value (instance)
Writer: (setf message-push-value) (instance)
Package

anatevka.

Source

node.lisp.

Target Slot

value.

Function: message-reap-message-id (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: (setf message-reap-message-id) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-reap-p (object)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-reap-reply-channel (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: (setf message-reap-reply-channel) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Reader: message-reattach-cycle-child-fresh-blossom (instance)
Writer: (setf message-reattach-cycle-child-fresh-blossom) (instance)
Package

anatevka.

Source

contract.lisp.

Target Slot

fresh-blossom.

Function: message-reattach-cycle-child-message-id (instance)
Package

anatevka.

Source

contract.lisp.

Function: (setf message-reattach-cycle-child-message-id) (instance)
Package

anatevka.

Source

contract.lisp.

Function: message-reattach-cycle-child-p (object)
Package

anatevka.

Source

contract.lisp.

Function: message-reattach-cycle-child-reply-channel (instance)
Package

anatevka.

Source

contract.lisp.

Function: (setf message-reattach-cycle-child-reply-channel) (instance)
Package

anatevka.

Source

contract.lisp.

Function: message-replace-child-message-id (instance)
Package

anatevka.

Source

expand.lisp.

Function: (setf message-replace-child-message-id) (instance)
Package

anatevka.

Source

expand.lisp.

Reader: message-replace-child-new-child (instance)
Writer: (setf message-replace-child-new-child) (instance)
Package

anatevka.

Source

expand.lisp.

Target Slot

new-child.

Reader: message-replace-child-old-child (instance)
Writer: (setf message-replace-child-old-child) (instance)
Package

anatevka.

Source

expand.lisp.

Target Slot

old-child.

Function: message-replace-child-p (object)
Package

anatevka.

Source

expand.lisp.

Function: message-replace-child-reply-channel (instance)
Package

anatevka.

Source

expand.lisp.

Function: (setf message-replace-child-reply-channel) (instance)
Package

anatevka.

Source

expand.lisp.

Function: message-root-path-message-id (instance)
Package

anatevka.

Source

contract.lisp.

Function: (setf message-root-path-message-id) (instance)
Package

anatevka.

Source

contract.lisp.

Function: message-root-path-p (object)
Package

anatevka.

Source

contract.lisp.

Reader: message-root-path-path (instance)
Writer: (setf message-root-path-path) (instance)
Package

anatevka.

Source

contract.lisp.

Target Slot

path.

Function: message-root-path-reply-channel (instance)
Package

anatevka.

Source

contract.lisp.

Function: (setf message-root-path-reply-channel) (instance)
Package

anatevka.

Source

contract.lisp.

Reader: message-scan-internal-roots (instance)
Writer: (setf message-scan-internal-roots) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

internal-roots.

Reader: message-scan-local-blossom (instance)
Writer: (setf message-scan-local-blossom) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

local-blossom.

Reader: message-scan-local-root (instance)
Writer: (setf message-scan-local-root) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

local-root.

Function: message-scan-message-id (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-scan-message-id) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-scan-p (object)
Package

anatevka.

Source

scan.lisp.

Reader: message-scan-repeat? (instance)
Writer: (setf message-scan-repeat?) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

repeat?.

Function: message-scan-reply-channel (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-scan-reply-channel) (instance)
Package

anatevka.

Source

scan.lisp.

Reader: message-scan-weight (instance)
Writer: (setf message-scan-weight) (instance)
Package

anatevka.

Source

scan.lisp.

Target Slot

weight.

Function: message-set-message-id (instance)
Package

anatevka.

Source

node.lisp.

Function: (setf message-set-message-id) (instance)
Package

anatevka.

Source

node.lisp.

Function: message-set-p (object)
Package

anatevka.

Source

node.lisp.

Function: message-set-reply-channel (instance)
Package

anatevka.

Source

node.lisp.

Function: (setf message-set-reply-channel) (instance)
Package

anatevka.

Source

node.lisp.

Reader: message-set-slots (instance)
Writer: (setf message-set-slots) (instance)
Package

anatevka.

Source

node.lisp.

Target Slot

slots.

Function: message-set-up-blossom-message-id (instance)
Package

anatevka.

Source

contract.lisp.

Function: (setf message-set-up-blossom-message-id) (instance)
Package

anatevka.

Source

contract.lisp.

Function: message-set-up-blossom-p (object)
Package

anatevka.

Source

contract.lisp.

Reader: message-set-up-blossom-peduncle-edge (instance)
Writer: (setf message-set-up-blossom-peduncle-edge) (instance)
Package

anatevka.

Source

contract.lisp.

Target Slot

peduncle-edge.

Reader: message-set-up-blossom-petal-children (instance)
Writer: (setf message-set-up-blossom-petal-children) (instance)
Package

anatevka.

Source

contract.lisp.

Target Slot

petal-children.

Reader: message-set-up-blossom-petals (instance)
Writer: (setf message-set-up-blossom-petals) (instance)
Package

anatevka.

Source

contract.lisp.

Target Slot

petals.

Function: message-set-up-blossom-reply-channel (instance)
Package

anatevka.

Source

contract.lisp.

Function: (setf message-set-up-blossom-reply-channel) (instance)
Package

anatevka.

Source

contract.lisp.

Reader: message-set-values (instance)
Writer: (setf message-set-values) (instance)
Package

anatevka.

Source

node.lisp.

Target Slot

values.

Function: message-soft-adjoin-root-match-edge (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-adjoin-root-match-edge) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-adjoin-root-message-id (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-adjoin-root-message-id) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-adjoin-root-p (object)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-adjoin-root-ping (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-adjoin-root-ping) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-adjoin-root-pong (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-adjoin-root-pong) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-adjoin-root-positive? (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-adjoin-root-positive?) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-adjoin-root-reply-channel (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-adjoin-root-reply-channel) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-ping-blossom (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-ping-blossom) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-ping-id (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-ping-id) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-ping-internal-roots (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-ping-internal-roots) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-ping-message-id (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-ping-message-id) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-ping-p (object)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-ping-reply-channel (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-ping-reply-channel) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-ping-root (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-ping-root) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-ping-weight (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-ping-weight) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-scan-internal-roots (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-scan-internal-roots) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-scan-local-blossom (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-scan-local-blossom) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-scan-local-root (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-scan-local-root) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-scan-message-id (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-scan-message-id) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-scan-p (object)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-scan-repeat? (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-scan-repeat?) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-scan-reply-channel (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-scan-reply-channel) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-soft-scan-weight (instance)
Package

anatevka.

Source

scan.lisp.

Function: (setf message-soft-scan-weight) (instance)
Package

anatevka.

Source

scan.lisp.

Function: message-sow-message-id (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: (setf message-sow-message-id) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-sow-p (object)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-sow-reply-channel (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: (setf message-sow-reply-channel) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-sprout-message-id (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: (setf message-sprout-message-id) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-sprout-p (object)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-sprout-reply-channel (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: (setf message-sprout-reply-channel) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-values-message-id (instance)
Package

anatevka.

Source

node.lisp.

Function: (setf message-values-message-id) (instance)
Package

anatevka.

Source

node.lisp.

Function: message-values-p (object)
Package

anatevka.

Source

node.lisp.

Function: message-values-reply-channel (instance)
Package

anatevka.

Source

node.lisp.

Function: (setf message-values-reply-channel) (instance)
Package

anatevka.

Source

node.lisp.

Reader: message-values-values (instance)
Writer: (setf message-values-values) (instance)
Package

anatevka.

Source

node.lisp.

Target Slot

values.

Function: message-wilt-message-id (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: (setf message-wilt-message-id) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-wilt-p (object)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-wilt-reply-channel (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: (setf message-wilt-reply-channel) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-wilting-message-id (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: (setf message-wilting-message-id) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-wilting-p (object)
Package

anatevka.

Source

dryad-api.lisp.

Function: message-wilting-reply-channel (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: (setf message-wilting-reply-channel) (instance)
Package

anatevka.

Source

dryad-api.lisp.

Function: pick-randomly (list)

Picks uniformly randomly from a noncircular list.

Package

anatevka.

Source

utilities.lisp.

Function: pick-the-other (thing option1 option2)

Selects the "other" item from a pair.

Package

anatevka.

Source

utilities.lisp.

Function: pong= (stale-pong replica-pong)

Checks whether two PONGs recommend the same operation.

Package

anatevka.

Source

scan.lisp.

Function: reduce-log (log)

Trims log messages to only ones of primary interest.

Package

anatevka.

Source

logger.lisp.

Function: reverse-blossom-edge (edge)

(Nondestructively) reverses the directionality of EDGE.

Package

anatevka.

Source

node.lisp.

Function: reverse-blossom-edges (edges &optional acc)

(Nondestructively) reverses the directionality of a path of EDGEs.

Package

anatevka.

Source

node.lisp.

Function: successful-supervisors (entries)

Collects addresses of supervisors which either complete successfully or fail to complete at all.

Package

anatevka.

Source

logger.lisp.

Function: vertex? (node)

Is NODE a VERTEX? (That is: does it have blossom children that it’s contracting?)

Package

anatevka.

Source

node.lisp.

Function: vnth (index array)

Like NTH, but for vectors.

Package

anatevka.

Source

utilities.lisp.


6.2.3 Generic functions

Generic Reader: blossom-node-children (object)
Generic Writer: (setf blossom-node-children) (object)
Package

anatevka.

Methods
Reader Method: blossom-node-children ((blossom-node blossom-node))
Writer Method: (setf blossom-node-children) ((blossom-node blossom-node))

If this blossom is part of a tree, these are its children.

Source

node.lisp.

Target Slot

children.

Generic Reader: blossom-node-dryad (object)
Generic Writer: (setf blossom-node-dryad) (object)
Package

anatevka.

Methods
Reader Method: blossom-node-dryad ((blossom-node blossom-node))
Writer Method: (setf blossom-node-dryad) ((blossom-node blossom-node))

The address of the host DRYAD.

Source

node.lisp.

Target Slot

dryad.

Generic Reader: blossom-node-held-by-roots (object)
Generic Writer: (setf blossom-node-held-by-roots) (object)
Package

anatevka.

Methods
Reader Method: blossom-node-held-by-roots ((blossom-node blossom-node))
Writer Method: (setf blossom-node-held-by-roots) ((blossom-node blossom-node))

LIST of ‘BLOSSOM-NODE’ roots who are causing us to ‘HOLD’.

Source

node.lisp.

Target Slot

held-by-roots.

Generic Reader: blossom-node-id (object)
Generic Writer: (setf blossom-node-id) (object)
Package

anatevka.

Methods
Reader Method: blossom-node-id ((blossom-node blossom-node))
Writer Method: (setf blossom-node-id) ((blossom-node blossom-node))

Internal name for this blossom node. Used by VERTEX-VERTEX-DISTANCE to the edge weight in the graph.

Source

node.lisp.

Target Slot

id.

Generic Reader: blossom-node-internal-weight (object)
Generic Writer: (setf blossom-node-internal-weight) (object)
Package

anatevka.

Methods
Reader Method: blossom-node-internal-weight ((blossom-node blossom-node))
Writer Method: (setf blossom-node-internal-weight) ((blossom-node blossom-node))

The dual weight y_v in the algorithm.

Source

node.lisp.

Target Slot

internal-weight.

Generic Reader: blossom-node-match-edge (object)
Generic Writer: (setf blossom-node-match-edge) (object)
Package

anatevka.

Methods
Reader Method: blossom-node-match-edge ((blossom-node blossom-node))
Writer Method: (setf blossom-node-match-edge) ((blossom-node blossom-node))

If this vertex is matched, point to the match.

Source

node.lisp.

Target Slot

match-edge.

Generic Reader: blossom-node-parent (object)
Generic Writer: (setf blossom-node-parent) (object)
Package

anatevka.

Methods
Reader Method: blossom-node-parent ((blossom-node blossom-node))
Writer Method: (setf blossom-node-parent) ((blossom-node blossom-node))

If this blossom is part of a nontrivial tree, point to parent.

Source

node.lisp.

Target Slot

parent.

Generic Reader: blossom-node-paused? (object)
Generic Writer: (setf blossom-node-paused?) (object)
Package

anatevka.

Methods
Reader Method: blossom-node-paused? ((blossom-node blossom-node))
Writer Method: (setf blossom-node-paused?) ((blossom-node blossom-node))

If T, do not start a new scan.

Source

node.lisp.

Target Slot

paused?.

Generic Reader: blossom-node-petals (object)
Generic Writer: (setf blossom-node-petals) (object)
Package

anatevka.

Methods
Reader Method: blossom-node-petals ((blossom-node blossom-node))
Writer Method: (setf blossom-node-petals) ((blossom-node blossom-node))

List of BLOSSOM-EDGEs. Runs through nodes in this blossom in cyclic order.

Source

node.lisp.

Target Slot

petals.

Generic Reader: blossom-node-pingable (object)
Generic Writer: (setf blossom-node-pingable) (object)
Package

anatevka.

Methods
Reader Method: blossom-node-pingable ((blossom-node blossom-node))
Writer Method: (setf blossom-node-pingable) ((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.

Source

node.lisp.

Target Slot

pingable.

Generic Reader: blossom-node-pistil (object)
Generic Writer: (setf blossom-node-pistil) (object)
Package

anatevka.

Methods
Reader Method: blossom-node-pistil ((blossom-node blossom-node))
Writer Method: (setf blossom-node-pistil) ((blossom-node blossom-node))

(Immediate) blossom that this vertex belongs to.

Source

node.lisp.

Target Slot

pistil.

Generic Reader: blossom-node-positive? (object)
Generic Writer: (setf blossom-node-positive?) (object)
Package

anatevka.

Methods
Reader Method: blossom-node-positive? ((blossom-node blossom-node))
Writer Method: (setf blossom-node-positive?) ((blossom-node blossom-node))

Parity of distance from root, as in C_2.

Source

node.lisp.

Target Slot

positive?.

Generic Reader: blossom-node-wilting (object)
Generic Writer: (setf blossom-node-wilting) (object)
Package

anatevka.

Methods
Reader Method: blossom-node-wilting ((blossom-node blossom-node))
Writer Method: (setf blossom-node-wilting) ((blossom-node blossom-node))

If T, BLOSSOM-NODE has lost the will to live.

Source

node.lisp.

Target Slot

wilting.

Generic Function: handle-message-adjoin-root (node message now)
Package

anatevka.

Methods
Method: handle-message-adjoin-root ((node 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.

Source

scan.lisp.

Generic Function: handle-message-attach-parent (node message now)
Package

anatevka.

Methods
Method: handle-message-attach-parent ((node blossom-node) (message message-attach-parent) now)
Source

contract.lisp.

Generic Function: handle-message-blossom-parent (node message now)
Package

anatevka.

Methods
Method: handle-message-blossom-parent ((node 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.

Source

expand.lisp.

Generic Function: handle-message-broadcast-pingability (node message now)
Package

anatevka.

Methods
Method: handle-message-broadcast-pingability ((node blossom-node) (message message-broadcast-pingability) now)
Source

node.lisp.

Generic Function: handle-message-broadcast-reweight (node message now)
Package

anatevka.

Methods
Method: handle-message-broadcast-reweight ((node blossom-node) (message message-broadcast-reweight) now)
Source

reweight.lisp.

Generic Function: handle-message-convergecast-collect-roots (node message now)
Package

anatevka.

Methods
Method: handle-message-convergecast-collect-roots ((node blossom-node) (message message-convergecast-collect-roots) now)
Source

multireweight.lisp.

Generic Function: handle-message-convert-child-to-petal (node message now)
Package

anatevka.

Methods
Method: handle-message-convert-child-to-petal ((node blossom-node) (message message-convert-child-to-petal) now)
Source

contract.lisp.

Generic Function: handle-message-expand (node message now)
Package

anatevka.

Methods
Method: handle-message-expand ((node blossom-node) (message message-expand) now)

Starts the procedure for popping a contracting blossom.

Source

expand.lisp.

Generic Function: handle-message-id-query (node message now)
Package

anatevka.

Methods
Method: handle-message-id-query ((node blossom-node) (message message-id-query) now)
Source

node.lisp.

Generic Function: handle-message-percolate (node message now)
Package

anatevka.

Methods
Method: handle-message-percolate ((node blossom-node) (message message-percolate) now)

Performs a step in the path augmentation process.

Source

augment.lisp.

Generic Function: handle-message-ping (node message now)
Package

anatevka.

Methods
Method: handle-message-ping ((node blossom-node) (message message-ping) now)

Begins the process of responding to a PING message: starts an ADJOIN-ROOT sequence.

Source

scan.lisp.

Generic Function: handle-message-push (node message now)
Package

anatevka.

Methods
Method: handle-message-push ((node blossom-node) (message message-push) now)
Source

node.lisp.

Generic Function: handle-message-reattach-cycle-child (node message now)
Package

anatevka.

Methods
Method: handle-message-reattach-cycle-child ((node blossom-node) (message message-reattach-cycle-child) now)
Source

contract.lisp.

Generic Function: handle-message-replace-child (node message now)
Package

anatevka.

Methods
Method: handle-message-replace-child ((node blossom-node) (message message-replace-child) now)
Source

expand.lisp.

Generic Function: handle-message-root-path (node message now)
Package

anatevka.

Methods
Method: handle-message-root-path ((node blossom-node) (message message-root-path) now)

Calculates the path from a blossom through to the tree root (consisting only of toplevel blossoms).

Source

contract.lisp.

Generic Function: handle-message-scan (node message now)
Package

anatevka.

Methods
Method: handle-message-scan ((node blossom-node) (message message-scan) now)

Begins a scanning process.

Source

scan.lisp.

Generic Function: handle-message-set (node message now)
Package

anatevka.

Methods
Method: handle-message-set ((node blossom-node) (message message-set) now)
Source

node.lisp.

Generic Function: handle-message-set-up-blossom (node message now)
Package

anatevka.

Methods
Method: handle-message-set-up-blossom ((node blossom-node) (message message-set-up-blossom) now)
Source

contract.lisp.

Generic Function: handle-message-sprout-on-blossom (node message now)
Package

anatevka.

Methods
Method: handle-message-sprout-on-blossom ((node blossom-node) (message message-sprout) now)

Handles a request that a root node (perhaps not a vertex) alert the DRYAD that it has sprouted.

Source

node.lisp.

Generic Function: handle-message-values (node message now)
Package

anatevka.

Methods
Method: handle-message-values ((node blossom-node) (message message-values) now)
Source

node.lisp.

Generic Function: handle-message-wilt (node message now)
Package

anatevka.

Methods
Method: handle-message-wilt ((node blossom-node) (message message-wilt) now)
Source

node.lisp.

Generic Function: handler-message-discover (dryad message now)
Package

anatevka.

Methods
Method: handler-message-discover ((dryad 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.

Source

dryad.lisp.

Generic Function: handler-message-sow (dryad message now)
Package

anatevka.

Methods
Method: handler-message-sow ((dryad 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.

Source

dryad.lisp.

Generic Function: handler-message-sprout (dryad message now)
Package

anatevka.

Methods
Method: handler-message-sprout ((dryad dryad) (message message-sprout) now)

Handles a SPROUT message, indicating that a BLOSSOM-NODE has been matched (for the first time).

Source

dryad.lisp.

Generic Function: handler-message-wilting (dryad message now)
Package

anatevka.

Methods
Method: handler-message-wilting ((dryad dryad) (message message-wilting) now)
Source

dryad.lisp.

Generic Function: make-pong (node &rest initargs)
Package

anatevka.

Methods
Method: make-pong ((node blossom-node) &rest initargs)

Wrapper for generating a pong message of the appropriate type for ‘NODE’.

Source

scan.lisp.

Generic Function: make-supervisor (node &rest initargs)
Package

anatevka.

Methods
Method: make-supervisor ((node blossom-node) &rest initargs)

Wrapper for generating a supervisor of the appropriate type for ‘NODE’.

Source

scan.lisp.

Generic Function: print-log-entry (entry source-type entry-type &optional stream)
Package

anatevka.

Methods
Method: print-log-entry (entry (source-type (eql anatevka:dryad)) (entry-type (eql anatevka::handling-sow)) &optional stream)
Source

logger.lisp.

Method: print-log-entry (entry (source-type (eql anatevka:blossom-node)) (entry-type (eql anatevka::set-up-blossom)) &optional stream)

Log entry for when a blossom node finishes setting itself up.

Source

logger.lisp.

Method: print-log-entry (entry (source-type (eql anatevka::supervisor)) (entry-type (eql anatevka::success)) &optional stream)
Source

logger.lisp.

Method: print-log-entry (entry (source-type (eql anatevka::supervisor)) (entry-type (eql anatevka::got-recommendation)) &optional stream)
Source

logger.lisp.

Generic Function: recommend (node ping pong adjoin-root)

Computes an action to propose as part of a PONG.

Package

anatevka.

Source

scan.lisp.

Methods
Method: recommend ((node blossom-node) ping pong adjoin-root)
Generic Function: supervisor-command-from-recommendation (recommendation)

Converts a PONG recommendation to a supervisor procedure jump point.

Package

anatevka.

Source

supervisor.lisp.

Methods
Method: supervisor-command-from-recommendation (recommendation)
Method: supervisor-command-from-recommendation ((recommendation (eql :augment)))
Method: supervisor-command-from-recommendation ((recommendation (eql :graft)))
Method: supervisor-command-from-recommendation ((recommendation (eql :contract)))
Method: supervisor-command-from-recommendation ((recommendation (eql :expand)))
Method: supervisor-command-from-recommendation ((recommendation (eql :hold)))
Generic Reader: supervisor-node-class (object)
Generic Writer: (setf supervisor-node-class) (object)
Package

anatevka.

Methods
Reader Method: supervisor-node-class ((supervisor supervisor))
Writer Method: (setf supervisor-node-class) ((supervisor supervisor))

The class identifier who spawned this SUPERVISOR.

Source

supervisor.lisp.

Target Slot

node-class.

Generic Function: unify-pongs (x y &key internal-root-set)
Package

anatevka.

Methods
Method: unify-pongs (x (y 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.

Source

scan.lisp.


6.2.4 Standalone methods

Method: message-dispatch ((node0 dryad) now2)
Package

aether.

Source

dryad.lisp.

Method: message-dispatch ((node0 blossom-node) now2)
Package

aether.

Source

node.lisp.

Method: message-dispatch ((node0 supervisor) now2)
Package

aether.

Source

supervisor.lisp.

Method: process-upkeep ((dryad dryad) now (command-place0 (eql anatevka::wind-down)) argument-list1)
Package

aether.

Source

dryad.lisp.

Method: process-upkeep ((dryad dryad) now (command-place0 (eql anatevka::send-expand)) argument-list1)

Directs SPROUT to perform blossom expansion.

Package

aether.

Source

dryad.lisp.

Method: process-upkeep ((dryad dryad) now (command-place0 (eql anatevka::sprouts-loop)) argument-list1)

Loop over sprouted nodes, looking for ripe pairs.

Package

aether.

Source

dryad.lisp.

Method: process-upkeep ((dryad dryad) now (command-place0 (eql aether:start)) argument-list1)

Start listening for ripe sprouted pairs.

Package

aether.

Source

dryad.lisp.

Method: process-upkeep ((node blossom-node) now (command-place0 (eql anatevka::extinguish-blossom)) argument-list1)

Tell this blossom process to die.

Package

aether.

Source

expand.lisp.

Method: process-upkeep ((node 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.

Package

aether.

Source

expand.lisp.

Method: process-upkeep ((node 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.

Package

aether.

Source

expand.lisp.

Method: process-upkeep ((node 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.

Package

aether.

Source

expand.lisp.

Method: process-upkeep ((node 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).

Package

aether.

Source

expand.lisp.

Method: process-upkeep ((node blossom-node) now (command-place0 (eql anatevka::expand-blossom)) argument-list1)

Sets up the EXPAND stack frame.

Package

aether.

Source

expand.lisp.

Method: process-upkeep ((node 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.

Package

aether.

Source

scan.lisp.

Method: process-upkeep ((node 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.

Package

aether.

Source

scan.lisp.

Method: process-upkeep ((node blossom-node) now (command-place0 (eql anatevka::forward-scan)) argument-list1)

Sends a SCAN message to each of the children tabulated in ADDRESSES.

Package

aether.

Source

scan.lisp.

Method: process-upkeep ((node 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.

Package

aether.

Source

scan.lisp.

Method: process-upkeep ((node 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.

Package

aether.

Source

scan.lisp.

Method: process-upkeep ((node blossom-node) now (command-place0 (eql anatevka::start-scan)) argument-list1)

Sets up the scanning procedure stack frames.

Package

aether.

Source

scan.lisp.

Method: process-upkeep ((node blossom-node) now (command-place0 (eql aether::%finish-unlock)) argument-list1)
Package

aether.

Source

lock.lisp.

Method: process-upkeep ((node blossom-node) now (command-place0 (eql anatevka::idle)) argument-list1)
Package

aether.

Source

node.lisp.

Method: process-upkeep ((node 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.

Package

aether.

Source

node.lisp.

Method: process-upkeep ((node 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.

Package

aether.

Source

node.lisp.

Method: process-upkeep ((supervisor 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.

Package

aether.

Source

reweight.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::broadcast-reweight)) argument-list1)

Instruct some ‘ROOTS’ to reweight their trees by ‘WEIGHT’.

Package

aether.

Source

reweight.lisp.

Method: process-upkeep ((supervisor 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.

Package

aether.

Source

reweight.lisp.

Method: process-upkeep ((supervisor 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.

Package

aether.

Source

reweight.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::finish-multireweight)) argument-list1)

Clean up after the local state of the multireweight operation.

Package

aether.

Source

multireweight.lisp.

Method: process-upkeep ((supervisor 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.

Package

aether.

Source

multireweight.lisp.

Method: process-upkeep ((supervisor 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.

Package

aether.

Source

multireweight.lisp.

Method: process-upkeep ((supervisor 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.

Package

aether.

Source

multireweight.lisp.

Method: process-upkeep ((supervisor 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.

Package

aether.

Source

multireweight.lisp.

Method: process-upkeep ((supervisor 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.

Package

aether.

Source

multireweight.lisp.

Method: process-upkeep ((supervisor 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.

Package

aether.

Source

multireweight.lisp.

Method: process-upkeep ((supervisor 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.

Package

aether.

Source

multireweight.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::handle-new-blossom)) argument-list1)

Tell the blossom itself what’s up.

Package

aether.

Source

contract.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::handle-blossom-sub-children)) argument-list1)

Tell all the other children what’s up.

Package

aether.

Source

contract.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::handle-petals)) argument-list1)

Tell the blossom’s petals what’s up.

Package

aether.

Source

contract.lisp.

Method: process-upkeep ((supervisor 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.

Package

aether.

Source

contract.lisp.

Method: process-upkeep ((supervisor 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)

Package

aether.

Source

contract.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::release-stowed-lock)) argument-list1)
Package

aether.

Source

contract.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::stow-lock)) argument-list1)
Package

aether.

Source

contract.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::start-inner-contract)) argument-list1)

Begins the critical section of the CONTRACT routine.

Package

aether.

Source

contract.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::start-contract)) argument-list1)

Begins the CONTRACT routine, sets up the stack frames.

Package

aether.

Source

contract.lisp.

Method: process-upkeep ((supervisor 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.

Package

aether.

Source

expand.lisp.

Method: process-upkeep ((supervisor 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.

Package

aether.

Source

expand.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::start-expand)) argument-list1)

Sets up the expand procedure.

Package

aether.

Source

expand.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::augment)) argument-list1)

Perform an augmentation along a given edge.

Package

aether.

Source

augment.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::start-augment)) argument-list1)

Sets up the augmentation procedure.

Package

aether.

Source

augment.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::install-positivity)) argument-list1)

Sets a target’s POSITIVE? field.

Package

aether.

Source

graft.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::install-child)) argument-list1)

Appends a child to a target.

Package

aether.

Source

graft.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::install-parent)) argument-list1)

Sets a target’s parent.

Package

aether.

Source

graft.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::inner-graft)) argument-list1)

Actually perform the graft procedure.

Package

aether.

Source

graft.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::start-graft)) argument-list1)

Set up the checks for the graft procedure.

Package

aether.

Source

graft.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql aether:broadcast-unlock)) argument-list1)

Cleans up after BROADCAST-LOCK.

Package

aether.

Source

lock.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::broadcast-pingability)) argument-list1)

Instruct the trees rooted at ‘TARGETS’ to change their pingability to ‘NEW-TYPE’.

Package

aether.

Source

supervisor.lisp.

Method: process-upkeep ((supervisor 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.

Package

aether.

Source

supervisor.lisp.

Method: process-upkeep ((supervisor 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.

Package

aether.

Source

supervisor.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::check-pong)) argument-list1)

Ensure that two locked trees still agree that this is a responsible weightless operation.

Package

aether.

Source

supervisor.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql anatevka::check-roots)) argument-list1)

Ensure that these nodes are still actually unmatched roots.

Package

aether.

Source

supervisor.lisp.

Method: process-upkeep ((supervisor 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.

Package

aether.

Source

supervisor.lisp.

Method: process-upkeep ((supervisor supervisor) now (command-place0 (eql aether:start)) argument-list1)

Set up initial state: the stack frame and which procedure to branch on.

Package

aether.

Source

supervisor.lisp.


6.2.5 Structures

Structure: blossom-edge

Represents a directed edge between two blossoms X and Y, as connected by vertices A, B.

[X: ... A–]–[->B ... :Y]

Package

anatevka.

Source

node.lisp.

Direct superclasses

structure-object.

Direct methods

print-object.

Direct slots
Slot: source-node
Type

(or null aether:address)

Readers

blossom-edge-source-node.

Writers

(setf blossom-edge-source-node).

Slot: source-vertex
Type

(or null aether:address)

Readers

blossom-edge-source-vertex.

Writers

(setf blossom-edge-source-vertex).

Slot: target-node
Type

(or null aether:address)

Readers

blossom-edge-target-node.

Writers

(setf blossom-edge-target-node).

Slot: target-vertex
Type

(or null aether:address)

Readers

blossom-edge-target-vertex.

Writers

(setf blossom-edge-target-vertex).

Structure: data-frame-contract

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.

Package

anatevka.

Source

contract.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: pong
Type

anatevka::message-pong

Readers

data-frame-contract-pong.

Writers

(setf data-frame-contract-pong).

Slot: path
Type

list

Readers

data-frame-contract-path.

Writers

(setf data-frame-contract-path).

Slot: peduncle-edge
Type

(or null anatevka::blossom-edge)

Readers

data-frame-contract-peduncle-edge.

Writers

(setf data-frame-contract-peduncle-edge).

Slot: fresh-blossom
Type

aether:address

Readers

data-frame-contract-fresh-blossom.

Writers

(setf data-frame-contract-fresh-blossom).

Slot: petal-child-edges
Type

list

Readers

data-frame-contract-petal-child-edges.

Writers

(setf data-frame-contract-petal-child-edges).

Slot: stowed-rx-latch
Type

(or null aether:address)

Readers

data-frame-contract-stowed-rx-latch.

Writers

(setf data-frame-contract-stowed-rx-latch).

Slot: stowed-tx-latch
Type

(or null aether:address)

Readers

data-frame-contract-stowed-tx-latch.

Writers

(setf data-frame-contract-stowed-tx-latch).

Structure: data-frame-multireweight

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’.

Package

anatevka.

Source

multireweight.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: hold-cluster
Type

list

Readers

data-frame-multireweight-hold-cluster.

Writers

(setf data-frame-multireweight-hold-cluster).

Slot: internal-pong
Type

(or null anatevka::message-pong)

Readers

data-frame-multireweight-internal-pong.

Writers

(setf data-frame-multireweight-internal-pong).

Structure: data-frame-scan

Data frame associated to a SCAN procedure running on a BLOSSOM process.

Package

anatevka.

Source

scan.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: pong
Type

anatevka::message-pong

Readers

data-frame-scan-pong.

Writers

(setf data-frame-scan-pong).

Slot: soft?
Type

boolean

Readers

data-frame-scan-soft?.

Writers

(setf data-frame-scan-soft?).

Slot: local-root
Type

aether:address

Readers

data-frame-scan-local-root.

Writers

(setf data-frame-scan-local-root).

Slot: local-blossom
Type

aether:address

Readers

data-frame-scan-local-blossom.

Writers

(setf data-frame-scan-local-blossom).

Slot: local-weight
Type

(or null real)

Readers

data-frame-scan-local-weight.

Writers

(setf data-frame-scan-local-weight).

Slot: vertices
Type

list

Readers

data-frame-scan-vertices.

Writers

(setf data-frame-scan-vertices).

Slot: children
Type

list

Readers

data-frame-scan-children.

Writers

(setf data-frame-scan-children).

Slot: petals
Type

list

Readers

data-frame-scan-petals.

Writers

(setf data-frame-scan-petals).

Slot: weight
Type

real

Readers

data-frame-scan-weight.

Writers

(setf data-frame-scan-weight).

Slot: internal-roots
Type

list

Readers

data-frame-scan-internal-roots.

Writers

(setf data-frame-scan-internal-roots).

Slot: repeat?
Type

boolean

Readers

data-frame-scan-repeat?.

Writers

(setf data-frame-scan-repeat?).

Structure: data-frame-supervisor

Data frame associated to the basic functioning on a SUPERVISOR process.

PONG: The PONG that this process received at its START.

Package

anatevka.

Source

supervisor.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: pong
Type

anatevka::message-pong

Readers

data-frame-supervisor-pong.

Writers

(setf data-frame-supervisor-pong).

Structure: message-adjoin-root

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.

Package

anatevka.

Source

scan.lisp.

Direct superclasses

message.

Direct subclasses

message-soft-adjoin-root.

Direct methods

handle-message-adjoin-root.

Direct slots
Slot: match-edge
Type

(or null anatevka::blossom-edge)

Readers

message-adjoin-root-match-edge.

Writers

(setf message-adjoin-root-match-edge).

Slot: ping
Type

anatevka::message-ping

Readers

message-adjoin-root-ping.

Writers

(setf message-adjoin-root-ping).

Slot: pong
Type

anatevka::message-pong

Readers

message-adjoin-root-pong.

Writers

(setf message-adjoin-root-pong).

Slot: positive?
Type

boolean

Readers

message-adjoin-root-positive?.

Writers

(setf message-adjoin-root-positive?).

Structure: message-attach-parent

Sent from a SUPERVISOR to a BLOSSOM-NODE to install a new PARENT.

Package

anatevka.

Source

contract.lisp.

Direct superclasses

message.

Direct methods

handle-message-attach-parent.

Direct slots
Slot: fresh-blossom
Type

aether:address

Readers

message-attach-parent-fresh-blossom.

Writers

(setf message-attach-parent-fresh-blossom).

Slot: peduncle-edge
Type

(or null anatevka::blossom-edge)

Readers

message-attach-parent-peduncle-edge.

Writers

(setf message-attach-parent-peduncle-edge).

Structure: message-blossom-parent

Calculates the highest blossom parent which contains the recipient and which is contained in STOP-BEFORE.

Package

anatevka.

Source

expand.lisp.

Direct superclasses

message.

Direct methods

handle-message-blossom-parent.

Direct slots
Slot: stop-before
Type

(or null aether:address)

Readers

message-blossom-parent-stop-before.

Writers

(setf message-blossom-parent-stop-before).

Structure: message-broadcast-pingability

Sent from a ‘SUPERVISOR’ to a tree to change its pingability to ‘PING-TYPE’.

Package

anatevka.

Source

node.lisp.

Direct superclasses

message.

Direct methods

handle-message-broadcast-pingability.

Direct slots
Slot: ping-type
Type

anatevka::ping-type

Readers

message-broadcast-pingability-ping-type.

Writers

(setf message-broadcast-pingability-ping-type).

Structure: message-broadcast-reweight

Sent from a ‘SUPERVISOR’ to a tree to reweight its top-level nodes by ‘WEIGHT’.

Package

anatevka.

Source

reweight.lisp.

Direct superclasses

message.

Direct methods

handle-message-broadcast-reweight.

Direct slots
Slot: weight
Type

real

Readers

message-broadcast-reweight-weight.

Writers

(setf message-broadcast-reweight-weight).

Structure: message-convergecast-collect-roots

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.

Package

anatevka.

Source

multireweight.lisp.

Direct superclasses

message.

Direct methods

handle-message-convergecast-collect-roots.

Direct slots
Slot: hold-cluster
Type

list

Readers

message-convergecast-collect-roots-hold-cluster.

Writers

(setf message-convergecast-collect-roots-hold-cluster).

Structure: message-convert-child-to-petal

Sent from a SUPERVISOR to a BLOSSOM-NODE to install a new CHILD.

Package

anatevka.

Source

contract.lisp.

Direct superclasses

message.

Direct methods

handle-message-convert-child-to-petal.

Direct slots
Slot: fresh-blossom
Type

aether:address

Readers

message-convert-child-to-petal-fresh-blossom.

Writers

(setf message-convert-child-to-petal-fresh-blossom).

Structure: message-expand

Sent from a SUPERVISOR to a BLOSSOM to cause it to pop.

Package

anatevka.

Source

expand.lisp.

Direct superclasses

message.

Direct methods

handle-message-expand.

Structure: message-id-query

Replies with the minimum ID at this macrovertex.

Package

anatevka.

Source

node.lisp.

Direct superclasses

message.

Direct methods

handle-message-id-query.

Structure: message-percolate

Sent from a SUPERVISOR to a tree (and then internally to a tree) to cause a path augmentation.

Package

anatevka.

Source

augment.lisp.

Direct superclasses

message.

Direct methods

handle-message-percolate.

Direct slots
Slot: traversal-edge
Type

anatevka::blossom-edge

Readers

message-percolate-traversal-edge.

Writers

(setf message-percolate-traversal-edge).

Structure: message-ping

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.

Package

anatevka.

Source

scan.lisp.

Direct superclasses

message.

Direct subclasses

message-soft-ping.

Direct methods

handle-message-ping.

Direct slots
Slot: root
Type

(or null aether:address)

Readers

message-ping-root.

Writers

(setf message-ping-root).

Slot: blossom
Type

(or null aether:address)

Readers

message-ping-blossom.

Writers

(setf message-ping-blossom).

Slot: id
Readers

message-ping-id.

Writers

(setf message-ping-id).

Slot: weight
Type

real

Readers

message-ping-weight.

Writers

(setf message-ping-weight).

Slot: internal-roots
Type

list

Readers

message-ping-internal-roots.

Writers

(setf message-ping-internal-roots).

Structure: message-pong

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.

Package

anatevka.

Source

scan.lisp.

Direct superclasses

message.

Direct methods
Direct slots
Slot: weight
Type

real

Initform

0

Readers

message-pong-weight.

Writers

(setf message-pong-weight).

Slot: edges
Type

list

Readers

message-pong-edges.

Writers

(setf message-pong-edges).

Slot: source-root
Type

(or null aether:address)

Readers

message-pong-source-root.

Writers

(setf message-pong-source-root).

Slot: target-root
Type

(or null aether:address)

Readers

message-pong-target-root.

Writers

(setf message-pong-target-root).

Slot: recommendation
Type

keyword

Initform

(quote :pass)

Readers

message-pong-recommendation.

Writers

(setf message-pong-recommendation).

Slot: source-id
Readers

message-pong-source-id.

Writers

(setf message-pong-source-id).

Slot: root-bucket
Type

list

Readers

message-pong-root-bucket.

Writers

(setf message-pong-root-bucket).

Structure: message-push

Causes a remote PUSH (on the BLOSSOM-NODE object). The VALUE is pushed to the head of SLOT.

Package

anatevka.

Source

node.lisp.

Direct superclasses

message.

Direct methods

handle-message-push.

Direct slots
Slot: slot
Type

symbol

Readers

message-push-slot.

Writers

(setf message-push-slot).

Slot: value
Readers

message-push-value.

Writers

(setf message-push-value).

Structure: message-reattach-cycle-child

Sent from a SUPERVISOR to a BLOSSOM-NODE to transfer responsibility for a petal-child.

Package

anatevka.

Source

contract.lisp.

Direct superclasses

message.

Direct methods

handle-message-reattach-cycle-child.

Direct slots
Slot: fresh-blossom
Type

aether:address

Readers

message-reattach-cycle-child-fresh-blossom.

Writers

(setf message-reattach-cycle-child-fresh-blossom).

Structure: message-replace-child

Replaces any child edges attaching to OLD-CHILD with edges attaching to NEW-CHILD instead.

Package

anatevka.

Source

expand.lisp.

Direct superclasses

message.

Direct methods

handle-message-replace-child.

Direct slots
Slot: old-child
Type

aether:address

Readers

message-replace-child-old-child.

Writers

(setf message-replace-child-old-child).

Slot: new-child
Type

aether:address

Readers

message-replace-child-new-child.

Writers

(setf message-replace-child-new-child).

Structure: message-root-path

Calculates the path from a node through to the root of its containing tree.

Package

anatevka.

Source

contract.lisp.

Direct superclasses

message.

Direct methods

handle-message-root-path.

Direct slots
Slot: path
Type

list

Readers

message-root-path-path.

Writers

(setf message-root-path-path).

Structure: message-scan

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.

Package

anatevka.

Source

scan.lisp.

Direct superclasses

message.

Direct subclasses

message-soft-scan.

Direct methods

handle-message-scan.

Direct slots
Slot: local-root
Type

(or null aether:address)

Readers

message-scan-local-root.

Writers

(setf message-scan-local-root).

Slot: local-blossom
Type

(or null aether:address)

Readers

message-scan-local-blossom.

Writers

(setf message-scan-local-blossom).

Slot: weight
Type

real

Readers

message-scan-weight.

Writers

(setf message-scan-weight).

Slot: internal-roots
Type

list

Readers

message-scan-internal-roots.

Writers

(setf message-scan-internal-roots).

Slot: repeat?
Type

boolean

Readers

message-scan-repeat?.

Writers

(setf message-scan-repeat?).

Structure: message-set

Causes a remote SETF (on the BLOSSOM-NODE object). The nth slot is set to the nth value.

Package

anatevka.

Source

node.lisp.

Direct superclasses

message.

Direct methods

handle-message-set.

Direct slots
Slot: slots
Type

list

Readers

message-set-slots.

Writers

(setf message-set-slots).

Slot: values
Package

common-lisp.

Type

list

Readers

message-set-values.

Writers

(setf message-set-values).

Structure: message-set-up-blossom

Sent from a SUPERVISOR to a newly formed contracting BLOSSOM to set up its slots.

Package

anatevka.

Source

contract.lisp.

Direct superclasses

message.

Direct methods

handle-message-set-up-blossom.

Direct slots
Slot: peduncle-edge
Type

(or null anatevka::blossom-edge)

Readers

message-set-up-blossom-peduncle-edge.

Writers

(setf message-set-up-blossom-peduncle-edge).

Slot: petals
Type

list

Readers

message-set-up-blossom-petals.

Writers

(setf message-set-up-blossom-petals).

Slot: petal-children
Type

list

Readers

message-set-up-blossom-petal-children.

Writers

(setf message-set-up-blossom-petal-children).

Structure: message-soft-adjoin-root

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.

Package

anatevka.

Source

scan.lisp.

Direct superclasses

message-adjoin-root.

Structure: message-soft-ping

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.

Package

anatevka.

Source

scan.lisp.

Direct superclasses

message-ping.

Structure: message-soft-scan

The same as a SCAN, but it generates soft PINGs.

Package

anatevka.

Source

scan.lisp.

Direct superclasses

message-scan.

Structure: message-values

Replies with slot-values (on the BLOSSOM-NODE object).

Package

anatevka.

Source

node.lisp.

Direct superclasses

message.

Direct methods

handle-message-values.

Direct slots
Slot: values
Package

common-lisp.

Type

list

Readers

message-values-values.

Writers

(setf message-values-values).


6.2.6 Classes

Class: supervisor

A companion process responsible for coordinating a tree operation.

Package

anatevka.

Source

supervisor.lisp.

Direct superclasses

process-lockable.

Direct methods
Direct slots
Slot: process-clock-rate
Package

aether.

Initform

anatevka::*blossom-node-clock-rate*

Slot: node-class

The class identifier who spawned this SUPERVISOR.

Type

symbol

Initform

(quote anatevka:blossom-node)

Initargs

:node-class

Readers

supervisor-node-class.

Writers

(setf supervisor-node-class).


6.2.7 Types

Type: ping-type ()
Package

anatevka.

Source

node.lisp.


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   %   (   -  
A   B   C   D   E   F   G   H   L   M   P   R   S   U   V   W  
Index Entry  Section

%
%make-blossom-edge: Private ordinary functions

(
(setf ->): Private ordinary functions
(setf blossom-edge-source-node): Private ordinary functions
(setf blossom-edge-source-vertex): Private ordinary functions
(setf blossom-edge-target-node): Private ordinary functions
(setf blossom-edge-target-vertex): Private ordinary functions
(setf blossom-node-children): Private generic functions
(setf blossom-node-children): Private generic functions
(setf blossom-node-dryad): Private generic functions
(setf blossom-node-dryad): Private generic functions
(setf blossom-node-held-by-roots): Private generic functions
(setf blossom-node-held-by-roots): Private generic functions
(setf blossom-node-id): Private generic functions
(setf blossom-node-id): Private generic functions
(setf blossom-node-internal-weight): Private generic functions
(setf blossom-node-internal-weight): Private generic functions
(setf blossom-node-match-edge): Private generic functions
(setf blossom-node-match-edge): Private generic functions
(setf blossom-node-parent): Private generic functions
(setf blossom-node-parent): Private generic functions
(setf blossom-node-paused?): Private generic functions
(setf blossom-node-paused?): Private generic functions
(setf blossom-node-petals): Private generic functions
(setf blossom-node-petals): Private generic functions
(setf blossom-node-pingable): Private generic functions
(setf blossom-node-pingable): Private generic functions
(setf blossom-node-pistil): Private generic functions
(setf blossom-node-pistil): Private generic functions
(setf blossom-node-positive?): Private generic functions
(setf blossom-node-positive?): Private generic functions
(setf blossom-node-wilting): Private generic functions
(setf blossom-node-wilting): Private generic functions
(setf data-frame-contract-fresh-blossom): Private ordinary functions
(setf data-frame-contract-path): Private ordinary functions
(setf data-frame-contract-peduncle-edge): Private ordinary functions
(setf data-frame-contract-petal-child-edges): Private ordinary functions
(setf data-frame-contract-pong): Private ordinary functions
(setf data-frame-contract-stowed-rx-latch): Private ordinary functions
(setf data-frame-contract-stowed-tx-latch): Private ordinary functions
(setf data-frame-multireweight-hold-cluster): Private ordinary functions
(setf data-frame-multireweight-internal-pong): Private ordinary functions
(setf data-frame-scan-children): Private ordinary functions
(setf data-frame-scan-internal-roots): Private ordinary functions
(setf data-frame-scan-local-blossom): Private ordinary functions
(setf data-frame-scan-local-root): Private ordinary functions
(setf data-frame-scan-local-weight): Private ordinary functions
(setf data-frame-scan-petals): Private ordinary functions
(setf data-frame-scan-pong): Private ordinary functions
(setf data-frame-scan-repeat?): Private ordinary functions
(setf data-frame-scan-soft?): Private ordinary functions
(setf data-frame-scan-vertices): Private ordinary functions
(setf data-frame-scan-weight): Private ordinary functions
(setf data-frame-supervisor-pong): Private ordinary functions
(setf dryad-ids): Public generic functions
(setf dryad-ids): Public generic functions
(setf dryad-match-address): Public generic functions
(setf dryad-match-address): Public generic functions
(setf dryad-sprouted?): Public generic functions
(setf dryad-sprouted?): Public generic functions
(setf message-adjoin-root-match-edge): Private ordinary functions
(setf message-adjoin-root-message-id): Private ordinary functions
(setf message-adjoin-root-ping): Private ordinary functions
(setf message-adjoin-root-pong): Private ordinary functions
(setf message-adjoin-root-positive?): Private ordinary functions
(setf message-adjoin-root-reply-channel): Private ordinary functions
(setf message-attach-parent-fresh-blossom): Private ordinary functions
(setf message-attach-parent-message-id): Private ordinary functions
(setf message-attach-parent-peduncle-edge): Private ordinary functions
(setf message-attach-parent-reply-channel): Private ordinary functions
(setf message-blossom-parent-message-id): Private ordinary functions
(setf message-blossom-parent-reply-channel): Private ordinary functions
(setf message-blossom-parent-stop-before): Private ordinary functions
(setf message-broadcast-pingability-message-id): Private ordinary functions
(setf message-broadcast-pingability-ping-type): Private ordinary functions
(setf message-broadcast-pingability-reply-channel): Private ordinary functions
(setf message-broadcast-reweight-message-id): Private ordinary functions
(setf message-broadcast-reweight-reply-channel): Private ordinary functions
(setf message-broadcast-reweight-weight): Private ordinary functions
(setf message-convergecast-collect-roots-hold-cluster): Private ordinary functions
(setf message-convergecast-collect-roots-message-id): Private ordinary functions
(setf message-convergecast-collect-roots-reply-channel): Private ordinary functions
(setf message-convert-child-to-petal-fresh-blossom): Private ordinary functions
(setf message-convert-child-to-petal-message-id): Private ordinary functions
(setf message-convert-child-to-petal-reply-channel): Private ordinary functions
(setf message-discover-address): Public ordinary functions
(setf message-discover-id): Public ordinary functions
(setf message-discover-internal-weight): Public ordinary functions
(setf message-discover-message-id): Private ordinary functions
(setf message-discover-repeat?): Public ordinary functions
(setf message-discover-reply-channel): Private ordinary functions
(setf message-discovery-channels-to-try): Public ordinary functions
(setf message-discovery-message-id): Private ordinary functions
(setf message-discovery-reply-channel): Private ordinary functions
(setf message-expand-message-id): Private ordinary functions
(setf message-expand-reply-channel): Private ordinary functions
(setf message-id-query-message-id): Private ordinary functions
(setf message-id-query-reply-channel): Private ordinary functions
(setf message-percolate-message-id): Private ordinary functions
(setf message-percolate-reply-channel): Private ordinary functions
(setf message-percolate-traversal-edge): Private ordinary functions
(setf message-ping-blossom): Private ordinary functions
(setf message-ping-id): Private ordinary functions
(setf message-ping-internal-roots): Private ordinary functions
(setf message-ping-message-id): Private ordinary functions
(setf message-ping-reply-channel): Private ordinary functions
(setf message-ping-root): Private ordinary functions
(setf message-ping-weight): Private ordinary functions
(setf message-pong-edges): Private ordinary functions
(setf message-pong-message-id): Private ordinary functions
(setf message-pong-recommendation): Private ordinary functions
(setf message-pong-reply-channel): Private ordinary functions
(setf message-pong-root-bucket): Private ordinary functions
(setf message-pong-source-id): Private ordinary functions
(setf message-pong-source-root): Private ordinary functions
(setf message-pong-target-root): Private ordinary functions
(setf message-pong-weight): Private ordinary functions
(setf message-push-message-id): Private ordinary functions
(setf message-push-reply-channel): Private ordinary functions
(setf message-push-slot): Private ordinary functions
(setf message-push-value): Private ordinary functions
(setf message-reap-ids): Public ordinary functions
(setf message-reap-message-id): Private ordinary functions
(setf message-reap-reply-channel): Private ordinary functions
(setf message-reattach-cycle-child-fresh-blossom): Private ordinary functions
(setf message-reattach-cycle-child-message-id): Private ordinary functions
(setf message-reattach-cycle-child-reply-channel): Private ordinary functions
(setf message-replace-child-message-id): Private ordinary functions
(setf message-replace-child-new-child): Private ordinary functions
(setf message-replace-child-old-child): Private ordinary functions
(setf message-replace-child-reply-channel): Private ordinary functions
(setf message-root-path-message-id): Private ordinary functions
(setf message-root-path-path): Private ordinary functions
(setf message-root-path-reply-channel): Private ordinary functions
(setf message-scan-internal-roots): Private ordinary functions
(setf message-scan-local-blossom): Private ordinary functions
(setf message-scan-local-root): Private ordinary functions
(setf message-scan-message-id): Private ordinary functions
(setf message-scan-repeat?): Private ordinary functions
(setf message-scan-reply-channel): Private ordinary functions
(setf message-scan-weight): Private ordinary functions
(setf message-set-message-id): Private ordinary functions
(setf message-set-reply-channel): Private ordinary functions
(setf message-set-slots): Private ordinary functions
(setf message-set-up-blossom-message-id): Private ordinary functions
(setf message-set-up-blossom-peduncle-edge): Private ordinary functions
(setf message-set-up-blossom-petal-children): Private ordinary functions
(setf message-set-up-blossom-petals): Private ordinary functions
(setf message-set-up-blossom-reply-channel): Private ordinary functions
(setf message-set-values): Private ordinary functions
(setf message-soft-adjoin-root-match-edge): Private ordinary functions
(setf message-soft-adjoin-root-message-id): Private ordinary functions
(setf message-soft-adjoin-root-ping): Private ordinary functions
(setf message-soft-adjoin-root-pong): Private ordinary functions
(setf message-soft-adjoin-root-positive?): Private ordinary functions
(setf message-soft-adjoin-root-reply-channel): Private ordinary functions
(setf message-soft-ping-blossom): Private ordinary functions
(setf message-soft-ping-id): Private ordinary functions
(setf message-soft-ping-internal-roots): Private ordinary functions
(setf message-soft-ping-message-id): Private ordinary functions
(setf message-soft-ping-reply-channel): Private ordinary functions
(setf message-soft-ping-root): Private ordinary functions
(setf message-soft-ping-weight): Private ordinary functions
(setf message-soft-scan-internal-roots): Private ordinary functions
(setf message-soft-scan-local-blossom): Private ordinary functions
(setf message-soft-scan-local-root): Private ordinary functions
(setf message-soft-scan-message-id): Private ordinary functions
(setf message-soft-scan-repeat?): Private ordinary functions
(setf message-soft-scan-reply-channel): Private ordinary functions
(setf message-soft-scan-weight): Private ordinary functions
(setf message-sow-id): Public ordinary functions
(setf message-sow-message-id): Private ordinary functions
(setf message-sow-reply-channel): Private ordinary functions
(setf message-sprout-address): Public ordinary functions
(setf message-sprout-message-id): Private ordinary functions
(setf message-sprout-reply-channel): Private ordinary functions
(setf message-values-message-id): Private ordinary functions
(setf message-values-reply-channel): Private ordinary functions
(setf message-values-values): Private ordinary functions
(setf message-wilt-message-id): Private ordinary functions
(setf message-wilt-reply-channel): Private ordinary functions
(setf message-wilting-address): Public ordinary functions
(setf message-wilting-message-id): Private ordinary functions
(setf message-wilting-reply-channel): Private ordinary functions
(setf supervisor-node-class): Private generic functions
(setf supervisor-node-class): Private generic functions

-
->: Private ordinary functions

A
address-union: Private ordinary functions
array-from-fn: Private ordinary functions

B
blossom-edge-p: Private ordinary functions
blossom-edge-source-node: Private ordinary functions
blossom-edge-source-vertex: Private ordinary functions
blossom-edge-target-node: Private ordinary functions
blossom-edge-target-vertex: Private ordinary functions
blossom-node-children: Private generic functions
blossom-node-children: Private generic functions
blossom-node-dryad: Private generic functions
blossom-node-dryad: Private generic functions
blossom-node-held-by-roots: Private generic functions
blossom-node-held-by-roots: Private generic functions
blossom-node-id: Private generic functions
blossom-node-id: Private generic functions
blossom-node-internal-weight: Private generic functions
blossom-node-internal-weight: Private generic functions
blossom-node-match-edge: Private generic functions
blossom-node-match-edge: Private generic functions
blossom-node-parent: Private generic functions
blossom-node-parent: Private generic functions
blossom-node-paused?: Private generic functions
blossom-node-paused?: Private generic functions
blossom-node-petals: Private generic functions
blossom-node-petals: Private generic functions
blossom-node-pingable: Private generic functions
blossom-node-pingable: Private generic functions
blossom-node-pistil: Private generic functions
blossom-node-pistil: Private generic functions
blossom-node-positive?: Private generic functions
blossom-node-positive?: Private generic functions
blossom-node-wilting: Private generic functions
blossom-node-wilting: Private generic functions

C
copy-blossom-edge: Private ordinary functions
copy-data-frame-contract: Private ordinary functions
copy-data-frame-multireweight: Private ordinary functions
copy-data-frame-scan: Private ordinary functions
copy-data-frame-supervisor: Private ordinary functions
copy-message-adjoin-root: Private ordinary functions
copy-message-attach-parent: Private ordinary functions
copy-message-blossom-parent: Private ordinary functions
copy-message-broadcast-pingability: Private ordinary functions
copy-message-broadcast-reweight: Private ordinary functions
copy-message-convergecast-collect-roots: Private ordinary functions
copy-message-convert-child-to-petal: Private ordinary functions
copy-message-discover: Private ordinary functions
copy-message-discovery: Private ordinary functions
copy-message-expand: Private ordinary functions
copy-message-id-query: Private ordinary functions
copy-message-percolate: Private ordinary functions
copy-message-ping: Private ordinary functions
copy-message-pong: Private ordinary functions
copy-message-push: Private ordinary functions
copy-message-reap: Private ordinary functions
copy-message-reattach-cycle-child: Private ordinary functions
copy-message-replace-child: Private ordinary functions
copy-message-root-path: Private ordinary functions
copy-message-scan: Private ordinary functions
copy-message-set: Private ordinary functions
copy-message-set-up-blossom: Private ordinary functions
copy-message-soft-adjoin-root: Private ordinary functions
copy-message-soft-ping: Private ordinary functions
copy-message-soft-scan: Private ordinary functions
copy-message-sow: Private ordinary functions
copy-message-sprout: Private ordinary functions
copy-message-values: Private ordinary functions
copy-message-wilt: Private ordinary functions
copy-message-wilting: Private ordinary functions

D
data-frame-contract-fresh-blossom: Private ordinary functions
data-frame-contract-p: Private ordinary functions
data-frame-contract-path: Private ordinary functions
data-frame-contract-peduncle-edge: Private ordinary functions
data-frame-contract-petal-child-edges: Private ordinary functions
data-frame-contract-pong: Private ordinary functions
data-frame-contract-stowed-rx-latch: Private ordinary functions
data-frame-contract-stowed-tx-latch: Private ordinary functions
data-frame-multireweight-hold-cluster: Private ordinary functions
data-frame-multireweight-internal-pong: Private ordinary functions
data-frame-multireweight-p: Private ordinary functions
data-frame-scan-children: Private ordinary functions
data-frame-scan-internal-roots: Private ordinary functions
data-frame-scan-local-blossom: Private ordinary functions
data-frame-scan-local-root: Private ordinary functions
data-frame-scan-local-weight: Private ordinary functions
data-frame-scan-p: Private ordinary functions
data-frame-scan-petals: Private ordinary functions
data-frame-scan-pong: Private ordinary functions
data-frame-scan-repeat?: Private ordinary functions
data-frame-scan-soft?: Private ordinary functions
data-frame-scan-vertices: Private ordinary functions
data-frame-scan-weight: Private ordinary functions
data-frame-supervisor-p: Private ordinary functions
data-frame-supervisor-pong: Private ordinary functions
discard-args: Private ordinary functions
dryad-ids: Public generic functions
dryad-ids: Public generic functions
dryad-match-address: Public generic functions
dryad-match-address: Public generic functions
dryad-sprouted?: Public generic functions
dryad-sprouted?: Public generic functions

E
edge=: Private ordinary functions

F
find-even-arm: Private ordinary functions
Function, %make-blossom-edge: Private ordinary functions
Function, (setf ->): Private ordinary functions
Function, (setf blossom-edge-source-node): Private ordinary functions
Function, (setf blossom-edge-source-vertex): Private ordinary functions
Function, (setf blossom-edge-target-node): Private ordinary functions
Function, (setf blossom-edge-target-vertex): Private ordinary functions
Function, (setf data-frame-contract-fresh-blossom): Private ordinary functions
Function, (setf data-frame-contract-path): Private ordinary functions
Function, (setf data-frame-contract-peduncle-edge): Private ordinary functions
Function, (setf data-frame-contract-petal-child-edges): Private ordinary functions
Function, (setf data-frame-contract-pong): Private ordinary functions
Function, (setf data-frame-contract-stowed-rx-latch): Private ordinary functions
Function, (setf data-frame-contract-stowed-tx-latch): Private ordinary functions
Function, (setf data-frame-multireweight-hold-cluster): Private ordinary functions
Function, (setf data-frame-multireweight-internal-pong): Private ordinary functions
Function, (setf data-frame-scan-children): Private ordinary functions
Function, (setf data-frame-scan-internal-roots): Private ordinary functions
Function, (setf data-frame-scan-local-blossom): Private ordinary functions
Function, (setf data-frame-scan-local-root): Private ordinary functions
Function, (setf data-frame-scan-local-weight): Private ordinary functions
Function, (setf data-frame-scan-petals): Private ordinary functions
Function, (setf data-frame-scan-pong): Private ordinary functions
Function, (setf data-frame-scan-repeat?): Private ordinary functions
Function, (setf data-frame-scan-soft?): Private ordinary functions
Function, (setf data-frame-scan-vertices): Private ordinary functions
Function, (setf data-frame-scan-weight): Private ordinary functions
Function, (setf data-frame-supervisor-pong): Private ordinary functions
Function, (setf message-adjoin-root-match-edge): Private ordinary functions
Function, (setf message-adjoin-root-message-id): Private ordinary functions
Function, (setf message-adjoin-root-ping): Private ordinary functions
Function, (setf message-adjoin-root-pong): Private ordinary functions
Function, (setf message-adjoin-root-positive?): Private ordinary functions
Function, (setf message-adjoin-root-reply-channel): Private ordinary functions
Function, (setf message-attach-parent-fresh-blossom): Private ordinary functions
Function, (setf message-attach-parent-message-id): Private ordinary functions
Function, (setf message-attach-parent-peduncle-edge): Private ordinary functions
Function, (setf message-attach-parent-reply-channel): Private ordinary functions
Function, (setf message-blossom-parent-message-id): Private ordinary functions
Function, (setf message-blossom-parent-reply-channel): Private ordinary functions
Function, (setf message-blossom-parent-stop-before): Private ordinary functions
Function, (setf message-broadcast-pingability-message-id): Private ordinary functions
Function, (setf message-broadcast-pingability-ping-type): Private ordinary functions
Function, (setf message-broadcast-pingability-reply-channel): Private ordinary functions
Function, (setf message-broadcast-reweight-message-id): Private ordinary functions
Function, (setf message-broadcast-reweight-reply-channel): Private ordinary functions
Function, (setf message-broadcast-reweight-weight): Private ordinary functions
Function, (setf message-convergecast-collect-roots-hold-cluster): Private ordinary functions
Function, (setf message-convergecast-collect-roots-message-id): Private ordinary functions
Function, (setf message-convergecast-collect-roots-reply-channel): Private ordinary functions
Function, (setf message-convert-child-to-petal-fresh-blossom): Private ordinary functions
Function, (setf message-convert-child-to-petal-message-id): Private ordinary functions
Function, (setf message-convert-child-to-petal-reply-channel): Private ordinary functions
Function, (setf message-discover-address): Public ordinary functions
Function, (setf message-discover-id): Public ordinary functions
Function, (setf message-discover-internal-weight): Public ordinary functions
Function, (setf message-discover-message-id): Private ordinary functions
Function, (setf message-discover-repeat?): Public ordinary functions
Function, (setf message-discover-reply-channel): Private ordinary functions
Function, (setf message-discovery-channels-to-try): Public ordinary functions
Function, (setf message-discovery-message-id): Private ordinary functions
Function, (setf message-discovery-reply-channel): Private ordinary functions
Function, (setf message-expand-message-id): Private ordinary functions
Function, (setf message-expand-reply-channel): Private ordinary functions
Function, (setf message-id-query-message-id): Private ordinary functions
Function, (setf message-id-query-reply-channel): Private ordinary functions
Function, (setf message-percolate-message-id): Private ordinary functions
Function, (setf message-percolate-reply-channel): Private ordinary functions
Function, (setf message-percolate-traversal-edge): Private ordinary functions
Function, (setf message-ping-blossom): Private ordinary functions
Function, (setf message-ping-id): Private ordinary functions
Function, (setf message-ping-internal-roots): Private ordinary functions
Function, (setf message-ping-message-id): Private ordinary functions
Function, (setf message-ping-reply-channel): Private ordinary functions
Function, (setf message-ping-root): Private ordinary functions
Function, (setf message-ping-weight): Private ordinary functions
Function, (setf message-pong-edges): Private ordinary functions
Function, (setf message-pong-message-id): Private ordinary functions
Function, (setf message-pong-recommendation): Private ordinary functions
Function, (setf message-pong-reply-channel): Private ordinary functions
Function, (setf message-pong-root-bucket): Private ordinary functions
Function, (setf message-pong-source-id): Private ordinary functions
Function, (setf message-pong-source-root): Private ordinary functions
Function, (setf message-pong-target-root): Private ordinary functions
Function, (setf message-pong-weight): Private ordinary functions
Function, (setf message-push-message-id): Private ordinary functions
Function, (setf message-push-reply-channel): Private ordinary functions
Function, (setf message-push-slot): Private ordinary functions
Function, (setf message-push-value): Private ordinary functions
Function, (setf message-reap-ids): Public ordinary functions
Function, (setf message-reap-message-id): Private ordinary functions
Function, (setf message-reap-reply-channel): Private ordinary functions
Function, (setf message-reattach-cycle-child-fresh-blossom): Private ordinary functions
Function, (setf message-reattach-cycle-child-message-id): Private ordinary functions
Function, (setf message-reattach-cycle-child-reply-channel): Private ordinary functions
Function, (setf message-replace-child-message-id): Private ordinary functions
Function, (setf message-replace-child-new-child): Private ordinary functions
Function, (setf message-replace-child-old-child): Private ordinary functions
Function, (setf message-replace-child-reply-channel): Private ordinary functions
Function, (setf message-root-path-message-id): Private ordinary functions
Function, (setf message-root-path-path): Private ordinary functions
Function, (setf message-root-path-reply-channel): Private ordinary functions
Function, (setf message-scan-internal-roots): Private ordinary functions
Function, (setf message-scan-local-blossom): Private ordinary functions
Function, (setf message-scan-local-root): Private ordinary functions
Function, (setf message-scan-message-id): Private ordinary functions
Function, (setf message-scan-repeat?): Private ordinary functions
Function, (setf message-scan-reply-channel): Private ordinary functions
Function, (setf message-scan-weight): Private ordinary functions
Function, (setf message-set-message-id): Private ordinary functions
Function, (setf message-set-reply-channel): Private ordinary functions
Function, (setf message-set-slots): Private ordinary functions
Function, (setf message-set-up-blossom-message-id): Private ordinary functions
Function, (setf message-set-up-blossom-peduncle-edge): Private ordinary functions
Function, (setf message-set-up-blossom-petal-children): Private ordinary functions
Function, (setf message-set-up-blossom-petals): Private ordinary functions
Function, (setf message-set-up-blossom-reply-channel): Private ordinary functions
Function, (setf message-set-values): Private ordinary functions
Function, (setf message-soft-adjoin-root-match-edge): Private ordinary functions
Function, (setf message-soft-adjoin-root-message-id): Private ordinary functions
Function, (setf message-soft-adjoin-root-ping): Private ordinary functions
Function, (setf message-soft-adjoin-root-pong): Private ordinary functions
Function, (setf message-soft-adjoin-root-positive?): Private ordinary functions
Function, (setf message-soft-adjoin-root-reply-channel): Private ordinary functions
Function, (setf message-soft-ping-blossom): Private ordinary functions
Function, (setf message-soft-ping-id): Private ordinary functions
Function, (setf message-soft-ping-internal-roots): Private ordinary functions
Function, (setf message-soft-ping-message-id): Private ordinary functions
Function, (setf message-soft-ping-reply-channel): Private ordinary functions
Function, (setf message-soft-ping-root): Private ordinary functions
Function, (setf message-soft-ping-weight): Private ordinary functions
Function, (setf message-soft-scan-internal-roots): Private ordinary functions
Function, (setf message-soft-scan-local-blossom): Private ordinary functions
Function, (setf message-soft-scan-local-root): Private ordinary functions
Function, (setf message-soft-scan-message-id): Private ordinary functions
Function, (setf message-soft-scan-repeat?): Private ordinary functions
Function, (setf message-soft-scan-reply-channel): Private ordinary functions
Function, (setf message-soft-scan-weight): Private ordinary functions
Function, (setf message-sow-id): Public ordinary functions
Function, (setf message-sow-message-id): Private ordinary functions
Function, (setf message-sow-reply-channel): Private ordinary functions
Function, (setf message-sprout-address): Public ordinary functions
Function, (setf message-sprout-message-id): Private ordinary functions
Function, (setf message-sprout-reply-channel): Private ordinary functions
Function, (setf message-values-message-id): Private ordinary functions
Function, (setf message-values-reply-channel): Private ordinary functions
Function, (setf message-values-values): Private ordinary functions
Function, (setf message-wilt-message-id): Private ordinary functions
Function, (setf message-wilt-reply-channel): Private ordinary functions
Function, (setf message-wilting-address): Public ordinary functions
Function, (setf message-wilting-message-id): Private ordinary functions
Function, (setf message-wilting-reply-channel): Private ordinary functions
Function, ->: Private ordinary functions
Function, address-union: Private ordinary functions
Function, array-from-fn: Private ordinary functions
Function, blossom-edge-p: Private ordinary functions
Function, blossom-edge-source-node: Private ordinary functions
Function, blossom-edge-source-vertex: Private ordinary functions
Function, blossom-edge-target-node: Private ordinary functions
Function, blossom-edge-target-vertex: Private ordinary functions
Function, copy-blossom-edge: Private ordinary functions
Function, copy-data-frame-contract: Private ordinary functions
Function, copy-data-frame-multireweight: Private ordinary functions
Function, copy-data-frame-scan: Private ordinary functions
Function, copy-data-frame-supervisor: Private ordinary functions
Function, copy-message-adjoin-root: Private ordinary functions
Function, copy-message-attach-parent: Private ordinary functions
Function, copy-message-blossom-parent: Private ordinary functions
Function, copy-message-broadcast-pingability: Private ordinary functions
Function, copy-message-broadcast-reweight: Private ordinary functions
Function, copy-message-convergecast-collect-roots: Private ordinary functions
Function, copy-message-convert-child-to-petal: Private ordinary functions
Function, copy-message-discover: Private ordinary functions
Function, copy-message-discovery: Private ordinary functions
Function, copy-message-expand: Private ordinary functions
Function, copy-message-id-query: Private ordinary functions
Function, copy-message-percolate: Private ordinary functions
Function, copy-message-ping: Private ordinary functions
Function, copy-message-pong: Private ordinary functions
Function, copy-message-push: Private ordinary functions
Function, copy-message-reap: Private ordinary functions
Function, copy-message-reattach-cycle-child: Private ordinary functions
Function, copy-message-replace-child: Private ordinary functions
Function, copy-message-root-path: Private ordinary functions
Function, copy-message-scan: Private ordinary functions
Function, copy-message-set: Private ordinary functions
Function, copy-message-set-up-blossom: Private ordinary functions
Function, copy-message-soft-adjoin-root: Private ordinary functions
Function, copy-message-soft-ping: Private ordinary functions
Function, copy-message-soft-scan: Private ordinary functions
Function, copy-message-sow: Private ordinary functions
Function, copy-message-sprout: Private ordinary functions
Function, copy-message-values: Private ordinary functions
Function, copy-message-wilt: Private ordinary functions
Function, copy-message-wilting: Private ordinary functions
Function, data-frame-contract-fresh-blossom: Private ordinary functions
Function, data-frame-contract-p: Private ordinary functions
Function, data-frame-contract-path: Private ordinary functions
Function, data-frame-contract-peduncle-edge: Private ordinary functions
Function, data-frame-contract-petal-child-edges: Private ordinary functions
Function, data-frame-contract-pong: Private ordinary functions
Function, data-frame-contract-stowed-rx-latch: Private ordinary functions
Function, data-frame-contract-stowed-tx-latch: Private ordinary functions
Function, data-frame-multireweight-hold-cluster: Private ordinary functions
Function, data-frame-multireweight-internal-pong: Private ordinary functions
Function, data-frame-multireweight-p: Private ordinary functions
Function, data-frame-scan-children: Private ordinary functions
Function, data-frame-scan-internal-roots: Private ordinary functions
Function, data-frame-scan-local-blossom: Private ordinary functions
Function, data-frame-scan-local-root: Private ordinary functions
Function, data-frame-scan-local-weight: Private ordinary functions
Function, data-frame-scan-p: Private ordinary functions
Function, data-frame-scan-petals: Private ordinary functions
Function, data-frame-scan-pong: Private ordinary functions
Function, data-frame-scan-repeat?: Private ordinary functions
Function, data-frame-scan-soft?: Private ordinary functions
Function, data-frame-scan-vertices: Private ordinary functions
Function, data-frame-scan-weight: Private ordinary functions
Function, data-frame-supervisor-p: Private ordinary functions
Function, data-frame-supervisor-pong: Private ordinary functions
Function, discard-args: Private ordinary functions
Function, edge=: Private ordinary functions
Function, find-even-arm: Private ordinary functions
Function, latest-common-head: Private ordinary functions
Function, make-blossom-edge: Public ordinary functions
Function, make-bool: Private ordinary functions
Function, make-data-frame-contract: Private ordinary functions
Function, make-data-frame-multireweight: Private ordinary functions
Function, make-data-frame-scan: Private ordinary functions
Function, make-data-frame-supervisor: Private ordinary functions
Function, make-message-adjoin-root: Private ordinary functions
Function, make-message-attach-parent: Private ordinary functions
Function, make-message-blossom-parent: Private ordinary functions
Function, make-message-broadcast-pingability: Private ordinary functions
Function, make-message-broadcast-reweight: Private ordinary functions
Function, make-message-convergecast-collect-roots: Private ordinary functions
Function, make-message-convert-child-to-petal: Private ordinary functions
Function, make-message-discover: Public ordinary functions
Function, make-message-discovery: Public ordinary functions
Function, make-message-expand: Private ordinary functions
Function, make-message-id-query: Private ordinary functions
Function, make-message-percolate: Private ordinary functions
Function, make-message-ping: Private ordinary functions
Function, make-message-pong: Private ordinary functions
Function, make-message-push: Private ordinary functions
Function, make-message-reap: Public ordinary functions
Function, make-message-reattach-cycle-child: Private ordinary functions
Function, make-message-replace-child: Private ordinary functions
Function, make-message-root-path: Private ordinary functions
Function, make-message-scan: Private ordinary functions
Function, make-message-set: Private ordinary functions
Function, make-message-set-up-blossom: Private ordinary functions
Function, make-message-soft-adjoin-root: Private ordinary functions
Function, make-message-soft-ping: Private ordinary functions
Function, make-message-soft-scan: Private ordinary functions
Function, make-message-sow: Public ordinary functions
Function, make-message-sprout: Public ordinary functions
Function, make-message-values: Private ordinary functions
Function, make-message-wilt: Public ordinary functions
Function, make-message-wilting: Public ordinary functions
Function, message-adjoin-root-match-edge: Private ordinary functions
Function, message-adjoin-root-message-id: Private ordinary functions
Function, message-adjoin-root-p: Private ordinary functions
Function, message-adjoin-root-ping: Private ordinary functions
Function, message-adjoin-root-pong: Private ordinary functions
Function, message-adjoin-root-positive?: Private ordinary functions
Function, message-adjoin-root-reply-channel: Private ordinary functions
Function, message-attach-parent-fresh-blossom: Private ordinary functions
Function, message-attach-parent-message-id: Private ordinary functions
Function, message-attach-parent-p: Private ordinary functions
Function, message-attach-parent-peduncle-edge: Private ordinary functions
Function, message-attach-parent-reply-channel: Private ordinary functions
Function, message-blossom-parent-message-id: Private ordinary functions
Function, message-blossom-parent-p: Private ordinary functions
Function, message-blossom-parent-reply-channel: Private ordinary functions
Function, message-blossom-parent-stop-before: Private ordinary functions
Function, message-broadcast-pingability-message-id: Private ordinary functions
Function, message-broadcast-pingability-p: Private ordinary functions
Function, message-broadcast-pingability-ping-type: Private ordinary functions
Function, message-broadcast-pingability-reply-channel: Private ordinary functions
Function, message-broadcast-reweight-message-id: Private ordinary functions
Function, message-broadcast-reweight-p: Private ordinary functions
Function, message-broadcast-reweight-reply-channel: Private ordinary functions
Function, message-broadcast-reweight-weight: Private ordinary functions
Function, message-convergecast-collect-roots-hold-cluster: Private ordinary functions
Function, message-convergecast-collect-roots-message-id: Private ordinary functions
Function, message-convergecast-collect-roots-p: Private ordinary functions
Function, message-convergecast-collect-roots-reply-channel: Private ordinary functions
Function, message-convert-child-to-petal-fresh-blossom: Private ordinary functions
Function, message-convert-child-to-petal-message-id: Private ordinary functions
Function, message-convert-child-to-petal-p: Private ordinary functions
Function, message-convert-child-to-petal-reply-channel: Private ordinary functions
Function, message-discover-address: Public ordinary functions
Function, message-discover-id: Public ordinary functions
Function, message-discover-internal-weight: Public ordinary functions
Function, message-discover-message-id: Private ordinary functions
Function, message-discover-p: Private ordinary functions
Function, message-discover-repeat?: Public ordinary functions
Function, message-discover-reply-channel: Private ordinary functions
Function, message-discovery-channels-to-try: Public ordinary functions
Function, message-discovery-message-id: Private ordinary functions
Function, message-discovery-p: Private ordinary functions
Function, message-discovery-reply-channel: Private ordinary functions
Function, message-expand-message-id: Private ordinary functions
Function, message-expand-p: Private ordinary functions
Function, message-expand-reply-channel: Private ordinary functions
Function, message-id-query-message-id: Private ordinary functions
Function, message-id-query-p: Private ordinary functions
Function, message-id-query-reply-channel: Private ordinary functions
Function, message-percolate-message-id: Private ordinary functions
Function, message-percolate-p: Private ordinary functions
Function, message-percolate-reply-channel: Private ordinary functions
Function, message-percolate-traversal-edge: Private ordinary functions
Function, message-ping-blossom: Private ordinary functions
Function, message-ping-id: Private ordinary functions
Function, message-ping-internal-roots: Private ordinary functions
Function, message-ping-message-id: