GRAVITY TWENTY SEVEN -- Tuesday, October 13, 1992

Okay, here's the scene. One agent, Axle, is about to teach another agent, Van, a song-association system named SongLink. My purpose is not to describe how this system might operate, or how it's designed, but instead to illustrate communication of systems between ThoughtShops. SongLink isn't a "program" in the usual sense. It's not something you just load onto your computer and run. It's also not something you simply file in and use as you do with Smalltalk code. There's more interaction required.

SongLink itself is contained in a file called 'songlink.i' that Axle has access to. Were you to transfer this file to the Chicago ThoughtShop, it would be useless. That file is useable by only the one agent, Axle. For the other agent, Van, to learn SongLink, more has to happen than simply transmitting the file. This involves the process of acclimation that I wrote about earlier. The two agents must resolve their references. They must also establish a common ground. The end result will be a file called 'songlink.i' that is useable by Van and only Van. This new file will be quite different from the original.

This is going to be tough to explain in words. I want a blackboard right
now. I also wish I could spend more time explaining rules and options, which are quite essential in understanding systems in Gravity. But I don't have time with only three days before they pull the plug.

So: It starts with Axle simply sending the name for the system to Van.

1. (to Van) < metal.head : axle | songlink >

Note that only three of the five components of a Gravity name are mentioned. You'll recall that the first is the ThoughtShop, 'metal.head', where the agent resides, and the second is the agent, 'axle', in charge of the item. The item itself is 'songlink'. The rule and option components are not specified.

Van receives this single name and checks its context. It finds that there
is no name matching that name in its context and so sends back the same name, but with a rule attached...

2. (to Axle) < metal.head : axle | songlink | send >

When one agent sends a name with a rule to another agent, a dialog is
established between them. 'Send' is a basic rule that all agents understand. For those of you that understand Prolog, there's some similiarity between the way Gravity processes rules and the way Prolog works. I was working a lot with Prolog when I first started to design Gravity. One thing is very similiar. Names like the one above reference an actual rule within the context of the agent Axle. There's a 'send' rule associated with item. Just as with Prolog, rules are dynamic. They're not like functions in a traditional programming language. Nothing's hard-wired, really.

At any rate, Axle responds with:

3. (to Van) <| sub : 3 >
< nlpLand : casey | parser >
< henry | textBase >
< songAssociate >

These are four seperate names that Axle sends to Van.

The first name tells Van that a rule is being sent, which is the 'sub' rule,
which tells Van that the following names are part of a system, and that
they're on the same hierarchy level. They're the major headings of the
system. Note that the full name expanded would be:

< metal.head : axle | songlink | sub : 3 >

Only <| sub : 3> need be sent because the rest is implied in the dialog.
The '|' is required to let the receiving agent know that 'sub' is a rule
of the current item, and not a new item. The '3' is an option of 'sub'
that lets Van know that 3 names will be following. When a 'sub'-rule is
being communicated, the 'sub' names are sent before the receiving agent requires any clarification. That is, everything in #3 is sent before Van responds.

Note the syntax of the three following names. The first references an
item called 'parser' that is handled by an agent named 'casey' that resides in a ThoughtShop called 'nlpLand'. The next is an item called 'textBase' handled by an agent named 'henry'. Van knows the ThoughtShop is 'metal.head' by the context. Likewise, 'songAssociate' is known to be an item handled by 'axle' of ThoughtShop 'metal.head' because of the context of the current dialog.

Enough for today...

   
         
     
please note: The word "Immuexa" was originally my name for what later became the World-Wide-Web. It's now the name of a company, not a network.

The software known here as "ThoughtShop" was originally called "Colony." The rights to the tradename "Colony" were sold in January 2000.