Arrows progress

Brian Rice water@tunes.org
Thu Apr 19 05:09:01 2001


Hi Tunes fans,
Of course it's obvious that the completion of the arrows release is 
taking a while longer than expected, so I should explain.

Basically, the use of an algebraic framework within Arrow is 
relatively simple: basically binary relations between atoms are 
arrows within the graphs representing the respective relation itself. 
As for n-ary relations, the Cartesian pairing of atoms is supported. 
Computation is done by rule-guided unification, which simply 
traverses the connections of arrows and operates on them in a 
consistent manner. However, in the process of implementing this, I 
have discovered some previously-ignored issues in my theories. For 
example, in order to have a reasonably efficient implementation of 
some arrow operations, they need to be restricted to only the 
relevant context or arrow frame.

Speaking of frames, I had better rigorize that definition before it 
gets confusing. A frame is conceptually a world of arrows. However, 
one of my fundamental goals is to have graphs and frames be 
equivalent as first-order entities. This should allow for example the 
ability to take some world and speak of it abstractly, as if 
"membership in world A" were a reasonable relation. Alternatively, 
each graph could be explored as its own world. This is like a kind of 
linguistic context shift: for example I can tell the history of some 
people in the third person in retrospect, or I can take on a 
perceived role in that place in history and speak as though I were a 
part of it in the first person. The former relates to a graph 
formalism; the latter to a frame formalism for the same situation.

To elaborate on frames, and to explain some of the directions that my 
code has taken (which I will post a little later today), I should 
explain what kind of information a frame might have. First of all, I 
will re-visit some past confusion over the status of arrows versus 
nodes within the theory, and why an arrow system needs no separate 
node type. If we consider arrows as objects in an abstract structural 
sense, we see that they can be seen as nodes with their world 
providing information about two attributes, the head and tail of the 
arrows. So in this sense, nodes and arrows are merely two types in a 
much larger spectrum of possibilities of types within the arrow 
theory. Nodes represent zero information about the object, arrows 
represent two selection bits (arrows) of information about an object, 
and of course there are the two partial-information possibilities of 
having either head or tail information but not both. In general the 
spectrum of types would be specified appropriately in lattice theory 
(the theory of partially-ordered sets, basically). This is one of the 
major motivations of dealing in arrow atoms of information, since it 
provides an abstract algebraic formalism over its own types in terms 
of itself (lattices are naturally viewed as arrow graphs. See 
_Lattices and Order_ by ?????).

Side note: so why are arrows so special? It's because they encode the 
minimum amount of selection information required to build arbitrary 
description structures.

To continue, the frame (the world) is a total set of information. 
Consider it useful as context. This is relatively straightforward 
until one considers the possibility of multiple frames (worlds). For 
in the case of a single frame, one can implementationally simply 
speak of the class of arrows in blanket terms as the content of the 
frame. When considering (implementing) multiple frames, one must 
consider reachability from each frame object as defining frame 
content. This forces us to consider a classification of the 
information types that each frame would have to contain and how the 
information in each type would relate to information from other 
frames.

This is much more tricky than appears at first sight. For example, we 
can state that a frame obviously must contain the information encoded 
by the head and tail attributes of each arrow. Must this information 
be unique? Must it be value-oriented, i.e. if I reify the head 
reference of an arrow as another arrow, must it be uniquely defined 
by that original arrow (so that there are no duplicate concepts 
represented)? If so, this represents a distinction between the 
first-order and meta-level notions of information, since very often 
arrows are not considered in a value-oriented way. As of now, class 
FrameGraph has two graphs for the head and tail content of its 
arrows, but they do not hold that information strongly.

Furthermore, suppose that a frame is a subset of another frame. How 
should the information between their head and tail graphs be related? 
The use of weak pointer collections is an obvious convenience to use. 
However, semantically-related subset relations in Smalltalk are 
tricky to manage because of Smalltalk's state-driven nature. I am 
considering a re-implementation in O'Caml or Cecil due to this.

Before I finish, I should return to a notion I touched on at the 
beginning of this essay. The notion of pairings of arrows is 
interesting, and even more interesting in light of the discussion of 
frames. For example, suppose I consider for any frame a graph that 
represents the set of all pairs of arrows over that frame. That graph 
would have to represent the *values* of all the arrows! This can be 
seen because every arrow is a kind of pairing, though not necessarily 
unique in value (e.g. (1,2) should mean different things in different 
contexts without the context having to consider the identity.).

More to come... (sorry my time ran short today)
~