EnVerbPhrase module of the

English and Russian bilingual ghost.pl AI in Perl

Mens Latina in Latin -- MindForth for Robots


1. Cognitive architecture Diagram of the EnVerbPhrase English Verb-Phrase Mind-Module


   /^^^^^^^^^\             ________________        /^^^^^^^^^\
  /   EYE     \     | | | / EnThink module \      /   EAR     \
 /             \    | | | \________________/     /  _________  \
|               |   | | |  _____|________       |  /MindBoot \  |
|   _______     |   | | | (  Indicative  )      | / English   \ |
|  /image  \    |   | | |  \____________/       | \ bootstrap / |
| / percept \---|-----+ |       |    \          |  \"vault"  /  |
| \ engram  /   |  a| | |       |     \______   |   \_______/   |
|  \_______/    |  b|c| |       |     /      \  |               |
|               |  s|o|f|       |    / EnVerb-\ |auditory memory|
|   visual      |  t|n|i|       |    \Phrase  / |where ideas are|
|               |  r|c|b|       |    /\______/  |stored as words|
|   memory      |  a|e|e|       |   /     |     |after being    |
|               |  c|p|r|    ___V__/      |     |generated      |
|   channel     |  t|t|s|   /EnNoun-\     |     |internally or  |
|               |   | | |  ( Phrase  )    |     |perceived      |
|               |   | | |   \_______/     |     |externally     |
|               |   | | |       |         |     |   ________    |
|   _______     |   | | |  _____V____   __V__   |  /        \   |
|  /fresh  \    |   |_|_| ( English  ) / En  \  | /  "cats"  \  |
| / image   \   |  /     \ \ Nouns  / / Verbs \-|-\  "eat"   /  |
| \ engram  /---|--\ Psy /--\      /  \_______/ |  \ "fish" /   |
|  \_______/    |   \___/    \____/-------------|---\______/    |


2. Purpose of the AI4U Textbook EnVerbPhrase English Verb-Phrase Module

EnVerbPhrase either fetches a stored English verb from auditory memory or calls EnVerbGen to generate a required English verb-form.


3. Algorithm of the AI4U Textbook EnVerbPhrase English Verb-Phrase Module

  • 3.A.1. Fetching a verb to describe an action or a state of being.

  • 3.A.2. Calling EnVerbGen to generate a missing but required English verb-form.

  • 3.B. Inserting the adverb "NOT" to negate an English verb-form.

  • 3.B.1. Using EnAuxVerb and "NOT" to negate an ordinary English verb-form.

  • 3.B.2. Inserting "NOT" for the negation of an English "BE" verb.

  • 3.C. Inhibiting a just-thought verb to prevent it from dominating attention.

  • 3.D. Leaving out the repetitious verb from any additional phrase being joined together with a first phrase for a resulting compound sentence that may be replaced with a single one-phrase sentence containing one or more conjunctions.

    The user may tell the AI Mind two things:

  • John has a house
  • John has a car
  • The user may then ask the AI:
  • What does John have
  • The ghost292.pl AI was able to respond with the following output:

    THE JOHN HAS THE HOUSE AND THE JOHN HAS THE CAR I UNDERSTAND YOU

    Suppose that we want the AI Mind to join two sentences together:

    JOHN HAS A HOUSE
    and
    JOHN HAS A CAR


    By not repeating the subject, we get:
    JOHN HAS A HOUSE
    and
    JOHN HAS A CAR


    By not repeating the subject and the verb, we get:
    JOHN HAS A HOUSE
    and
    JOHN HAS A CAR

    The AI coding task for ghost294.pl in Perl was how to get the sentence-generation modules to skip repeating the subject and skip repeating the verb. Note that even a human being will sometimes dawdle or linger while uttering the compound-setences, as in:
    "John has a house...and a car...and a lawnmower...and a canoe, etc."

    It was necessary to use one of the "chain" or "conCATenation" variables:

    
    our $catiobj = 0;   # 2019-01-28: concat-indirect-object for ConJoin() "AND".
    our $catdobj = 0;   # 2019-01-28: concat-direct-object for ConJoin() "AND".
    our $catsubj = 0;   # 2019-01-28: concat-subject for ConJoin() "AND".
    our $catverb = 0;   # 2019-01-28: concat-verb for ConJoin() "AND".
    

    We load the $catsubj variable inside the query-response code in the SpreadAct module. After the first phrase in response to a query, such as "JOHN HAS A HOUSE", the AI may check each activated idea for starting with $catsubj and for having $catverb in the second place. In that way, the various direct-objects may be isolated, introduced with "AND" from ConJoin, and sent into the Speech module for the output of a meandering, run-on response such as "JOHN HAS A HOUSE AND A CAR AND A BOAT AND A SLED AND A MOTORCYCLE". Such an AI output is like human speech, where the person states the basic premise before even thinking of all the nouns about to be concatenated with "AND" into the meandering response.

    Once the chain-variables are loaded with the concept-numbers of the items to be omitted for the syncopation or shortening of a compound-sentence, each item is omitted simply by letting Indicative call EnNounPhrase or EnVerbPhrase but preemptively using conditionals to make each module "return" to Indicative before sending a noun or a verb into the Speech module. Special code in the EnVerbPhrase module must still call EnNounPhrase to provide the direct object of the omitted verb.

  • 3.E. Calling EnNounPhrase to supply the direct object of a transitive verb or the predicate nominative of an intransitive verb.


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

    
    sub EnVerbPhrase() {  # http://ai.neocities.org/EnVerbPhrase.html 
      $act = 0;  # 2016apr25: Start with zero to look for psi1 higher than $act.
      $aud = 0;  # 2018-06-28: prevent carry-over.
      $audjuste = 0;  # 2016feb17: prevent carry-over
      $motjuste = 0;  # 2016feb17: 
      my $negjux = 0;  # 2016jun17: flag for 250=NOT juxtaposed to a verb;
      $vphraud = 0;   # 2016apr10: initially
      if ($whatcon == 1 && $qv2psi > 0) {  # 2018-09-12: if WHAT...THINK or KNOW, etc.
        $motjuste = $qv2psi;  # 2018-09-12: encourage selection of ideation query-verb.
      }  # 2018-09-12: end of test for WHAT...IDEATION query.
      if ($verblock > 0 && $motjuste != 886) {  # 2018-12-10: positive verblock; not 886=THINK
        if ($whatcon > 0) {  # 2019-01-28: if SpreadAct() answers a what-query...
          if ($catverb==$motjuste && $conj > 0) {  # 2019-01-28: after use of a conjunction...
            if ($nounlock>0) { $dirobj = 1 }  # 2019-01-28: for sake of direct object.
            $etc = 0;  # 2019-03-02: TEST
            EnNounPhrase();  # 2019-01-28: after omitting verb, output direct-object.
            return;  # 2019-01-28: omit the verb after the use of a conjunction.
          }  # 2019-01-28: end of test for the chain-flag matching the selected verb.
        }  # 2019-01-28: end of test for SpreadAct() answering a what-query.
        my @k=split(',',$psy[$verblock]);  # 2016apr13: inspect t=verblock row;
        $verbpsi = $k[1];   # 2017jun08: lexical verbpsi;
        if ($k[11] > 0) { $seq = $k[11]; $tselp = $verblock }  # 2019-08-01: capture seq-tag.
        $svo2 = $k[1];      # 2017-06-08: item #2 of subj - verb - ind.obj - dir.obj
        if ($seq > 0 && $wherecon == 0) {  # 2018-11-04: if seq-tag is positive...
          for (my $i=$t; $i>$midway; $i--) {  # 2018-11-04: search backwards in time.
            my @k=split(',',$psy[$i]);  # 2018-11-04: inspect @psy flag-panel
            if ($k[1]==$seq && $k[6]==6) { # 2018-11-04: if engram matches $seq...
              $prep = $k[1];  # 2018-11-04: identify the preposition as such for EnPrep()
              last;  # 2018-11-04: one instance of identification is enough.
            }  # 2018-11-04: identify any preposition 
          }  # 2018-11-04: end of loop searching for "seq" to discover its "pos". 
          until ($eureka == $prep) {  # 2018-11-04: "Perl by Example" p. 193
            $tselp++;  # 2018-11-04: increment the not-yet-true $tselp variable 
            my @k=split(',',$psy[$tselp]);  # 2018-11-04: inspect @psy flag-panel
            $eureka = $k[1];  # 2018-11-04: change $k[1] to an initialized value. 
            if ($tselp > $cns) { last }  # 2018-11-04: escape from any runaway-loop. 
          }  # 2018-11-04: end of self-terminating loop
        }  # 2018-11-04: end of test for positive seq-tag.
        if ($k[5] == 250) { $negjux = 250; }  # 2018-07-06: TEST
        $prsn = $k[7];      # 2018-10-08: for sake of EnAuxVerb()
        $subjnum = $k[8];   # 2018-10-08: for sake of EnAuxVerb()
        $nounlock = $k[14]; # 2019-08-02 BUGFIX: $tkb becomes $nounlock.
    #   if ($k[19] > 0) { $tpr = $k[19] }  # 2019-08-06: trapping for time-of-preposition
        if ($k[19] > 0) { $tvpr = $k[19] }  # 2019-10-17: trap time-of-verb-preposition
        if ($k[20] > 0) { $audbase = $k[20] }  # 2019-08-01: EnVerbGen parameter;  
        if ($k[20] > 0) { $aud = $k[20] }      # 2019-08-01: auditory recall-vector
        if ($k[20] > 0) { $vphraud = $k[20] }  # 2019-08-01: auditory recall-vector
        if ($k[20]==0) {  # 2019-08-01: if there is no auditory recall-vector "rv"...
          for (my $i=$tpu; $i>$midway; $i--) {  # 2018-10-08: search backwards in time.
            my @k=split(',',$psy[$i]);  # 2018-10-08: inspect @psy flag-panel
            if ($k[1] == $verbpsi && $k[1] != 800 && $negjux != 250) {  # 2018-10-08:
              if ($qv2num > 0) { $subjnum = $qv2num }  # 2018-10-08: for query-response.
              if ($k[1]==$verbpsi && $k[8]==$snu && $k[7]==$prsn) {  # 2018-10-08: 
                if ($k[20] > 0 ) { $aud = $k[20] }  # 2019-08-01: find positive rv; 
                if ($k[20] > 0 ) { $vphraud = $k[20] }  # 2019-08-01: auditory recall-vector
                if ($k[20] > 0 ) { $motjuste = $k[1] }  # 2019-08-01: 
                if ($k[20] > 0 ) { last }  # 2019-08-01: exit loop if rv is found.
              } # 2018-10-08: end of test to find regular or irregular verb-form
            }  # 2018-10-08: end of search for non-infinitive verb-form.
          }  # 2018-10-08: end of loop searching for "rv" based on parameters.
        }  # 2018-10-08: end of test for no recall-vector rv as in InFerence()
        if ($subjpsi==701 || $subjpsi==731) { $prsn=1 } # 2016apr14: I or WE
        if ($svo1==701) { $prsn=1; $subjnum=1 } # 2017-06-07: I
        if ($subjpsi==707 || $subjpsi==737) { $prsn=2 } # 2016apr14: "YOU"
        if ($subjpsi==713 || $subjpsi==719) { $prsn=3 } # 2016apr14: HE; SHE
        if ($subjpsi==725 || $subjpsi==743) { $prsn=3 } # 2016apr14: IT THEY
        $dba = $prsn;  # 2016apr14:  parameter for VerbGen()
        for (my $i=$tpu; $i>$midway; $i--) {  # 2018-06-28: search the @psy array
          my @k=split(',',$psy[$i]);  # 2016apr14: inspect t=verblock row;
          if ($k[1] == $verbpsi && $k[1] == 800) {  # 2017jun08: special 800=BE-verb
            if ($k[6] == 8) {  # 2017jun08: select only $pos=8 verbs, even homonyms
            # Following code accepts only a verb-form matching three 
            # requirements: [ ]same concept; [ ]num(ber); and [ ]person:
              if ($qv2num > 0) { $subjnum = $qv2num }  # 2017-10-22: for query-response.
              if ($k[1]==$verbpsi && $k[8]==$subjnum && $k[7]==$prsn) {  # 2017-06-08
    #           if ($k[19] > 0) { $tpr = $k[19] }  # 2019-08-09: trap time-of-preposition
                if ($k[20] > 0) { $aud = $k[20] }      # 2019-08-01: find positive $rv; 
                if ($k[20] > 0) { $vphraud = $k[20] }  # 2019-08-01: find positive $rv; 
                if ($k[20] > 0) { last }  # 2019-08-01: exit loop once $rv is found.
              } # 2016apr14: end of test to find regular or irregular verb-form
            }  # 2016apr14: end of test for part-of-speech $pos == "8" (verb)
          }  # 2016apr14: end of test for correct verb-concept $verbpsi
        }  # 2016apr14: End of (for loop) searching for correct verb-form.
      }  # 2016apr13: end of test for a positive verblock.
      if ($vphraud > 0) { $aud = $vphraud }  # 2016apr14: correct form?
      if ($vphraud > 0) { $audjuste = $vphraud }  # 2016apr14: correct form?
      if ($verblock == 0)  {  # 2016apr13: prevent false negations;
        for (my $i=$t; $i>$midway; $i--) {  # 2016feb17: search backwards in time.
          my @k=split(',',$psy[$i]);  # 2016mar15: inspect @psy knowledge-nodes.
          if ($k[2] == 1) {  # 2018-09-27: select only English words
            if ($k[6] == 8) {  # 2017jun08: select only k6 $pos=8 verbs
              if ($whatcon==1 && $k[1] == $qv2psi) {  # 2018-09-12: query-verb found?
                $aud = $k[20];  # 2019-08-01: recall-vector "rv" for Speech()
                if ($qv2psi==823 && $taccon > 0) { $qv4psi = $taccon }  # 2019-11-02:
                last;  # 2018-09-12: peremptory retrieval of ideation-verb.
              }  # 2018-09-12: end of test for WHAT...IDEATION query.
              if ($k[3] > $act) {  # 2018-10-08: if k3 is higher than "act"...
                $tselv = $i;  # 2016apr13: retain time of winning verb;
                $motjuste = $k[1];  # 2017jun08: Select the most active verb.
                $svo2 = $k[1];      # 2017-06-08: for calling VisRecog()
                $audjuste = $k[20]; # 2019-08-01: recall-vector $rv for Speech()
                $act = $k[3];  # 2018-10-08: to test for a higher k[3]
              }  # 2016feb17: end of test of activation-level
            }  # 2016feb17: end of test for part-of-speech $pos == "8" verb
          }  # 2016feb17: end of test for human language code $hlc == "en"
        }  # 2016mar12: End of (for loop) searching for most active "motjuste"
      }  # 2016apr13: end of test for absence of a verblock from subject to verb 
      if ($negjux == 250) {  # 2016jun17: if verb is negated with 250=NOT;
        if ($svo2 != 800) {  # 2017may29: if other than an 800=BE verb; 
          $auxverb = 818;  # 2018-12-10: 818=DO as auxiliary verb; 
          EnAuxVerb();  # 2018-12-10: to say 818=DO or "DOES"; 
          $auxverb = 0;  # 2016jun17: reset for safety.
          for (my $i=$t; $i>$midway; $i--) {  # 2016jun17: search for 250=NOT
            my @k=split(',',$psy[$i]);  # 2016jun17: examine @psy array;
            if ($k[1] == 250) {  # 2017jun08: if 250=NOT is found;
              $audjuste = $k[20];  # 2019-08-01: "NOT" recall-vector;
              $aud = $k[20];  # 2019-08-01: "NOT" recall-vector for Speech()
              if ($k[20]>0) { $aud=$k[20]; last }  # 2019-08-01: insurance
            }  # 2016jun17: End of search for 250=NOT;
          }  # 2016jun17: End of search loop from $t back to $midway.
          Speech();  # 2016jun17: speak the word starting at the $aud time. 
          $aud = 0;  # 2018-06-28: reset for safety.
        }  # 2016jun17: end of test to prevent auxiliary with 800=BE verb.
      }  # 2016jun17: end of test for 250=NOT negjux.
      $motjuste = $verbpsi; # 2018-06-28: to search for verb-form.
      if ($vphraud != 0) { $aud = $vphraud }  # 2016apr10: Accept rv of 3 parameters.
      if ($subjpsi == 701) { $dba = 1; }  # 2016apr10: "I" 1st person sing.
      if ($subjpsi == 707) { $dba = 2; }  # 2016apr10: "you" 2nd person sing.
      if ($subjpsi == 713) { $dba = 3; }  # 2016apr10: "he" 3rd person sing;
      if ($subjpsi == 719) { $dba = 3; }  # 2016apr10: "she" 3rd person sing.
      if ($subjpsi == 725) { $dba = 3; }  # 2016apr10: "it" 3rd person sing.
      if ($subjpsi == 731) { $dba = 1; }  # 2016apr10: "we" 1st person plural
      if ($subjpsi == 737) { $dba = 2; }  # 2016apr10: "you" 2nd person plural
      if ($subjpsi == 743) { $dba = 3; }  # 2016apr10: "they" 3rd person plural
      if ($nphrnum == 0) { $nphrnum = $snu }  # 2018-10-09: restoration
      if ($vphraud == 0) {  # 2016apr10: if not substituted above;
        # 2018-10-09: Following code accepts only a verb-form matching three 
        # requirements: [ ]same concept; [ ]num(ber); and [ ]person:
        for (my $i=$tpu; $i>$midway; $i--) {  # 2018-06-28: skip current engrams.
          my @k=split(',',$psy[$i]);  # 2016apr10: inspect @psy lexical nodes
          if ($k[1] == $verbpsi && $k[20] > 0) { $audbase = $k[20] }  # 2019-08-01: 2nd best
          if ($k[1] == $verbpsi && $k[7]==0 && $k[20]>0) { $audbase = $k[20] } # 2019-08-01
          if ($negjux == 250) {  # 2018-12-24: if verb is subject to 250=NOT negation...
            $dba = 0;  # 2018-12-24: k7 "dba" must be zero for infinitive of verb;
            $snu = 0;  # 2018-12-24: subject-number must be zero for infinitive of verb;
          }  # 2018-12-24: end of test for 250=NOT negation of verb.
          if ($k[1] == $verbpsi && $k[7]==$dba && $k[8]==$snu) {  # 2018-12-24
            $vphraud = $k[20];  # 2019-08-01: VerbPhrase auditory engram tag
          }  # 2016apr10: end of test to find regular or irregular verb-form
        }  # 2016apr10: end of (for loop) searching through @psy conceptual array.
      }  # 2016apr10: end of test of $vphraud.
      if ($vphraud == 0) { EnVerbGen() }  # 2018-10-09: if no verb-form, generate it.
      if ($vphraud > 0) { $aud = $vphraud }  # 2016apr10: correct form?
      if ($gencon == 0) {  # 2018-10-09: if no call to EnVerbGen()...
        Speech();  # 2017may29: main call from EnVerbPhrase() to Speech()
        $aud = 0;  # 2016apr20: Reset to prevent carry-over. 
      }  # 2018-10-09: end of test to prevent speaking extra verb after EnVerbGen()
      my @k=split(',',$psy[$tselv]);  # 2016apr13: inspect verb at time of selection;
      $psy[$tselv]="$k[0],$k[1],$k[2],-16,$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-01: flag-panel.
      # 2019-09-27: Above line inserts inhibition upon currently selected English verb. 
      if ($tselp > 0 && $prep > 0 && $wherecon == 0) { SpreadAct() }  # 2018-11-04:
      if ($svo2 == 800) {  # 2017may29: if the selected verb is a be-verb
        if ($negjux == 250) {  # 2017may29: if there is a 250=NOT negation flag
          for (my $i=$t; $i>$midway; $i--) {  # 2017may29: search for 250=NOT
            my @k=split(',',$psy[$i]);  # 2017may29: examine @psy array;
            if ($k[1] == 250) {  # 2017jun08: if 250=NOT is found;
              $audjuste = $k[20];  # 2019-08-01: "NOT" recall-vector;
              $aud = $k[20];  # 2019-08-01: "NOT" recall-vector for Speech()
              if ($k[20]>0) { $aud=$k[20]; last }  # 2019-08-01: insurance
            }  # 2017may29: End of search for 250=NOT;
          }  # 2017may29: End of search loop from $t back to $midway.
          Speech();  # 2017may29: speak the word starting at the $aud time. 
          $negjux = 0;  # 2017may29: reset for safety. 
        }  # 2017may29: end of test for negated be-verb
      }  # 2017may29: end of test for 800=BE verb in case of negation.
      if ($nounlock>0) { $dirobj = 1 }  # 2018-10-08: for sake of intransitive verbs.
      if ($subjpsi == 701) {  # 2017-04-11: only for subject 701=I;
        if ($svo2 == 823) {     # 2019-11-03: only for verb 823=FEEL;
          if ($svo4 == 0) {  # 2019-11-03: if 823=FEEL has no direct object
            TacRecog();  # 2019-11-03: to supply a direct object for 823=FEEL
            if ($haptac != 755) { EnArticle() }  # 2019-11-04: insert "A" or "THE"
            for (my $i=$t; $i>$midway; $i--) {  # 2019-11-03: search backwards in time.
              my @k=split(',',$psy[$i]);  # 2019-11-03: inspect @psy flag-panel 
              if ($k[1]==$haptac) {  # 2019-11-03: if sensation reported by TacRecog()
                $aud = $k[20];  # 2019-11-03: find auditory recall-vector
                Speech();  # 2019-11-03: speak the name of the reported sensation.
                $hap = 0;     # 2019-11-04: reset after use.
                $haptac = 0;  # 2019-11-04: reset after use.
                last;  # 2019-11-03: one engram is enough.
              }  # 2019-11-03: end of test for $haptac as reported by TacRecog.
            }  # 2019-11-03: end of loop searching for object of 823=FEEL.
            return;  # 2019-11-04: abandon remainder of EnVerbPhrase()
          }  # 2019-11-03: end of test for direct object. 
        }  # 2019-11-03: end of test for "823=FEEL".
        if ($svo2 == 870) {     # 2018-12-10: only for verb 870=SEE;
          if ($svo4 == 0) {  # 2017-04-11: if SEE has no direct object
          # 2017-04-11: i.e., if there is no robot camera for computer vision...
            VisRecog();  # 2017-04-11: a challenge for robot AI coders
            $svo2 = 0;  # 2017-04-11: reset for safety.
            $svo4 = 0;  # 2017-04-11: reset for safety.
            return;      # 2017-04-11: abandon rest of VerbPhrase
          }  # 2017-04-30: end of test for direct object; 
        }  # 2018-12-10: end of test for "870=SEE";
      }  # 2017-04-11: end of test for ego-concept 701=I as subject. 
    # if ($dirobj==1 && $qv2psi != 886) {  # 2018-12-10: 886=THINK
      if ($dirobj==1 && $qv2psi != 886 && $dunnocon != 1) {  # 2018-11-10: 886=THINK
        EnNounPhrase();  # 2016mar10: for direct object or predicate nominative
      }  # 2018-09-30: end of test to skip direct-object in favor of ConJoin().
    # if ($tpr > 0) {  # 2019-08-06: if there is a positive time-of-preposition
      if ($tvpr > 0) {  # 2019-10-17: if there is a positive time-of-verb-preposition
        EnPrep();  # 2019-08-06: for a prepositional phrase
    #   $tpr = 0;  # 2019-08-09: reset for safety.
        $tvpr = 0;  # 2019-10-17: reset for safety.
      }  # 2019-08-06: end of test for a preposition linked to the verb.
      if ($whatcon == 0) {  # 2018-09-12: if no what-query being answered...
        if ($actpsi > 0) {  # 2018-06-27: if there is activation to spread...
          SpreadAct();  # 2018-06-27: for a chain of thought.
          $actpsi = 0;  # 2018-06-27: reset to zero for safety.
        }  # 2018-06-27: end of test for positive $actpsi.
      }  # 2018-09-12: end of whatcon-test to fetch conjunction instead of object.
      $dirobj = 0;  # 2016mar29: reset flag after thinking direct object. 
      if ($prepgen > 0) { EnPrep() }  # 2016mar30: if "Where?" call EnPrep(). 
      $audbase = 0;  # 2016apr25: reset for safety. 
      $gencon = 0;   # 2018-10-21: reset in case set by EnVerbGen()
      $num = 0;      # 2017-10-22: reset after output of one query-response.  
      $qv2num = 0;   # 2017-10-22: reset after output of one query-response. 
    }  # 2019-11-04: EnVerbPhrase() returns to Indicative() module
    


    5. Variables for the EnVerbPhrase module:

    $act -- quasi-neuronal activation-level

    $actpsi -- psi concept from which the SpreadAct module shall spread activation.

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

    $audbase -- is the start of the @ear auditory engram of a verb that needs to have its inflectional ending changed in a VerbGen() mind-module such as RuVerbGen(). $audbase is incremented by one successive unit as long as the target word in auditory memory continues, and each character of the target word from auditory memory is sent as the value of $abc into the AudBuffer() mind-module, which left-justifies the target word before sending it to be right-justified in the OutBuffer() mind-module prior to any manipulation of the inflectional ending of the target word.

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

    $auxverb (auxiliary verb) -- such as 800=BE; 818=DO; or modal verb.

    $catverb -- flag for holding the concept-number of the VERB among words conCATenated together into the first phrase of a potentially compound output sentence, so that one-by-one the words of a candidate second phrase may each be tested for a match with the counterpart word in the very first phrase, and thus, if a conjunction like "AND" from ConJoin is about to add the second phrase to the first phrase, the AI may omit the repetitious same verb from the second phrase, with the result that the AI syncopates or shortens the compound sentence into a single-subject and single-verb sentence such as, "JOHN HAS A HOUSE AND A CAR" instead of "JOHN HAS A HOUSE AND JOHN HAS A CAR".

    $cns -- (adjustable) size of "central nervous system" memory in the Ghost Perl AI

    $dba -- doing-business-as noun-case or verb-person.

    $dirobj -- flag that indicates seeking for a direct object.

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

    $eureka -- something "found" in the aud-recog modules.

    $gencon -- status-con flag set briefly to unitary one by EnVerbGen() as a condition-flag to prevent EnVerbPhrase() from making a call to Speech() after EnVerbGen() has already generated and spoken an inflected form of an English verb. The $gencon flag is reset to zero at the end of EnVerbPhrase() whether it has been used or not, so that EnVerbPhrase() will normally call the Speech() module to say a verb-form summoned from memory by the parameters of person and number.

    $hap -- is the "haptic" identifier of a unit of tactile sensation through which the Ghost AI may touch and feel something in the external world. In the early fleshing-out of the TacRecog mind-module, the value carried by the "hap" variable allows the AI Mind to feel pressure on the various keys in the numeric keypad of a computer. Whereas the AI "hears" but does not otherwise "feel" the character keystrokes of the English or Russian language, numeric keystrokes are actually felt as a contact made with the extrnal world impinging on the incipient consciousness of the Ghost in the Machine.

    $haptac -- is a variable which holds the value of the "hap" identifier from the TacRecog module so that the EnVerbPhrase() English-Verb-Phrase module may think and speak about what the Ghost is touching and feeling, such as the numeric key for "one" or "two" or "three" held as concepts in the knowledge base (KB) of the AI Mind.

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

    $motjuste -- (from French) best word for inclusion in a thought.

    $negjux -- a flag to indicate that a verb stored in memory has been negated by the nearby storing of a 250=NOT adverb. When EnVerbPhrase() selects a verb from conceptual memory and the verb is negated with "NOT", the numeric value of 250=NOT goes into the negjux variable as a flag to require the thinking of a negated English verb to include a call to the EnAuxVerb() module that will place a form of the auxiliary verb "DO" before the adverb "NOT" and the verb itself, as in "God does not play dice." During a verb-fetch in EnVerbPhrase(), negjux is given one chance to modify either a be-verb or a non-be-verb, and in either case is reset to zero after the one-chance opportunity.

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

    $num -- number-flag for grammatical number (singular or plural).

    $prep -- a preposition used in the EnPrep mind-module for English prepositions.

    $prsn -- 1st, 2nd, 3rd person of verb-forms.

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

    $seq -- subSEQuent @psy concept in an idea. As the AI Minds evolve, the associative seq tag may take on a new role as pointing from a noun or verb or adjective or adverb to an associated preposition.

    $snu -- subject-number as parameter for verb-selection.

    $subjnum -- (subject number) for agreement in grammatical number between a subject and a predicate nominative noun.

    $subjpsi -- subject-concept parameter to govern person of verb-forms.

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

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

    $tselp -- time of selection of preposition - is used in the EnPrep English-preposition module to make sure by calculation that a verb being sought as used with a preposition is in close temporal proximity to the preposition, so that a query may be answered correctly with a response that mentions the query-subject qv1psi and the query-verb qv2psi and the selected preposition at the beginning of a prepositional phrase.

    $tselv -- time of selection of verb (for neural inhibition)

    $tvpr -- time-of-verb-preposition – is used in the EnVerbPhrase module to convert a value stored as a "tpr" flag into specifically a "tvpr" flag so that the EnPrep English-preposition module may fetch and output not only a preposition related to the verb-phrase but also the object of the preposition. The "tvpr" flag is meant to identify a prepositional phrase that refers to a complete verb-phrase and not merely to a noun within the verb-phrase. For example, in the prepositional phrase at the end of "God does not play dice with the universe.", the preposition "with" is logically and semantically connected more to the verb-phrase "play dice" than to the noun "dice" all by itself.

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

    $verbpsi -- $psi concept-number of verb in the @psy array

    $vphraud -- holds aud-fetch of verb-form for Speech() module

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

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


    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

    EnVerbPhrase must be enhanced to deal with verb-tense, such as simple past; past perfect; future and future perfect.

  • Roadmap to Artificial Intelligence


    8. Resources for the AI4U Textbook EnVerbPhrase Module


    9. Spread the News on TikTok and Other Venues

    Are you on TikTok? Are you eager to be a ThoughtLeader and Influencer?
    Create a TikTok video in the following easy steps.

    I. Capture a screenshot of https://ai.neocities.org/EnVerbPhrase.html
    for the background of your viral TikTok video.

    II. In a corner of the screenshot show yourself talking about the EnVerbPhrase modulee.

    III. Upload the video to TikTok with a caption including all-important hash-tags which will force governments and corporations to evaluate your work because of FOMO -- Fear Of Missing Out:
    #AI #ИИ #brain #мозг #ArtificialIntelligence #ИскусственныйИнтеллект #consciousness #сознание #Dushka #Душка #psychology #психология #subconscious #подсознание
    #AGI #AiMind #Alexa #ChatAGI #chatbot #ChatGPT #cognition #cyborg #Eureka #evolution #FOMO #FreeWill #futurism #GOFAI #HAL #immortality #JAIC #JavaScript #linguistics #metempsychosis #Mentifex #mindmaker #mindgrid #ML #neuroscience #NLP #NLU #OpenAI #OpenCog #philosophy #robotics #Singularity #Siri #Skynet #StrongAI #transhumanism #Turing #TuringTest #volition

    A sample video is at
    https://www.tiktok.com/@sullenjoy/video/7212640375259876651


    10. AiTree of Mind-Modules for Natural Language Understanding


    Nota Bene: This webpage is subject to change without notice. Any Netizen may copy, host or monetize this webpage to earn a stream of income by means of an affiliate program where the links to Amazon or other booksellers have code embedded which generates a payment to the person whose link brings a paying customer to the website of the bookseller.

    This page was created by an independent scholar in artificial intelligence who created the following True AI Minds with sentience and with limited consciousness.

  • http://ai.neocities.org/mindforth.txt -- MindForth Robot AI in English.

  • http://ai.neocities.org/DeKi.txt -- Forth Robot AI in German.

  • http://ai.neocities.org/perlmind.txt -- ghost.pl Robot AI thinks in English and in Russian.

  • http://ai.neocities.org/Ghost.html -- JavaScript Robot AI Mind thinks in English.

  • http://ai.neocities.org/mens.html -- JavaScript Robot AI Mind thinks in Latin.

  • http://ai.neocities.org/Dushka.html -- JavaScript Robot AI Mind thinks in Russian.

    The following books describe the free, open-source True AI Minds.

    AI4U -- https://www.iuniverse.com/BookStore/BookDetails/137162-AI4U

    AI4U (paperback) -- http://www.amazon.com/dp/0595259227

    AI4U (hardbound) -- http://www.amazon.com/dp/0595654371

    The Art of the Meme (Kindle eBook) -- http://www.amazon.com/dp/B007ZI66FS

    Artificial Intelligence in Ancient Latin (paperback) -- https://www.amazon.com/dp/B08NRQ3HVW

    Artificial Intelligence in Ancient Latin (Kindle eBook) -- https://www.amazon.com/dp/B08NGMK3PN

  • https://redditfavorites.com/products/artificial-intelligence-in-ancient-latin

    Artificial Intelligence in German (Kindle eBook) -- http://www.amazon.com/dp/B00GX2B8F0

    InFerence at Amazon USA (Kindle eBook) -- http://www.amazon.com/dp/B00FKJY1WY

    563 Mentifex Autograph Postcards were mailed in 2022 primarily to autograph collector customers at used bookstores to press the issue of whether or not the Mentifex oeuvre and therefore the autograph is valuable. These artwork-postcards with collectible stamps may be bought and sold at various on-line venues.

  • https://www.ebay.com
  • https://galaxycon.com/search?q=Mentifex

    See AI 101 AI 102 AI 103 year-long community college course curriculum for AI in English.
    See Classics Course in Latin AI for Community Colleges or Universities.
    See College Course in Russian AI for Community Colleges or Universities.
    Collect one signed Mentifex Autograph Postcard from 563 in circulation.
    See Attn: Autograph Collectors about collecting Mentifex Autograph Postcards.

    Return to top; or to
    Image of AI4U found at a book store
    The collectible AI4U book belongs in every AI Library as an early main publication of Mentifex AI.


    Website Counter