EnThink English-Thinking Module of the

English and Russian bilingual ghost.pl AI in Perl

Mens Latina in Latin -- MindForth for Robots


1. Diagram of EnThink English-thinking Mind-Module

  /^^^^^^^^^^^\EnThink is for Thinking in English /^^^^^^^^^^^\
 /   EYE       \            _________________    /    EAR      \
|               |CONCEPTS  /                 \  |  ___________  |
|   _______     |   | | | / Volition FreeWill \ | / MindBoot  \ |
|  / old   \    |   | | | \___________________/ || memory vault||
| / image   \!!!|!!!|!|!| __|____  |   _|____   ||             ||
| \ recog   /---|---|-|-+(Emotion) |  /      \  || "students"  ||
|  \_______/    |   |s| | \_____/  | (RuThink ) || "read"      ||
|               |   |t| |   _______V  \______/  || "books"     ||
|               |   |u| |  /        \           | \___________/ |
|               |   |d|b| ( EnThink  )          |               |
|   visual      |  r|e|o|  \________/\_______   | "John is a"   |
|               |  e|n|o|   |     |  /       \  | "student"     |
|   memory      |  a|t|k|   |     | (InFerence) |               |
|               |  d|s|s|   |     |  \_______/  | "John reads"  |
|   channel     |   | | |   |    _V__________   | "books"       |
|               |   | | |   |   / Imperative \  |               |
|               |   | | |   |   \____________/  |               |
|   _______     |   | | |  _V__________         |               |
|  /new    \    |   |_|_| ( Indicative )        |newest memories|
| / percept \   |  /     \ \__________/         |to be recycled |
| \ engram  /---|-(  Psy  )                     |automatically  |
|  \_______/    |  \_____/                      |by ReJuvenate()|


2. Purpose of the EnThink English Thinking Module

The EnThink English-thinking module, like the RuThink Russian-thinking module, carries out the wish of the Volition module to engage in thinking with natural language. An AI Mind taking advantage of Unicode mutatis mutandis may be built to think in any human language.


3. Algorithm of the EnThink English Thinking AI Mind-Module

EnThink calls the various subordinate thinking modules such as Imperative or Indicative or InFerence.


4. Code of EnThink() from ghost301.pl First Working AGI in Perl


sub EnThink() {      # http://ai.neocities.org/EnThink.html
  $catsubj = 0;  # 2019-01-28: reset for safety;
  $catverb = 0;  # 2019-01-28: reset for safety.
  if ($isolation > 256) {  # 2018-10-08: if AI not given input for too long...
    Imperative();  # 2018-09-19: Issue a request for input from a human user.
    $isolation=0;  # 2018-10-08: reset the trigger for calling Imperative().
    return;    # 2018-11-01: abandon EnThink(); give human user a chance to respond. 
  }  # 2018-11-01: end of test for trigger to call Imperative()
  if ($qucon==1 || $whatcon==1 || $wherecon==1) { SpreadAct() }  # 2018-11-01
# $wherecon = 0;     # 2018-11-04: reset for safety. 
  if ($nucon > 0) {  # 2017-11-29: if a new noun is encounter in NewConcept()
    SpreadAct();     # 2017-11-29: to activate concepts for a question. 
    $nucon = 0;      # 2017-11-29: reset for safety.
    $pov = 2;        # 2017-11-29: give human user a "pause" for input...
    $gapcon = 21;     # 2017-11-29: arbitrary pause for human input...
    return;    # 2017-11-29: after question abandon rest of function.
  }  # 2017-09-29: end of test.
  if ($kbcon > 0) {  # 2018-06-26: if user answers yes-or-no question; 
    KbRetro();   # 2018-06-26: retroactively adjust knowledge base; 
    $kbcon = 0;  # 2018-06-26: reset for safety; 
    $kbzap = 0;  # 2018-06-26: reset for safety.
    return;      # 2018-06-26: abandon remainder of current module.
  }  # 2018-06-26: User has had one chance to answer yes-or-no question.
  $inft = $t;    # 2018-06-26: in case inference-time not otherwise set; 
  if ($becon==1) {  # 2018-01-25: if user input includes 800=BE-verb...
    InFerence(); # 2018-01-25: make a silent inference; 
  }  # 2018-06-26: end of test for input of a be-verb.
  if ($yncon == 1) {  # 2018-06-26: set in the InFerence() module
    AskUser();  # 2018-06-26: for yes-or-no query; 
    return;  # 2018-06-26: abandon the rest of EnThink()
  }  # 2018-06-26: end of test to trigger asking a question.
  Indicative();    # 2017-11-29: default grammatical mood for thought. 
  if ($conj > 0) { Indicative() }  # 2019-01-20: concatenate ideas; TEST
  if ($dunnocon==1) { $dunnocon = 0; return }  # 2018-10-08: only one sentence.
# Subjunctive();   # 2017-11-29: possible future module for grammatical mood.
# Interrogative(); # 2017-11-29: possible future module for grammatical mood.
# ConJoin();       # 2018-09-12: Output one more idea with sufficient activation. 
# ConJoin();       # 2019-01-20: Call ConJoin() from elsewhere; TEST
  if ($etc > 1) {  # 2019-03-02: if multiple thoughts...
    ConJoin();     # 2019-01-20: insert a conjunction;
    Indicative();  # 2019-01-20: include a conjoined idea.
  }  # 2019-01-20: join multiple thoughts together.
  if ($whatcon==1 && $conj > 0) {  # 2018-09-12: for a conjoined idea...
    $whatcon = 0;  # 2018-09-12: reset to prevent run-on thoughts. 
    Indicative();  # 2018-09-12: think in the indicative mood.
    $conj = 0;     # 2018-10-08: prevent run-on sentences.
  }  # 2018-09-12: end of whatcon-test in favor of subordinate clause.
  PsiDecay();      # 2017-11-29: Reduce activation after each thought.
  $conj = 0;       # 2019-01-20: reset; TEST; REMOVE if necessary
  $etc = 0;        # 2019-03-02: reset the flag that triggers a conjunction.
  $ictus = 0;      # 2018-09-12: prevent build-up.
  $subjnom = 0;    # 2018-07-01: reset outside of InFerence() to prevent interference.
}  # 2019-03-02: EnThink() returns to Volition().


5. Variables for the EnThink English Thinking Module

$becon -- be-conditional -- carries a flag from the OldConcept() recognition module indicating that new input includes a verb of being which may permit the InFerence() module to make a general inference about the subject of the input so that the InFerence() module can look for prior knowledge as the basis of an inference.

$catsubj -- conCATenated (chained) SUBJect flag for syncopating sentences.

$catverb -- conCATenated (chained) verb flag for syncopating sentences.

$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 an AI Mind to respond to a who+verb+object query with "I DO NOT KNOW" if no correct answer is found.

$etc -- from the abbreviation "etc." from the Latin phrase et cetera, meaning "and other things" -- a counting variable that is incremented in the EnNounPhrase() module when more than one fetchable idea is active in conceptual memory. The $etc count is used in the EnThink() module as a trigger for calling the ConJoin() module to insert a conjunction like "and" between two ideas in the generation of a sentence of thought.

$gapcon -- status-con flag for AudInput() to count down gaps of no input, so that internal thinking may accelerate during periods of no input from external sources.

$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.

$isolation -- counter of thought-cycles spent in "isolation" with no human input, as an arbitrary trigger for output by the AI Mind, or as a threshold for the AI to take certain actions if input suddenly appears.

$kbcon -- knowledge-base-condition flag for KbRetro to wait for a yes-or-no answer.

$kbzap -- ZAP the knowledge base -- is a variable that holds the oldpsi word "YES" or "NO" when the InFerence() module has caused the AskUser() module to seek confirmation or denial of a silent inference from a human user engaged in a conceptual conversation with the AI Mind. KbRetro() uses the YES-value kbzap to confirm an inference, or the NO-value of kbzap to negate an inference.

$nucon -- new-condition – segregates SpreadAct() code to respond to the input of an unknown word by asking the user a question about the new concept being learned by the AI Mind.

$output -- output string as in JavaScript FirstWorkingAGI.html

$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.

$subjnom -- subject nominative – is a concept identified in the OldConcept() recognition module as the subject of an input causing the AI to make an inference.

$whatcon (what-condition) -- SpreadAct() flag for condition of answering a what-query

$wherecon (where-condition) -- flag for condition of answering a where-query.


6. Troubleshooting and Robotic Psychosurgery

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


7. Future Development


8. Resources


Please see

http://mind.sourceforge.net/think.html

http://cyborg.blogspot.com/search/label/EnThink -- is a special weblog URL which invites Netizens to view blog-posts discussing the EnThink mind-module.


9. AiTree of First Working AGI Mind-Modules


Return to top; or to
Tiananmen Square IV VI
javascript subreddit for AI Mind discussion;
Forth subreddit for MindForth discussion;
Perl subreddit for ghost.pl AI Mind Maintainers.
http://old.reddit.com/r/ControlProblem -- NOT SOLVED.
http://en.wikipedia.org/wiki/Natural_language_understanding -- solved.
Iskusstvenny Intellekt Programming Journal for Artificial Intelligence in Russian Language.
Converting ancient Latin AI into modern Russian AI
http://ai.neocities.org/Dushka.html -- tutorial Russian AI;
If you have any questions about the First Working AGI, please Join the Discussion.
Joint Artificial Intelligence Center (JAIC) -- the AI Manhattan Project.
Subject to change without notice.
Many thanks to NeoCities.
http://neocities.org/blog
http://trollheaven.blogspot.com