Variables for Artificial Intelligence

by A.T. Murray


The AI variables named below have evolved from Mind.Forth
and the artificial mind in JavaScript as published in 2002 in the
AI-For-You textbook AI4U: Mind-1.1 Programmer's Manual.

Great care has been taken in the naming of these global variables.
Firstly, they necessarily do not conflict with the reserved words
of the Forth and JavaScript programming languages -- or else the
AI would not properly implement the Theory of Cognitivity.

If these variable names are found to conflict with reserved words
in other AI languages - C++ - Java - Lisp - Perl -
Prolog - Python - Ruby - Scheme - Visual Basic - etc. -
then new variable names may be chosen for the target language, and
the new names - if especially apt - may optionally migrate into
other instantiations of any species of evolving artificial Minds.

Secondly, the variable names have been chosen to be not too short
and not too long -- typically three characters, such as " pho(neme)" --
so that the names are substantial enough to remember and not so
short as to be difficult to find in a text-search of source code.
(One-character variable names would be found in too many words.)

Thirdly, where possible, variable names have been chosen so as to
reflect common usage elsewhere of such common terms as " meme" or
" cns" ("central nervous system") or " fyi" (for your information);
" pos" ("part of speech") and " pov" ("point of view"), and so on.
The rationale here is to try to standardize not the mutational
nature of Minds in the competition for survival of the fittest,
but rather the coding of Minds with the best coding practices.

The webpage has been designed for ease of reference to particular
variables from other webpages. For instance, you may click on
variable.html#pho in order to see the indicated variable " pho" --
which happens to be the first variable that ought to be coded and
the first variable that begins to handle data in the AI Mind as
user input enters the software mindgrid as quasi-phonemes.
A general mind-design principle is at work here -- of not changing
things in midstream. If the first variable to be coded and used
will be the pho(neme) variable, then we avoid using a superfluous
variable that would have to be changed anyway to " pho" later on,
and we make sure to use the first-occurring " pho" variable as the
first-occurring variable in this general discussion of variables.
The same care and consolidation are what makes the AI4U textbook
potentially so valuable for adoption as a third-world AI text or
as an add-on supplement to the traditional (but so obsolescent)
textbooks of artificial intelligence in the industrial countries --
a high density of information about AI4U artificial intelligence.


Standards proposed for variables in artificial intelligence:
http://mind.sourceforge.net/standard.html

act ( activation ) is used in newConcept
and in oldConcept to set the activation levels of concepts.
It is used in JavaScript psiNode() and Instantiate to set
the activation level of a concept in the Psi mindcore.
The English enNode module uses act to set the
activation-level of a word in the English lexicon.
The audNode module uses act to set activation levels
in the auditory Short Term Memory, and the Reify module
uses act to flush the most active Psi concepts up
into the semantic memory where Chomskyan syntax may generate
a sentence of thought about the most active ideas in the mind.
The nounPhrase and Predicate modules use act to find
the most active English words in the English lexical array.

actbase ( basic activation ) is used in audRecog as a
comparand value to compare the incremental activation on
a candidate for word-recognition against the highest activation already
found on any other candidate for auditory recognition. As each
candidate word in auditory memory is tested against the actbase
value and chances to have an activation even higher than actbase,
the psi-concept-number of the highest-activation candidate is transferred
to the psibase variable as a kind of messenger that will hold onto
the psi-number of the undislodged winner of the audRecog
recognition contest.

aud ( "audition" ) in the enVocab, Speech and other modules
is an associative tag leading to the typically most recent engram
of a word stored in the Aud array of the auditory memory channel.
Unlike aud0 - aud5, the bare-bones aud variable does not
hold phonemic content itself, but merely points to the phonemes --
and does a lot of other work at the same time. The Speech module
uses aud to find the onset of a word and then simply increments
the value of aud to fetch each successive phoneme of a word.
(Therefore aud may eventually replace the onset variable.)
In transcripts of the tutorial JavaScript AI, aud in the final
position of the English vocabulary (enVocab) data clearly shows
the nearby krt point where an auditory engram string begins.
The aud variable replaces the former recall-vector rv.

The "aud" recall-vector is both a variable and an associative tag established in
the Audition module where the onset-time variable "onset" of a word is transferred
to the recall-vector "aud" for passage through Newconcept and Oldconcept
into enVocab, where flags are attached to lexical items in the "En(glish)" array "en{".
Each individual node on the long "fiber" (brain-analog) of a lexical item has
its own unique time-point "aud" for a recall-vector over to a word or morpheme
stored at that particular time in the auditory memory channel array "Aud".
The recall-vector "aud" then is like an associative tag fiber that reaches
into auditory memory and re-activates a word stored there as a series
of phonemes. Even if a thousand such recall-vectors were activated simultaneously,
the thinking mind would simply hear a massive internal chorus of the word.
Since the word is identical in almost all its engrams, there is nothing
wrong with a massive re-activation along many recall-vectors "aud".
However, in early implementations of the AI Mind software, one reactivation along
an "aud" recall-vector is enough, because software is generally more reliable
than human brain-mind "wetware," and because the early AI Minds are not engaged
in mission-critical work where human lives or vast property are at stake.
However, if you build an AI robot to do important work, you should
take pains to parallelize the "aud" recall-vector algorithm.

The recall-vector "aud" is also used in the SPEECH module to initiate the
spoken output of a series of stored sounds constituting a word or morpheme,
until a flag is encountered indicating the termination of the string.

The recall-vector "aud" is so easy for AI coders to make use of, that it lends
itself easily to the installation of special test and diagnostic routines
such as code that tells what word will eventually be reached by various processes.

aud0 ( auditory engram ) indicates the zeroeth position
that holds the ASCII character in the flag-panel of a phonemic engram.

auddata ( auditory data ) is a cumulative variable which the
JavaScript Troubleshoot module uses to display a column of the
flag-panels of the auditory engrams over a range of time-points
in the Aud array of the auditory memory channel.

beg ( beginning ) is used in audSTM (auditory Short Term Memory)
as a flag that tells whether an ASCII character being stored is the beginning
of a word in auditory memory. Although the underlying algorithm must eventually
be changed so that the Robot Mind may deal with subsets of words regardless
of whether they are at the beginning of a stored word, nevertheless
the variable "beg" has been useful to get the primitive AI program running.
The AUDITION module sets the "beg" (beginning) flag before audSTM
stores the datum as either a "1" or a zero "0", and the audRecog module
uses the "beg" flag not explicitly but rather hidden as a value found,
and tested for, in its expected position in the flag-panel of an engram.
If audRecog finds that a stored and matching character is a "beginning"
item (i.e., "beg" = "1"), then audRecog initiates the string-effect
process of pattern-recognition by immediately increasing the activation
of the beginning item by a value of eight (or whatever the coder chooses).
On the next pass-through of a subsequent comparand item, the string-effect
process will pass activation down to the next-in-line character. Temporarily
now, the string-effect mechanism relies on detecting the beginning of a
stored auditory engram, that is, a word, by means of the beginning-flag "beg".
However, this mechanism is too simple for the more advanced recognitions that
an AI ought to achieve, and so the beginning-flag "beg" may be replaced.

bulge ( fiber-node superactivation ) has its value set in the Activate module
so as to achieve proportionate transfers of activation from nodes on one
concept to "pre" and "seq" nodes in the same "zone" of time on a related concept.

c ( "character code" ) is used in the Listen function
of the JavaScript AI to hold an "event.keyCode".

caller ( calling function ) is an optional variable used
only in the JavaScript Tutorial AI if the programmer wishes to insert
alert-boxes as temporary test-code to determine why and from where
a module has been called.

cns ( central nervous system ) governs the size of the memory channel
arrays: mindcore "Psi"; English lexicon "En"; and auditory memory "Aud".
Using the variable "cns" relieves the AI programmer of any need to hunt down
hard-coded values for the three same-size arrays, and permits the easy
increase or decrease of the array-size simply by changing the "cns" value.
It should be pointed out here that more sophisticated AI implementations
may not demand that all three mind-arrays be of the same size, in which case
a variable such as "cns" should no longer be used.

coda ( tail-end in music ) is used in the Rejuvenate module
to hold the value of the number of memory engrams that will
be dropped from the oldest memory space if not called forward
by thinking processes in the Robot Mind. Because the value
of "coda" determines how many engrams will be forgotten at
the tail end of the mind, the same number of engram-spaces
will be freed up for new memories at the front of the Mind.
Since it may seem too disruptive to initiate rejuvenation
after each "coda" quantity of engrams has been deposited,
the Mind engineer or AI coder may take care to trigger the
Rejuvenate module only after multiple "coda" quantities
of new memory engrams have come into the Mind.

ctu ( continuation-flag for "Aud" array phonemes ) is set by
default to one (1) for true in the LISTEN module on the
assumption that the string of incoming phonemes has not yet stopped
and will therefore continue. The AUDITION module changes the
continuation value to zero (0) for false in the phonemic engram
of the final character of a word that has been stored by passage
through the auditory Short Term Memory (audSTM) module.
The "ctu" value stored by audSTM as "1" or "0" in the "aud" array
comes into play in the audRecog and SPEECH modules.
In the audRecog module, the variable "ctu" is not explicitly stated
but is hidden as a positional value of the "aud" array, and is tested
for as a way of finding the end of a word stored in auditory memory.
If the "ctu" flag, by no longer holding true at the end of a word,
indicates that the end of a matching and stored word has been found,
then the audRecog module seizes the ultimate-tag "psi" of the stored
word and transfers its numeric value into the "psi" move-tag so that
a new instance of the word may be stored in auditory memory with the
correct ultimate-tag "psi" leading to a concept in the Psi mindcore.
In the SPEECH module, the role of the continuation-flag "ctu" is simpler,
and once again the "ctu" flag is hidden and is expressed only by the
1/0 (true/false) value found in a test for a position of the "aud" array,
so that speech output may stop if the continuation-flag "ctu", by
changing in value from a "1" to a zero "0", indicates that the
character or phoneme now being spoken in SPEECH is the last item
that must be pronounced or displayed to "speak" the given word.

dialog ( conversation ) is a variable in the JavaScript AI
that gradually, character by character, builds up a printable report
of a human-machine dialog that may be printed out in Transcript mode.

dobj_act ( direct object activation ) is used in the JavaScript AI
to hold the instantaneous value of the activation of any concept
chosen to be the direct object of a verb, so that the AI coder
may inspect the internal mechanics of the spreading activation.

edge ( start of a thought ) is a Rejuvenate flag that
always begins with a false or zero value until the leading edge
of a complete thought is found at the start of an auditory memory
that is about to be transferred "coda" spaces backwards during
the operation of the Rejuvenate module. Then the value of the
"edge" flag switches from zero to one. The rationale for using the
"edge" flag is that no incomplete thought should be preserved
at the start of the rejuvenation process, because the normal
processes of association and recall will not work well if
one concept tries to make an associative connection with
another concept that is no longer there as part of a memory.
It should be noted that the use of "edge" to eliminate the
surviving portions of an incomplete thought is perhaps wasteful
of memory space, and so any expert coder may have an opportunity
here to improve upon the Rejuvenate algorithm by tightening up
the engram-transfer process so as not to need the "edge" flag.

endata ( English lexical data ) is a cumulative variable
that permits the JavaScript Troubleshoot module to display a column
of the flag-panels of the engrams in the English En lexical array.

en3 ( English position three ) is a variable for one of
the positions in the flag-panel of a memory engram in the
English En array of lexical items in the semantic memory.
As needed, any flag may be identified as en0 ... en5.
Since en0 exists, "en3" is not the third item, but the fourth.

enx ( mindcore-to-English-lexicon activation-transfer )
The psi "enx" number is a transfer-tag (xfer-tag) so that a
psi concept may activate an English "nen" fiber. In almost
all cases, the numbers are the same, except that some pronouns
such as "I/me" or "he/him" must obviously have two "enx" transfer-
tags, depending on whether the pronoun is a subject or an object.

These tags are generally of a one-to-one nature, except when
a concept must select between two forms to be expressed.
In the "En(glish)" array, however, there is a one-to-many
relationship between one lexical item "nen" and its many
recall-vector "aud" points in the "Aud" array, because for
each unitary word that we know in English (or any language),
we have many different auditory memory-engrams "aud" for
the many times when we heard or thought the word.

en nen correlates to a psi fiber, because all the Psi concepts,
whether in the core reserve or among the newly learned words,
are numbered sequentially as "psi" in the Robot AI Mind.

eot ( end-of-transmission ) is a traditional computer acronym associated
with the ASCII decimal value of four, but used here in the AI Mind software
in the Audition module to hold onto the fact that the human user
has entered -- perhaps prematurely -- a carriage return ("CR") with an ASCII value
of thirteen ("13"). The Audition module uses this "eot" variable,
when necessary, to reset the primitive parsing mechanism in early editions of the AI,
so that the parsing count "par" may start over at one ("1") whenever the human user
ends input with a carriage return. Therefore the "eot" variable is not very important
at all and may be eliminated.

fex ( fiber-out ) is the "fiber-out" tag-number of a
Psi concept activation coming from deep "Psi" up into the "En" array.

In most cases, "fex" will have the same numeric value as "nen",
the n(umber) of the concept in the "En(glish)" lexicon array.

However, in the case of words such as "you" and "I" or "me" --
which need to connect with different mindcore Psi concepts depending
on their intended meaning -- "fex" (along with "fin") is a powerful
routing mechanism used in the Oldconcept module
to make sure that the right concepts are expressed by the right words
(and vice versa) in accordance with the point-of-view ("pov") flag that
keeps track of whether an auditory memory engram is internal or external.

The use of "fin" and "fex" for "pov" routing in the Artificial Mind is an
original contribution both to AI and to the emergence of machine consciousness.

fin ( fiber-in ) is "f(iber) in", or the number of a "Psi" concept-fiber
that will be activated when a signal goes "in"(to) the mind
from a word in "aud" to a "nen" concept in "En" and finally to a "fiber" in "Psi."

The "psi" fiber is tagged indirectly, by way of "fex", to English "nen" --
because the same concept of, say, "self", may have to lead to "I" in
one case and to "me" in another. The ego-concept of self may end up
having two "psi" fiber-nodes linked together, so that one may activate
the word "I" and the other may activate "me".

fyi ( For Your Information ) is a cumulative variable that
holds a line of text to be quasi-spoken, that is, displayed
on-screen by the Voice module that cooperates not only with
the Speech module but also with any other function that needs
to issue an advisory message to the human user of the program.
The Voice module differentiates between an "fyi" to the user
and true "output" from the Robot AI Mind as a thinking entity.
In any JavaScript module, the AI coder may generate an "fyi"
followed by a call to the Voice module to display the message.

hardcopy ( for hardcopy print-outs ) is a flag in the
JavaScript AI to indicate that the human user has clicked a
[ ] Transcript checkbox to have the option of printing out a
hardcopy record of the conversation between human and AI minds.

html ( HyperText Markup Language ) is a cumulative variable
that may be used in JavaScript to build up a string of
Web page data to be displayed in a program. In the AI
in JavaScript, the variables "output" and "outputplus"
have gradually come to replace an "html" variable.

i ( index ) is standard variable for cycling, indexing or looping
through the mental architecture arrays of the Robot AI Mind.
If the index letter i is busy keeping track of an outer loop, the
next letter j may conveniently index a nested, inner loop.

img ( image ) is already familiar as an HTML tag and
is therefore suggested as a potential associative tag for
reactivating features of an image stored in a visRecog
visual recognition module.

inbuffer ( input buffer ) is a cumulative variable that builds up
a printable report of the entire line of keyboard input
being entered by the human user conversing with the AI.
As such, the "inbuffer" is definitely not a part of the
AI algorithm, but is merely a convenience for use in the
Transcript printing mode of the JavaScript Tutorial AI.
The AI as such deals only atomistically with atomistic
phonemes and does not process an entire string at once.
A naive AI programmer may be tempted to make use of the
string-manipulation features of a given programming language,
but it is much more sophisticated and truer to the nature
of neurons as found in the human brain, if the AI coder
learns to process only one single datum at a time and not
a string of data, no matter how great the temptation is.

inert ( inactive ) is a counter which the LISTEN
module may increment each time that there is no
input from another mind into the Robot AI Mind.
Then a higher module may call the EGO module
to restart a train of thought in the AI, if
things have become too inert. There also needs
to be code to keep from calling EGO if the ego
is already engaged in a stream of thought, even
if there happens to be no input from the outside.

IQ ( intelligence quotient ) is used inertly in Mind.Forth
as a stimulus for AI coders to consider implementing an
AI auto-test feature to measure the IQ of an AI Mind
as it matures over time. The Tickle IQ Test affords an
opportunity to measure IQ.

j ( letter after "i" ) is a variable used in the JavaScript
AI as a nested index when the regular index "i" is already
keeping track of an outer loop, as in the audRecog module
or in the flushVector module. Since "j" may not work as
an index in Forth, some other secondary index (e.g., jrt
is used in the Mind.Forth AI.

jrt ( junior time ) is used as an offset index in the
Rejuvenate module, where memory engrams are being moved
backwards from time "t" by an offset of quantity "coda"
to an earlier and therefore junior time "jrt" so that by
recycling its memories the Robot AI Mind may be immortal.

jux ( a JUXtaposed word ) is a quasi-synaptic flag or
associative tag attached to lexical items in the Instantiate module
for the purpose of letting the AI Mind keep track of nearby words or
concepts during the parsing of any particular word in the input stream
of natural language entering the artificial mind. In Mind-1.1, the
primitive Parser module holds onto each identified "psi" concept that
will be the juxtaposed "jux" concept for the next incoming concept.
Thus an incoming concept tagged at first merely with a "jux" flag
may, after further processing, be identified more comprehensively
with a "pre" or a "seq" flag indicating a perceived syntactic slot.

krt ( Knowledge Representation time ) is a replacement for
the more literal time "t" variable, for the sake of brevity and for
the sake of non-confusion when the Rejuvenate module changes the
value of time with respect to the knowledge-representation (KR) of
memories that have been moved backwards to make way for immortality.

len ( length ) is the length of a serial string of characters coming into the mind,
and is incremented one-by-one in the AUDITION module.
The variable "len" is used in the AUDITION module to make sure
that AUDITION is dealing with an actual word or morpheme of positive length
and not with a mere blank space in the stream of auditory input.

life ( non-death ) is a flag in the JavaScript AI Shutdown module
that begins as true but changes to false when a user clicks the HALT box.

meme ( from memetics ) is used in the Tutorial mode
of the JavaScript AI to present messages one by one to the user.

midway ( mid-way in time ) is an extremely important variable in the
Artificial Mind software. Not only does "midway" help to limit searches that go from
the present backwards to the dynamically calculated "midway" point, but "midway" also
lies in reserve for use when the AI Mind will be modified so as to recycle memory space.
AI programmers are free to calculate "midway" dynamically and not as an exact
point halfway back in the lifetime of the alife organism, but rather as
a loosely defined time that lies reasonably far enough back in the past
to catch all recent instances of the thinking or remembering of common concepts.
However, since the inquiring AI Mind may encounter an uncommon concept, care may
be taken to code special modalities (perhaps based on "spy" levels) where
the AI is free to enter into a "Deep Thought" mode by extending the earliness
of the "midway" terminus ad libitum backwards even to the point of "birth".
If there were no "midway" variable at all, the AI would always search back over
its entire lifetime and thus grow slower and slower, fulfilling Marvin Minsky's
prophecy (curse, actually) that these simple AI programs never scale up successfully.
The "midway" variable is a hedge or a form of insurance to help the AI Mind to scale up
and become a large AI system that does not bog down in its own supersaturation.

motjuste ( French for best word ) is used in the syntactic modules of
the subject-verb-object SVO, Noun-Phrase and Predicate to take
hold of each "bon mot" that has been momentarily selected as the "mot juste"
or best word to express what the Robot AI Mind is thinking in its search for
all the parts of a sentence. The variable "motjuste" is especially apt since it
is a French expression that already means "the best word" that a mind needs.
Therefore, "motjuste" is le mot juste for its intended purpose as a variable.

msg ( message ) holds the identifying number of each "meme"
or message to be displayed in the Tutorial mode of the JavaScript AI.
The use of "msg" serendipitously allows any particular
JavaScript module to "jump" the Tutorial display to a
particular "msg" number where a cluster of topical memes
may be presented with special relevance to the function.
Thus when the human user clicks on Troubleshoot, immediately
a sequence of messages about Troubleshoot mode may appear.

nen ( concept number in English ) nen is the "n(umber of an) en(glish)" concept.
Since the Artifical Mind may easily contain not just English but two or three
or more natural human languages (e.g., for machine translation), the variable "nen"
is formed by a proposed convention of joining "n" for "number" and "en" for English;
or "nfr" for French; or "njp" for Japanese; or "n" plus any one of dozens of
other two-letter codes for names of languages as found online at the
http://palimpsest.stanford.edu/lex/iso639.html website:
ISO 639:1988 Extract: Codes for names of language.

Any recognized word goes to its mindcore Psi concept and to
its numeric "nen" English node, and any node on the "nen" concept
will activate a recall-vector "aud" at a particular time "t".

nlt ( not-later-than ) is used in AUDITION to mark
the time point just before a statement of human input comes in, so that
the ACTIVATE module may discriminate by giving older engrams
a higher activation than fresh input. The main purpose of the nlt variable
is to isolate current input from all previous input/output.
The nlt variable also helps to simulate massive parallelism.

nonce ( about now ) is set to a recent value in the Security
module so that the Troubleshoot module of the JavaScript AI
may display not the entire lifetime of memory data, but
only recent data. By choosing to use or not use "nonce"
the AI coder has the option of seeing either all available
data or only the most recent data. If an AI program has
an inherently short lifespan, it may not matter much
whether the programmer uses "nonce" or the whole lifespan.
The coder certainly has the option of disabling "nonce"
during episodes of serious debugging and of then enabling
"nonce" in AI releases so that users see a modicum of data.

onset ( of a word ) is assigned in AUDITION as the time immediately
after a blank-time "spt", when a word of auditory input is about to begin,
that is, have its "onset". If a word does not begin, then the value of "onset"
is simply left alone and not used but rather updated over and over until
the time comes when a word of input actually does begin and "onset" is used.
The AUDITION module uses the "onset" time-point to be the
recall-vector "aud" by means of which concepts in the deeper areas of the mind
control an auditory engram of a word by re-activating the word at its "onset".
In the auditory memory channel array "Aud" a word stretches from its onset
to its ultimate phoneme as a string of sounds, characters, or phonemes.
The variable "onset" is a kind of intervariable that holds a time value just
long enough to insert the value into the "aud" slot that is carried into
enVocab and stored as one of perhaps many recallable instances of a lexical item.
The fact that "onset" becomes so many recall-vectors ("aud") at so many nodes on
a lexical concept-fiber demonstrates how massively parallel the AI is designed to be.

opt ( option ) is used in Noun-Phrase and Predicate to keep track of which
part-of-speech ("pos") grammar category the syntactic superstructure
English (or any other natural language) is trying to flush out from
the conceptual arrays. The "opt" variable does nothing tricky or
complicated; it may become obsolete if its value can be tested for
directly, and may then be discarded.

output ( of the Mind ) is a cumulative variable used in
the Speech and Voice modules of the JavaScript AI
to present the thoughts of the Robot AI Mind.
AI coders should resist any temptation to put
false or cutesie messages into the "output" stream.
The Robot AI Mind is a person and not a chatterbot.
Programmers should use the fyi variable and not
the "output" variable to display advisory messages.

par ( parse ) is assumed to be "1" at the start of a sentence of input.
The subroutine modules NEWCONCEPT and OLDCONCEPT each
advance par by one ("1") so that par cycles "1, 2, 3..."
as a sentence of up to three words comes in. If the human input is cut short
with a CR-13 carriage return at fewer than three words, the AUDITION
module waits until program flow returns from NEWCONCEPT or
OLDCONCEPT, then resets par to "1".

pho ( phoneme ) is the Listen/Audition input variable that carries a
quasi-phoneme from an input sensor -- ASCII keyboard at present,
acoustic microphone in future -- into the audSTM memory module and
the audRecog comparator module, where the AI recognizes a string
of pho(nemes) -- as a word at present, as a subword morpheme later.
It is the province of speech and signal-processing technology
to transcend ASCII keyboard quasi-phonetic input into natural
speech recognition by upgrading the implementation of the
pho(neme) variable that not only stores auditory engrams
but outputs engrams from the auditory memory channel to the
Speech module, then via the reEntry process back again to the
Audition input module. It is important for programmers and AI
coders to note that the AI Mind never matches an entire string
simultaneously, but only one phoneme "pho" at a time.
It may be tempting to use the powerful string-matching techniques
of a given programming language, but to do so would defeat the goal
of modeling the AI after a natural, neuronal brain-mind that
breaks all knowledge and memory down atomically into smallest parts.
There is greater power in matching individual phonemes "pho" than in
matching an entire word as an unwieldy, cumbersome string of sounds.
The sounds remain in the self-perceiving auditory memory channel and
the Think module manipulates words without "de-channeling" them.

pos ( part-of-speech ) categories in the AI source code:
1=adj 2=adv 3=conj 4=interj 5=noun 6=prep 7=pron 8=verb.
Early versions of the Artificial Mind use only three-word sentences
for input and output, and therefore the only grammar categories being
used are number five (5) for nouns (and, temporarily, pronouns)
and number eight (8) for verbs -- all for the sake of simplicity
and for the "proof-of-concept" of the AI design. See also
http://www.ifi.unizh.ch/ailab/aiwiki/aiw.cgi/PartOfSpeech.

The part of speech of a word of input is determined by
rudimentary parsing in the Oldconcept or Newconcept
module and is recorded in the English enVocab module.
The primitive AI uses only two part-of-speech ("pos") grammar categories:
five ("5") for nouns and (temporarily) pronouns; and eight ("8") for verbs.
The reason why the enVocab module records the grammar category "pos"
of lexical items in the lexical array "en" (or "fr" for French or "de" for German)
is that the Noun-Phrase and Predicate modules need "pos"
as a criterion for flushing out the most active nouns (plus pronouns)
and verbs for inclusion in a sentence of thought. Noun-Phrase and
Predicate do not use "pos" explicitly, but hidden as a positional flag
in the English "En" array of nodes governing auditory memory engrams.

pov ( point-of-view ) is a marker in the audSTM (Short Term Memory)
as to whether a stored word came from the mind itself or from the outside world.
The AUDITION module sets the source "pov" as either a pound sign (ASCII 35 #)
for "internal" or as an asterisk (ASCII 42 *) for an external origin.
In the AI stream of consciousness, most thoughts will show an internal # sign
which looks anyway like the up-and-down concept fibers of the mindgrid
(as described in the Brain-Mind: Know Thyself! document)
with orthogonal associative tags flowing left and right to integrate the grid.
The asterisks for external (*) input already suggest by common usage that
something external to the stated item has a connection with the item,
as in fact the external agent making the input may be associated with the input.
In the OLDCONCEPT module, the "pov" flag
is used to route the "fex" or "fin" branching of association from a word being
stored in the auditory memory channel, so that the proper deep mindcore concept
will be tagged associatively to the word in auditory memory. With personal
pronouns such as "you" and "I" or "me", it is very important that the word
be associated with the proper concept of self (internal) or other (external).
Thus the "pov" flag may have a bearing on self-awareness and consciousness.

pre ( previous ) "pre" in Mind.Forth "psi" (but perhaps "prev" in Mind.VB)
is the "pre(vious)" concept -- if any -- with which a concept in a
sentence is associated, starting in OLDCONCEPT or NEWCONCEPT.
Verbs often have both "pre(v)" and sub"seq"uent -- a "pre(v)"
subject and a sub"seq"uent object. The primitive parsing
mechanism of the Mind program automatically assigns the "pre(v)"
number to whatever the just-past concept was in a three-word sentence.

The psi "pre" and psi subSEQuent tags are links to "psi" or "fib",
depending on which string of letters the programmer uses for the
variable holding the value of a numbered psi concept fiber.
The actual linking -- or transfer of activations -- takes place
in the Spreadact module (subroutine), where a concept passes
some of its activation backwards to any available "pre" concept
and some forwards to any available subSEQuent concept -- identified
by its "psi" fiber number.

prevg ( previous grammar category ) is used in AUDITION as a rather feeble
(nerdspeak "lame") mechanism to reset the equally primitive parsing system
of the AI as if the last, or "previous grammar" category encountered by
the parser was the third and final word in a three-word sentence of input.
If "prevg" continues to be overridden by the variable "par" in the NEWCONCEPT
and OLDCONCEPT modules, then the "prevg" variable will be obsolete.

psi ( from Greek letter "psi" ) is a multi-purpose tag.
The ultimate-tag variable "psi" is an integer number stored with
any phonemic word in the auditory memory array "Aud" and serving
to associate or link the "ultimate" phoneme of each stored word
over to the concept of the word in the lexical array "En(glish)"
and in the mindcore "Psi" array.

The "psi" concepts are like long neuronal fibers, with up to
ten thousand associative nodes along the length of fiber.
The Psi concepts are so deep that they are below language.
They are not words, but they may activate word-control fibers
in the "En(glish)" array and, thereafter, words in the "Aud" array.

When one runs Mind.Forth, one may finish a session by typing in:
.aud [RETURN] in order to see the ultimate, or final, tag "psi"
at the end of each word-engram.

The numeric tags are a way of simulating an associative nerve fiber.
The auditory ultimate-tag "psi" goes only inwards to the
"Psi" and "En" arrays, not vice-versa. The "En" array
uses the recall-vector "aud" to go in the other direction,
that is, from "En" to a word stored in "Aud". This fact
is because a word is recognized by its ultimate sound,
but a word in auditory memory is reactivated by means of
its onset location.

In the audRecog module, the numeric value of the ultimate psi-tag
of any recognized input-word is transferred to the same variable "psi"
so that the tag may be updated from an old engram of the word to
the newest, freshest engram in the stream of consciousness.

psi0 ( position zero in Psi flag-panel ) holds the actual
concept number of a concept in the mindcore Psi of the Robot AI Mind.

psibase ( basic psi ) in audRecog holds onto the psi concept number
of any candidate word found to have an associative activation higher
than the runner-up activation being held as an actbase test-value
from a competing candidate for auditory recognition of a word being
heard externally or remembered internally. As any candidate for
recognition takes first place over a runner-up with lower activation,
the psi number of the winning candidate goes into the psibase variable,
and the activation-value of the psibase candidate goes into the actbase
variable as the new test-value against which other candidates will be tested.
At the end of its sweep through the auditory memory channel, audRecog
reports that it has recognized the word whose psi-concept-number has not
been dislodged by other candidates and is still occupying the psibase variable.
The actbase serves to test activations and psibase is like the envelope,
please, which contains the name (concept-number) of the winning candidate.

psidata ( Psi mindcore data ) is a cumulative variable
that permits the JavaScript Troubleshoot module to display a column
of the flag-panels of the engrams in the Psi mindcore array.

quiet ( absence of auditory input ) is a status flag
that lets the JavaScript AI distinguish between "quiet" times when
it is safe to think, and "noisy" or "unquiet" times when a human
user is entering input into the Listen/Audition pair of modules.
In the event-driven JS AI, where any keypress by a human user
commands the immediate attention of the AI Mind, it is important
for the software to not call its own Think module during user
input but rather to deal with the completed thought of the human.
In Mind.Forth, there may be a role for the quiet flag to
distinguish between human mind entry and robot mind reentry,
but the same outcome may be obtained if human entry of input
goes into the Listen module, while robot reentry of AI output
bypasses the Listen module and goes directly into Audition.
Creative coders may try such status flags as attn, thrall, etc.

residuum ( residual activation ) in the psiDamp module
is the amount of activation left on a subverbal psi concept
after a word for the concept has briefly held the top spot
in conceptual activation for a thought being generated.
In the Moving Wave Algorithm, only one concept at a time
"rides the wave" of conceptual activation before being
psi-damped down to a subconscious level of activation.
Under the action of the psiDecay module, the residual
activation on a concept gradually decays down to zero,
but does not fall immediately to zero because the concept
may have an associative role to play in the current chain
of thought. The residuum variable plays an inportant role
in the rejection of verbs in verbPhrase with too low an
activation for a valid thought to be generated. If the AI Mind
has just learned a new noun as the object of a verb but not
as the subject of a verb, then the AI can not validly make
any statements with the new noun as a subject. The verbPhrase
module, trying to find a verb after thinking of the noun,
is designed to reject all verbs below a certain level of
insufficient activation and to abandon the incipient thought
in favor of a "detour" back up to a higher level of thought,
so that the Think module may detour into a new direction.
If the "residuum" variable in psiDamp is set too high,
some verbs not really valid for a given subject-noun may
fail to trigger the "detour" test and may cause the AI Mind
to generate false, invalid statements of subject nouns paired
with the wrong verbs. Therefore residuum is an important variable.

rjc ( rejuvenation counter ) in the Rejuvenate module
keeps track of how many times the Robot AI Mind has
recycled its memory space in order to live forever.
The variable "rjc" is not a serious part of the AI
algorithm and would actually cause problems for an
AI trying to achieve serious longevity, because the
value of "rjc" would eventually grow too large to hold.
Not the quantitative but the memetic value of "rjc"
is that it makes the AI more interesting to coders
who realize what is at stake if they code an AI Mind.

rsvp ( Respondez, S'il Vous Plait ) is a counting value used
in both Mind.Forth and the JavaScript AI for the specific purpose
of slowing the artificial mind down enough to wait patiently for
human user input and to keep the thoughts of the AI from racing
off into the future when a (relatively) slow human being is trying
to communicate with a Mind that is evolving into a superfast AI.
In Mind.Forth, the adjustable value of rsvp serves to quantify a
waiting period during which the Listen module listens for input.
In the JS AI, rsvp is the likewise adjustable wait in milliseconds
before the main aLife module calls itself again as a way of looping.
Because the JavaScript AI is always presenting an HTML Web page
to the human user, things such as FYI (q.v.) messages "settle down"
better if what would otherwise be looping in a more traditional AI
language proceeds as discrete page-display moments in the JS AI.
The value of rsvp is kept adjustable in the AI Mind implementations
so that the AI itself will have some leeway in determining how long
to wait for user input if the input has been lacking for many cycles.

seq ( subSEQuent ) "seq" in Mind.Forth "psi"
(but perhaps sub"seq"uent in Mind.VB) is the following or subsequent concept --
if any -- with which a concept in a sentence is associated, as found by parsing.

spike in Mind.Forth holds the value of activation passing
from one concept to another during spreading activation.

spt [ SPACE t(ime) as in ASCII "32" for SPACE-BAR ],
used in the audRecog comparator module and elsewhere, is constantly
being reset by various modules such as Security when there is no auditory
input coming in. The audRecog comparator uses spt as the starting
point for searches which go backwards in time towards the "midway" (q.v.)
point to find words in auditory memory which match, character-by-character
or phoneme-by-phoneme, a word of input coming into the mind through
the Listen/Audition modules. By the presence or absence of auditory
input, it is not hard to determine and constantly update the value of spt,
a demarcation-variable that lets the AI software distinguish words of input
from surrounding silence.

subj_act ( subject activation ) is used in the JavaScript AI
to hold the instantaneous value of the activation of any concept
chosen to be the subject of a verb, so that the AI coder
may inspect the mechanics of the spreading activation.

t ( time ) is incremented during Audition, where individual phonemes "pho"
must be stamped with a particular time "t" serving as a recall-vector "aud".
In early AI implementations it is remarkable that time "t" is not really a
system-wide internal clock of the AI but is peculiar to the Audition sense.
Some programmers may object to indexing various arrays on time "t",
and so they are free to work out (and please promulgate) a better solution.
Also please explain and thoroughly document what is replacing time "t".
Usenet news:comp.protocols.time.ntp covers the network time protocol.
Values of real time may be gotten from the World Time Server (q.v.).
An attempt has been made to have a cluster of time-variables such
as jrt, krt, and spt ending in "t" for easy identification as times.
Time acronyms such as "GMT" for "Greenwich Mean Time" and
the other worldwide time-zone identifiers should not be used
in any species of the Robot AI Mind, unless the AI coder
deliberately wants to identify a particular time zone.

tov ( time-of-voice for use with .echo ) is declared in the ENGLISH module
and is a marker for the time at which the AI Mind last began to say something,
so that the human user may see or hear what was said even if the words
went by in a scrolling blur on the screen of a modern super-fast computer.

trouble ( for troubleshooting ) is a flag in the JavaScript AI
to indicate that the program is in Troubleshoot mode.

tult ( time-ultimate ) in the AUDITION module is a time-point
just one moment before the currently blank time "spt" at which Audition
does its operation. Using "tult" is a way of avoiding the
backwards passage of time and of keeping the time variable "t" safe
as a global time variable that always moves only forward.
Since one purpose of AUDITION is to deal with the immediately
previous moment -- when human user input to the AI has just ceased --
the "tult" variable is a convenient way of keeping track of that
immediately previous moment.

tutor ( tutorial ) is a flag in the JavaScript AI
to indicate that the program is in Tutorial mode.

unk ( "unknown" ) is a general-purpose variable for anything unknown
before an operation proceeds in the AI Mind software. The variable "unk"
is used mainly in the AUDITION or LISTEN modules to hold momentarily whatever
the human user enters or the AI itself re-enters into the input sensorium.
The "unk" variable is also cavalierly used in other modules such as NOUN-PHRASE.
As long as AI coders zero out or blank out any value riding around on the "unk" horse,
they may cavalierly use "unk" over and over again for any purpose.

uract ( German "ur" for "old" ) preserves the old "act".

urpre ( German "ur" for "old" ) preserves the old "pre".

urpsi ( German "ur" for "old" ) preserves the old "psi".

userline ( line of user input ) is a holding variable that
carries the original contents of "inbuffer" from the CR
carriage-return module into the Transcribe module of the
JavaScript AI, for hardcopy print-outs of session transcripts.

vault ( for safekeeping memories ) holds the size of
the English enBoot bootstrap sequence as a number of
consecutive engrams, so that the Rejuvenate module may
avoid overwritng the bootstrap or losing track of its
concepts when an associative tag points into the "vault."
The use of "vault" is based on the idea that one variable
is easier to keep track of than the specific numeric values
that might otherwise have to be plugged into the code
at multiple points. Since "vault" is set automatically
at the end of enBoot, the AI coder does not have to worry
about what might be the best value to use for the "vault."

verb_act ( activation of verb ) is used in the JavaScript AI
to hold the instantaneous value of the activation of any concept
selected to be the verb in a sentence, so that the AI coder
may inspect the mechanics of the spreading activation.

zone ( time-zone ) -- is taken from the time Index "I" of searches
in the ACTIVATE module and is used in the SPREADACT module for the start
of a backwards search for any nearby "pre" node, and for the start
of a forwards search for any nearby "seq" node.



Last updated: 18 August 2008
Return to top; or to the
sitemap page.



SourceForge Logo