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