EnThink English-Thinking Module of the

First Working Artificial General Intelligence

ghost.pl for webservers -- 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

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

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


4. Code of EnThink() from ghost294.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 ($hov > 1) { ConJoin() }  # 2019-01-20: join multiple thoughts together.
  if ($hov > 1) {  # 2019-01-20: 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
  $hov = 0;        # 2019-01-20: 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.
}  # 2018-06-26: EnThink() returns to Volition().


5. Variables

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

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

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

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


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
http://en.wikipedia.org/wiki/Natural_language_understanding -- solved.
http://old.reddit.com/r/ControlProblem -- NOT SOLVED.
javascript subreddit for AI Mind discussion;
Forth subreddit for MindForth discussion;
Perl subreddit for ghost.pl AI Mind Maintainers.
If you have any questions about the First Working AGI, please Join the Discussion.