Arrow system ( was: Re: Interesting quote from AI book )

RE01 Rice Brian T. EM2
Tue, 27 Apr 1999 12:23:48 -0800

> > > lets' assume that it takes N graphs of arrows to describe all of the
> > > aspects of an equation embodied by a written statement.  these N
> graphs
> > > wouldn't apply to just that equation, though.
> > >
> > > example:
> > >               n=m+1
> > >
> > > there would be an arrow between the atoms for 'n' and 'm+1' that would
> be
> > > part of the graph linked to '=' (think of '=' as a relation, and as a
> set
> > > of arrows).
> > > there would be an atom for 'm+1' would be an arrow in the '+' graph
> > > linking the atoms for 'm' and '1'.
> > > 'n', 'm', and '1' would be arrows (selectors) from sets of atoms: 'n'
> and
> > > 'm' would be part of a particular user context vocabulary (called an
> > > ontology), and '1' would be an arrow from the set of natural or
> integer or
> > > whatever kinds of numbers (again, in a graph).
> > there's more to this example than '=' and '+', as is obvious: this is
> where
> > the concept of an ontology (and the resulting relativism) comes into
> play.
> > we'd like to specify the set of vocabulary that is defined within a
> given
> > context, and use this to shift contexts computably and preserve the
> meaning
> > of the vocabulary.
> Ok. I'll try to clarify how I interpret that:
> An ontology, or part of one, specifially the natruall numbers, define
> some degree of freedom.
> As in 'n=m+1', '=' restricts this freedom to the corelation of 'n' and
> 'm+1' in the ontology
> of the natrual numbers ( so that 'n' and 'm+1' would reference the same
> actual number ).
ok, that makes sense, although that wasn't the example for which i was
looking.  (i was actually thinking about what 'n' and 'm' represented to the
system, since as variables, they must belong to some state-machine that
interacts with an environment.  the ontology would map the atoms for those
variables to statements that described the semantic meaning, probably from a
different context.  i digress.)  the natural numbers would basically give
you a vocabulary for talking about the finite results of (linear) iteration.
in that way, it defines a degree of freedom.  however, you can define other
ontologies for the natural numbers that do not rely on that original
ontology necessarily.  in fact, any ontology that completely defines finite
iteration could be used to base the natural numbers' definitions.  of
course, now we get into representations, like binary or octal or decimal
systems of numbers that happen to all represent the same concept.
ontological relativism as a principle allows us to use any system as the
'base' system.

> If you say, 'n=m+1', the system ( beeing always consistent, I suppose ),
> that must be the fact.
well, what i'd like to do is to take away implicit semantics from the arrow
construct, so that the arrows themselves would simply represent the
selection of the 'n=m+1' as a syntactic expression from algebra.  the
question of what the system or user _does_ with that statement, like assume
it to be true or to check it against other assumed or known facts, should be
explicitly determined elsewhere.

> If I ask for the natrual number interpretation of 'n', then all the
> relations concerning 'n'
> must be taken into account, and the answere would be all the possible
> natrual number interpretations of 'n' which does not break consistency.
> You very much want this to be a single pass iterative process, but I'm
> suprised if it is.
maybe.  i'm not sure if i will stay with this opinion, but i believe that
simply modeling the computation process with arrows (either before or after
the fact) will be enough to implement the system.  i know that the previous
statement is strange, so i'll try to be clearer.

> And in the case of the relation '=', you'll need, eighter to use
> "shifting" or some node/atomic
> lowlevel entity to actually compute or verify it given 'n', 'm' or both
> ( for oldtimes sake, say '1' is given by default :). Now, "shifting" if
> I understand it correctly, is the general case way of finding something
> among somethings that satisfy some relation - in practice a seach, and
> in the general case a brute force straigh forward, test _everything_,
> search.
ok.  the "shifting" of contexts was supposed to relate to the papers by John
McCarthy called "Formalizing Context (Expanded Notes)" (i lost the URL, but
i'm sure that the tunes site has it somewhere).  so that related to
interpreting information gained by one computation for the use of another,
unrelated computation.

the searching problem, as you state it, is another issue.  i think that the
solution could be found by a simple idea:  suppose we take some data-format
(a state-machine algebra) and define its information in terms of arrows.  it
should be easy, then, to store most of the arrow system's information in
terms of that data structure, based on the efficiency of the encoding
(information density, search-and-retrieval times, etc).  we could then, for
instance, store information in syntax trees (like LISP) and retrieve it in
the same way, constructing arrows for the information iteratively.  this
could even allow us to gain new information from, say, Lisp or Scheme source

another thing is that not all graphs should be implemented _extensionally_
(that is, allocating every arrow in a graph some memory).  if we write a
statement that decides whether or not an arrow belongs to a graph, then that
statement often should be enough.  (see draft sections 3.6? "intensionality"
and 4.4? "graphs")

> Now, where I'm getting at is: What kind of computational model do you
> propose? ( that is: how will the system in practice process requests
> like "what is n?" ?) It would be interesting, in the context of arrows
> beeing a very general form of data organisation, to see what complexity
> it would have, and what compromizes ( if any ) and restrictions ( if any
> ) it would have.
in this case, i would generally propose lambda-calculus, which is acheived
quite readily by the arrow system when you make category diagrams.  category
diagrams are just arrow graphs where all arrows compose sequentially.  the
arrows represent lambdas, and the nodes represent expression types.
otherwise, i believe that ontologies and algebras could help to define any
execution scheme that a person could imagine, even complicated ones.

> My imediate guess would be that since it is uttermost flexible, then
> evaluating would be uttermost complex. But these are just guesses,
> wouldn't help you if they could.
maybe.  it _is_ a help to hear your ideas, however.