Logic in Big Chunks
(
This is (hopefully) going to be a rather experimental overview of Joscha's ideas on how
chunks should be pieced together into some logical units of nets.)
Chunks are a new nodetype (yet to be designed and implemented) intended to
simplify the structure and thus the design of node nets and (
probably) to perform some
more magical things beyond my understanding (see
chunk-development for a first draft on
the associated mechanisms).
In node nets we frequently need to express conjunctions (
AND), disjunctions (
OR) and
sequences (
SEQ). Without doubt, there are many ways to do so using chunks. But a really
"elegant topology" for this hasn't been found yet.
So, lets have a look at the current ideas and their problems. Good news first:
OR
and
SEQ can be expressed in an intuitive and very simple way:
| Chunk-OR | Chunk-SEQ | |
|---|
 |  |
In both cases
1 is the "parent" node and it is connected via
SUB-RA/
SUR-CA
(see
chunk-development)
to all the other nodes ("children"). Now, for OR the children are not connected among
each other and can therefore play and discover the world on their own, independently
from each other. If eventually one of them gets "true" (again, see
chunk-development),
it communicates
its success to the parent. A
SEQ (a more sphisticated game for the children) in
contrast is build by assigning an "order" to the children (here
2,
3,
4) by connecting
them with
POR-RA/
RET-CA. A child then gets only active if its predecessor was
successfull (and thus sends a request to the node's
RA-slot). Further more only the
last child reports success to the parent (
I'm not entirely sure about this).
So far, so good. The difficult part is: What happens to
AND? Up to now, two ideas have
been suggested; but both (seem to) have some drawbacks:
| Chunk-AND, version 1 | Chunk-AND, version 2 | |
|---|
 |  | |
The first version may be interpreted as '
AND is a
SEQ that can be processed in any order'.
The nice thing about this idea is that there is some kind of 'continuum' between
AND,
SEQ and
OR and this is a really usefull property since we are dealing with
dynamically developing nets and we want to be able to change them using tools like KBANN.
The problem is that this topology is not conform to the 'original' functionality of chunks
(as defined, once more in
chunk-development) : Since
AND children have predecessors
and successors
they would politely all wait for each other to perform some action and nothing would happen
at all. In addition executing an
AND 'as a
SEQ in some order' does (
maybe) not really meet
the intuitive 'semantics' of
AND : we would like the children to operate independently, all
at the same time but then wait for each other and only confirm with their parent if all
of them were sucessfull.
This is exactly where the second
AND-version comes into play.
Here, the children
2,
3,
4 are connected to the parent as in an OR-structure. But in addition
they are
POR-RA/
RET-CA connected to a new node
5. The only purpose of
5 is to collect
the other children's 'answers' and send a confirmation to
1 if all of them confirmed. So this
AND works just fine with the 'old specification' but it has the disadvantage of introducing
a new and moreover meaningless (in the sense that chunks should represent 'something that is
the case') node. This is somewhat ugly and destroys all 'continuum properties'.
One way to get
the first
AND-version to work is to let (children) nodes examine wether their predecessors
are successors at the same time; if true they could behave like nodes in an
AND are expected
to behave. But such checks needed to be performed frequently since the nets are changing and
so this is not a really nice solution either.
So, does anyone have any ideas, suggestions, remarks?