ConJoin Module of the

English and Russian bilingual AI in Perl

Mens Latina in Latin -- MindForth for robots

1. Diagram of ConJoin Mind-Module

   /^^^^^^^^^\ AGI responds to "What do you think" /^^^^^^^^^\
  /   EYE     \     | | |   _________________     /   EAR     \
 /             \    | | |  /    Volition     \   /  __________ \
|               |   | | |  \_________________/  |  / MindBoot \ |
|   _______     |   | | |          |            | /  start-up  \|
|  /image  \    |   | | |   _______V_________   | \ vocabulary /|
| / percept \---|-----+ |  /                 \  |  \__________/ |
| \ engram  /   |  a| | | (      EnThink      ) |               |
|  \_______/    |  b|c| |  \_________________/  |               |
|               |  s|o|f|     |       |    |    |               |
|   visual      |  t|n|i| ____V_____  |    |    |               |
|               |  r|c|b|(Indicative)-|----|----| "I think..."  |
|   memory      |  a|e|e| \________/  |    |    |               |
|               |  c|p|r|          ___V_   |    |               |
|   channel     |  t|t|s|         /     \  |    |               |
|               |   | | |        (ConJoin)-|----|-"that..."     |
|   _______     |   | | |         \_____/  |    |               |
|  /fresh  \    |   |_|_|            ______V_   |               |
| / image   \   |  /     \          /        \  | "God"         |
| \ engram  /---|--\ Psy /         (Indicative)-| "does not"    |
|  \_______/    |   \___/           \________/  | "play dice"   |

2. Purpose

The purpose of the ConJoin module is to join things together with a conjunction such as "and" or "if" or "or". Whereas the InFerence module engages in automated reasoning with logical inference, the ConJoin module directly expresses logical relationships and propositions such as, "If you learn to code AI, you may become an AI Mind Maintainer.

3. Algorithm of the ConJoin AI Mind-Module

3.A. Populating MindBoot with a full list of English conjunctions.

For thinking with conjunctions, each English conjunction should be readily available with a pre-assigned concept-number in the Psy conceptual array.

3.A.1. Maintaining flags in the conceptual flag-panel.

In a bilingual AI Mind like the AI, the maintainer should load the $mtx variable for a conjunction in one language with the concept-number of a counterpart conjunction in the other language, for the sake of machine translatioin (MT).

3.B. Coding special handling for each English conjunction.

3.B.1. AND

3.B.1.a. Joining two or more single words -- nouns, verbs, adjectives, etc.

3.B.1.b. Joining phrases such as a main clause and one or more subordinate clauses.

The PERL version of the first working artificial intelligence moves beyond the simplistic thinking of single subject-verb-object (SVO) thoughts and gives the AI the power to engage in thoughtful rumination with meandering, run-on sentences, the way in which human beings often think.

If more than one thought has been activated in the Perl AI, the ConJoin module joins two thoughts together with a typical conjunction such as "AND" or "BUT". Typically, the SpreadAct module has passed activation from a concept being discussed in the present time to instances of the same concept stored as a component of previous thoughts and ideas stored in the past experience of the AI Mind.

An $etc flag counts the number of ideas active at one time in the EnNounPhrase module. The English-thinking EnThink module resets the $etc flag to zero. If two or more ideas are active, the Indicative module runs more than once, with a conjunction like "AND" joining the output of the two active ideas.


In older, obsolete versions of the JavaScript and Forth AI Minds, the OldConcept module detected the input of questions introduced with "why" and set a flag for the ConJoin module to use the conjunction "because" to state a response to the why-query. Newer versions of each AI Mind have yet to reconstitute the mechanisms for using because-statements in response to why-queries. Since the why-query will typically introduce a subject-noun, the because-statement in response is a candidate for calling the EnPronoun (English pronoun) module to replace the subject of the query with a pronoun in the response, as in "Why do robots seek electricity? Robots seek electricity because they need energy." For an AI Mind to answer a why-query with a fitting because-statement involves a major test of the presence or absence of true artificial intelligence, because the first impulse of the AI software will be to dredge up from memory whatever ideas it has stored in association with the concepts contained in the why-query, such as "robots" and "electricity". As the mind-module for spreading activation becomes more and more sophisticated, the likelihood increases that the AI Mind will not only formulate a correct because-statement but will also know that the statement truly answers the why-query. It may then be possible to ask the AI a follow-up question such as "How do you know that robots seek electricity because they need energy?"

3.B.3. BUT


3.B.5. IF -- expressing logical propositions.

If we want to have logical conditionals in the AI Mind involving the conjunction "IF", we can use the truth-value $tru to distinguish between outcomes. For instance, consider the following.

Computer: If you speak Russian, I need you.
Human: I speak English. I do not speak Russian.
Computer: I do not need you.
In some designated mind-module, we can trap the word "IF" and use it to assign a high $tru value to an expected input.

Just as we operated several years ago to answer questions with "yes" or "no" by testing for an associative chain, we can test for the associative chain specified by "IF" and instead of "yes" or "no" we can assign a high $tru value to the pay-off statement following the "IF" clause. It is then easy to flush out any statement having a high truth-value, or even having the highest among a cluster or group of competing truth-values.

These ideas could even apply to negated ideas, such as, "We need you if you do NOT speak Russian."

Now, here is where it gets Singularity-like and ASI-like, as in "Artificial Super Intelligence." Whereas a typical human brain would not be able to handle a whole medley of positive and negative conditionals, an AI Mind using "IF" and $tru could probably handle dozens of conditionals concurrently, either all at once or in a sequence.

3.B.6. OR

3.B.7. THAT

The SpreadAct() module contains code for activating latent ideas in response to input-queries such as "What do you think?" and "What do you know?". The ConJoin module may detect the use of verbs like "think" and "know" which are typically followed with the conjunction "that" introducing a statement of thinking or knowing, such as "I think that..." or "I know that...."


3.B.9. WHILE

4. Code of ConJoin() from AI source code in Perl

sub ConJoin() {  #
  if ($etc > 1) { $conj = 306 }   # 2019-03-02: use conjunction 306=AND
  if ($whatcon == 1)  {  # 2018-09-12: if processing a what-query...
    if ($qv2psi==886) { $conj = 361; # 2018-12-10: 361=THAT  
    }  # 2018-09-30: end of test for 886=THINK
  }  # 2018-09-29: end of test for positive whatcon
  for (my $i=$t; $i>$midway; $i--) {  # 2018-09-12: search for $conj
    my @k=split(',',$psy[$i]);  # 2018-09-12: examine @psy array;
    if ($k[1] == $conj) {  # 2018-09-12: if conjunction is found...
      $audjuste = $k[14];  # 2018-09-12: conjunction recall-vector;
      $aud = $k[14];  # 2018-09-12: $conj recall-vector for Speech()
    }  # 2018-09-12: End of search for $conj conjunction;
  }  # 2018-09-12: End of search loop from $t back to $midway.
# Speech();  # 2018-09-12: speak the word starting at the $aud time. 
# Speech();  # 2019-01-20: speak the word starting at the $aud time. 
# if ($conj > 0) { Speech() }  # 2018-10-08: speak selected conjunction.
  if ($conj > 0) { Speech() }  # 2019-01-20: speak the word starting at the $aud time. 
  if ($conj == 361) { return }  # 2018-11-27: skip any other conjunction.
  $ictus = 0;  # 2017-11-29: arbitrary threshold selected by AI Mind Maintainer
  if ($qv1psi == 0)  {  # 2017-12-28: if no pre-selected subject...
    for (my $i=$t; $i>$midway; $i--) {  # 2017-11-29: search for $ictus
      my @k=split(',',$psy[$i]);  # 2017-11-29: examine @psy array;
      if ($k[3] > $ictus && $k[6]==5 && $k[13] > 0) {  # 2017-11-29: high-act noun?
        $qv1psi = $k[1];  # 2017-11-29: adopt noun as subject for sentence;
        $ictus = $k[3];   # 2017-11-29: replace lower $ictus with any higher $ictus.
      }  # 2017-11-29: End of search for a high $ictus activation-level.
    }  # 2017-11-29: End of search loop from $t back to $midway. 
  }  # 2017-12-28: end of test for a pre-selected subject $qv1psi
  if ($qv2psi==886 || $qv2psi==838 || $verbpsi==886 || $verbpsi==838) {  # 2018-12-10
    $conj = 361; # 2018-11-27: 361=THAT
  } else { # 2017-11-28: 
#   $conj = 302;  # 2018-10-08: prevent run-on sentence.
  }  # 2017-11-29: end of else-clause
 if ($whatcon == 0) {  # 2018-09-12: prevent duplicate conjunctions
  for (my $i=$t; $i>$midway; $i--) {  # 2017-11-28: search for $conj
    my @k=split(',',$psy[$i]);  # 2017-11-28: examine @psy array;
    if ($k[1] == $conj) {  # 2017-11-28: if conjunction is found...
      $audjuste = $k[14];  # 2017-11-28: conjunction recall-vector;
      $aud = $k[14];  # 2017-11-28: $conj recall-vector for Speech()
    }  # 2017-11-28: End of search for $conj conjunction;
  }  # 2017-11-28: End of search loop from $t back to $midway.
 }  # 2018-09-12: end of test to prevent multiple conjunctions.
  $ictus = 0;  # 2017-11-29: reset for safety.
}  # 2019-03-02: ConJoin() returns to EnThink() or EnVerbPhrase() module.

5. Variables for the ConJoin AI Mind-Module

$aud -- in the Speech() module is an associative tag leading to the typically most recent engram of a word stored in the @ear array of the auditory memory channel.

$audjuste -- EnNounPhrase() $motjuste $aud to Speech() module

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

$etc -- number of simultaneously active ideas for ConJoin() to separate with a conjunction.

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

$midway -- dynamically adjustable time-limit for searching backwards in the experiential memory of the AI.

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

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

$whatcon -- SpreadAct() flag for condition of answering a what-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 of ConJoin

8. Resources

Please see

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 AI Mind Maintainers. -- NOT SOLVED. -- solved.
Iskusstvenny Intellekt Programming Journal for Artificial Intelligence in Russian Language.
Converting ancient Latin AI into modern Russian AI -- 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.