Indicative module of the

English and Russian bilingual ghost.pl AI in Perl

Mens Latina in Latin -- MindForth for Robots


1. Diagram of the Indicative Mind-Module


   /^^^^^^^^^\             ________________        /^^^^^^^^^\
  /   EYE     \     | | | / EnThink module \      /   EAR     \
 /             \    | | | \________________/     /             \
|               |   | | |  _____|________       |               |
|   _______     |   | | | (  Indicative  )------|-------------\ |
|  /image  \    |   | | |  \____________/       |             | |
| / percept \---|-----+ |       |    \          |  auditory   | |
| \ engram  /   |  a| | |       |     \______   |  memory     | |
|  \_______/    |  b|c| |       |     /      \  |  channel    | |
|               |  s|o|f|       |    / EnVerb-\ |  where      | |
|   visual      |  t|n|i|       |    \Phrase  / |  thoughts   | |
|               |  r|c|b|       |    /\______/  |  enter      | |
|   memory      |  a|e|e|       |   /     |     |  and        | |
|               |  c|p|r|    ___V___      |     |  reenter    | |
|   channel     |  t|t|s|   /EnNoun-\     |     |  the        | |
|               |   | | |  ( Phrase  )    |     |  conscious  | |
|               |   | | |   \_______/     |     |  Mind       | |
|               |   | | |       |         |     |   ________  | |
|   _______     |   | | |  _____V____   __V__   |  /        \ | |
|  /fresh  \    |   |_|_| ( English  ) / En  \  | /  "cats"  \| |
| / image   \   |  /     \ \ Nouns  / / Verbs \-|-\  "eat"   /  |
| \ engram  /---|--\ Psi /--\      /  \_______/ |  \ "fish" /   |
|  \_______/    |   \___/    \____/-------------|---\______/    |


2. Purpose of the Indicative Mood Module

The Indicative sub-module serves to isolate the superior EnThink module from the inferior thought-generation modules, so that the output of a conjunction from the ConJoin module may engender the calling of more than one idea at a time, joined by one or more conjunctions.


3. Algorithm of the Indicative Mood Module

3.A. The basic algorithm of the Indicative mind-module is the calling of the EnNounPhrase and EnVerbPhrase modules to make a simple statement in the indicative mood.

3.B. The Indicative module includes code for the special case of suppressing the recall of low truth-value ideas when the AI Mind is trying to announce what it actually knows, or believes to be true, after the ConJoin module has inserted the conjunction "THAT" in advance of making a statement as an assertion of knowledge on the part of the AI.

3.C. An additional but merely provisional algorithm within Indicative is the setting of conceptual activation values so as to cause the AI artificially to state "I DO NOT KNOW" in response to an input query for which the AI does not know the answer to the query.


4. Code of Indicative() from ghost327.pl AI source code in Perl


sub Indicative() {  # http://ai.neocities.org/Indicative.html
  $moot = 0;     # 2017-09-18: start with no suppression of associative tags. 
  $pov = 1;      # 2016mar27: thinking occurs in self or "I" mode.
  $rv = 0;       # 2017-09-24: lest rv fail to be at zero for AudInput()
  $tdo = 0;      # 2017-09-20: reset time-of-direct-object for safety. 
  $tkb = 0;      # 2019-08-09: prevent a persisting value. 
  $tpr = 0;      # 2019-08-09: prevent a persisting value. 
  $qucon = 0;    # 2017-11-27: reset for safety. 
  $tsj = 0;      # 2019-10-19: let Indicative generation declare new time-of-subject.
  $tvb = 0;      # 2019-10-19: reset time-of-verb for safety before thinking.
  $verbcon = 0;  # 2017-09-20: reset for safety. 
  $verblock = 0; # 2019-08-09: reset for safety.
  if ($conj == 361) {  # 2018-11-27: 361=THAT
    for (my $i=$t; $i>$midway; $i--) {  # 2018-09-30: search all concepts...
      my @k=split(',',$psy[$i]);  # 2018-09-30: examine @psy array;
      if ($k[0] == 0) {  # 2018-09-30: if zero tru(th) value...
        $k[3] = ($k[3] - 90);  # 2018-09-30: suppress unbelieved ideas...
        $psy[$i]="$k[0],$k[1],$k[2],$k[3],$k[4],$k[5],$k[6],"
        . "$k[7],$k[8],$k[9],$k[10],$k[11],$k[12],$k[13],"
        . "$k[14],$k[15],$k[16],$k[17],$k[18],$k[19],$k[20]";  # 2019-08-02: panel
      }  # 2018-09-30: End of search for truth-values.
    }  # 2018-09-30: End of search loop from $t back to $midway.
  }  # 2018-11-27: end of test for 361=THAT introducing a thought.
  if ($dunnocon == 1) {  # 2018-09-30: 
    for (my $i=$vault; $i>0; $i--) {  # 2018-09-30: search KB vault.
      my @k=split(',',$psy[$i]);  # 2018-09-30: examine @psy array;
      if ($k[1]==701 && $k[12]==838) {  # 2018-12-10: if I...KNOW...
         $k[0] = 32;   # 2018-09-30: elevate activation of truth-value $tru
        $k[3] = 256;  # 2018-09-30: highly activate "I DO NOT KNOW"
        $k[5] = 250;  # 2018-09-30: make sure "KNOW" is negated.
        $psy[$i]="$k[0],$k[1],$k[2],$k[3],$k[4],$k[5],$k[6],"
        . "$k[7],$k[8],$k[9],$k[10],$k[11],$k[12],$k[13],"
        . "$k[14],$k[15],$k[16],$k[17],$k[18],$k[19],$k[20]";  # 2019-08-02
        last;  # 2018-09-30: skip rest of KB vault.
      }  # 2018-09-30: 
    }  # 2018-09-30: End of search loop from $vault down to $t=zero.
  }  # 2018-09-30: 
  EnNounPhrase(); # 2018-06-28: call the module to select an English subject.
  EnVerbPhrase(); # 2018-06-28: call the module to select an English verb. 
  if ($dunnocon == 1) {  # 2018-09-30: 
    for (my $i=$vault; $i>0; $i--) {  # 2018-09-30: search KB vault.
      my @k=split(',',$psy[$i]);  # 2018-09-30: examine @psy array;
      if ($k[1]==701 && $k[12]==838) {  # 2018-12-10: if I...KNOW...
        $k[0] = 0;   # 2018-09-30: remove activation of truth-value $tru
        $k[3] = 0;  # 2018-09-30: remove activation from  "I DO NOT KNOW"
        $psy[$i]="$k[0],$k[1],$k[2],$k[3],$k[4],$k[5],$k[6],"
        . "$k[7],$k[8],$k[9],$k[10],$k[11],$k[12],$k[13],"
        . "$k[14],$k[15],$k[16],$k[17],$k[18],$k[19],$k[20]";  # 2019-08-02: panel.
        last;  # 2018-09-30: skip rest of KB vault.
      }  # 2018-12-10: end of test for 701=I and 838=KNOW
    }  # 2018-09-30: End of search loop from $vault down to $t=zero.
#   $dunnocon = 0;  # 2018-09-30: zero out to prevent carry-over.
  }  # 2018-09-30: end of test for $dunnocon.
  if ($conj == 361) { $conj = 0 }  # 2018-11-27: use THAT only once.
  $hlc = 1;   # 2016feb17: Enable exclusion of non-English.
  $act = 0;      # 2019-01-22: prevent carry-over within compound sentences.
  $idea = " ";   # 2016apr09: reset for safety. 
  $nounlock = 0; # 2016apr13: reset for safety. 
  if ($chaincon > 2) { $chaincon = 0 }  # 2016apr15: arbitrary end of chain.
  $qucon = 0;    # 2017-09-17: reset to prevent unwarranted SpreadAct()
  $svo1 = 0;     # 2017-06-7: reset subject-verb-object values for safety.
  $qv1psi = 0;   # 2017-09-17: reset SpreadAct subject-psi for safety.
  $svo2 = 0;     # 2017-06-7: reset subject-verb-object values for safety.
  $qv2num = 0;   # 2017-10-22: reset after output of one query-response. 
# $qv2psi = 0;   # 2019-01-28: perhaps reset somewhere higher up
  $svo3 = 0;     # 2017-06-7: reset subject-verb-object values for safety.
  $svo4 = 0;     # 2017-06-7: reset subject-verb-object values for safety.
  $seqpsi = 0;   # 2017-09-17: reset for the sake of SpreadAct()
  $tpr = 0;      # 2019-10-20: prevent carry-over.
  $tru = 0;      # 2019-06-13: after any one-time transfer, reset to zero.
  $tsj = 0;      # 2019-10-19: reset time-of-subject for safety.
  $tvb = 0;      # 2019-10-10: reset time-of-verb for safety.
  $verblock = 0; # 2016apr13: reset for safety. 
  PsiDecay();    # 2016apr13: Reduce activation after each thought.
  $pov = 2;      # 2017-04-02: give human user a "pause" for input...
  $bias = 5;     # 2017-12-20: expect a noun, in case user inputs unknown word. 
}  # 2017-11-29: Indicative() returns to EnThink().


5. Variables for the Indicative Mood AI Mind-Module

$act -- quasi-neuronal activation-level

$bias -- EnParser(); NewConcept(): expected part-of-speech POS

$chaincon -- chain-of-thought condition-flag

$conj -- a dual-purpose variable serving both as an identifier of which particular conjunction is under consideration for use by the ConJoin module, and a control-flag for the decision of whether to call the Indicative module more than once.

$dunnocon -- is a flag used in SpreadAct() to permit the Mind-in-a-Box to respond to a who+verb+object query with "I DO NOT KNOW" if no correct answer is found.

$hlc -- human-language code; 1=en; 2=de; 3=ru. Subject to override by the $engov or $degov or $rugov flag.

$ictus -- testable activation-level to trigger use of a conjunction by the ConJoin() module in expressing a compound thought composed of two or more strongly activated ideas, each generated by a single calling of the Indicative() module.

$idea -- for re-entry of AI thought back into the AI.

$moot -- – as in legally moot – is a flag to prevent the formation of associative tags during mental operations which are not truly a part of cognition, such as the processing of an input query, the formation of a silent inference, or the creation of an output query.

$nounlock -- time-point in conceptual memory for a verb to lock onto a seq-noun.

$pov -- point-of-view: 1=self; 2=dual; 3=alien. When pov=1, the word "you" is somebody in the external word. When pov=2, the word "you" refers to the self-concept "I" in the AI. When pov=3, the word "you" is interpreted as part of a conversation by a third-party or as a word in a text, not referring to the self-concept of either the AI or of someone talking to the AI.

$qucon -- query-condition – segregates SpreadAct() code to respond to the input of who-queries.

$qv1psi -- concept for SpreadAct to seek as a subject, so that the AI will try to remember knowledge about the concept.

$qv2num -- num(ber) of a verb in a who+verb+dir.obj response.

$qv2psi -- concept for SpreadAct to seek as a verb, so that the AI may remember ideas containing the same verb.

$rv -- recall-vector for auditory memory. The time-point value of rv is first set in the AudInput module after an intervening space when the first character of an input-word is being passed into the AudMem module. The recall-vector rv is reset to zero in AudInput after a call to OldConcept or to NewConcept.

$seqpsi -- concept to which activation should be spread in the SpreadAct module for spreading conceptual activation.

$svo1 -- subject -- item #1 in subject-verb-object

$svo2 -- verb -- item #2 in subject-verb-object

$svo3 -- indirect object -- item #3 in subject-verb-object, when item #4 is a direct object.

$svo4 -- direct object -- item #4 in subject-verb-object

$tdo -- time-of-direct-object for a parser module.

$tpr -- time-of-preposition for parsing.

$verbcon -- verb-condition for seeking (in)direct objects. $verbcon is set to a positive unitary one in the EnParser module when a verb comes in during input and remains at one while any indirect or direct object comes in. After an input sentence, $verbcon is reset to zero.

$verblock -- for subject-noun to lock onto seq-verb. The $verblock is a time-point in conceptual @psy memory where the $seq of a subject-noun is located, so that any crucial consideration such as the negation of a verb will be found when the verb-phrase module fetches the verb-concept from memory. If the thinking process finds and activates a particular subject-noun in memory, the $tkb of the subject noun becomes the $verblock so that a particular verb at a particular time will be selected by the English or Russian verb-phrase module.


6. Troubleshooting and Debugging for AI Mind Maintainers

6.1.a. Symptom: (Something goes wrong.)
6.1.b. Solution: (AI Mind Maintainer devises solution.)


7. Future Development

Roadmap to Artificial Intelligence


8. Resources


9. AiTree of Mind-Modules for Natural Language Understanding

See AI 101 AI 102 AI 103 year-long community college AI course curriculum.


Paperback book on AI in ancient Latin

Artificial Intelligence in Ancient Latin -- is available from Amazon in various countries:
Australia - Canada - France - Germany - Italy - Japan - Netherlands - Singapore - Spain - United Kingdom - United States.
Ada's Technical Books
425 15th Avenue East
Seattle, WA 98122
USA Tel. 206-322-1058


Website Counter