LaThink Latin Thinking Module of the

Mens Latina Artificial Intelligence in Latin Language


1. Diagram of the LaThink() Latin-Thinking Mind-Module


   /^^^^^^^^\   LaThink Is For Thinking In Latin   /^^^^^^^^^\
  /   EYE    \              ____________          /   EAR     \
 /            \            /            \        /             \
|              |   | |    (  MainLoop    )      |mindboot words |
|   _______    |   | |     \____________/       |in the auditory|
|  /image  \   |   | |       |      \           |memory channel |
| / percept \--|-----+    ___V___    \________  | - - - - - - - |
| \ engram  /  |  a|c|f  /       \   /        \ |old Latin words|
|  \_______/   |  b|o|i (Sensorium) ( Volition )|used in thought|
|              |  s|n|b  \_______/   \________/ |and Latin words|
|   visual     |  t|c|e   _______    /          |newly learned  |
|              |  r|e|r  /       \  /  ______   |               |
|   memory     |  a|p|s / LaThink \/  /      \  |               |
|              |  c|t|  \_________/  / LaNoun-\ |               |
|   channel    |  t| |      |        \ Phrase /-|-(ego)         |
|              |   | |   ___V______  /\______/  |               |
|              |   | |  /          \/           |               |
|              |   | | ( Indicative )           |               |
|              |   | |  \__________/\  ______   |               |
|              |   | |               \/      \  |               |
|              |   | |               / LaVerb-\ |               |
|              |   | |               \ Phrase /-|--COGITO       |
|    ______    |   | |      _______   \______/  |               |
|   /      \   |   | |     /       \            |               |
|  / reentry\  |   | |    ( ConJoin )-----------|--ERGO         |
| /  of      \ |   |_|__   \_______/            |               |
| \remembered/ |  /     \                       | (ego)         |
|  \ image  /--|--\ Psy /                       |               |
|   \______/   |   \___/                        |  SUM          |



2. Purpose of the LaThink Latin Thinking Module

The LaThink Latin-thinking module, like the EnThink English-thinking module and 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 LaThink Latin Thinking AI Mind-Module

LaThink calls the various subordinate thinking modules such as Imperative for issuing a command or Indicative for making a statement or InFerence for automated reasoning with logical inference.


4. Code of LaThink() from Abra035A Mens Latina in JavaScript for MSIE


function LaThink() {  // cf. http://ai.neocities.org/EnThink.html
  catsubj = 0;  // 2019-02-12: reset for safety;
  catverb = 0;  // 2019-02-12: reset for safety.
  kbdba=0;kbnum=0;kbmfn=0; // 2019-05-14: must be reset after EACH SVO input.
  prep = 0; // 2019-04-26: in case "prep" was set by LaParser()
  QED1 = 0; // 2019-05-15: reset to prevent carry-over. 
  QED2 = 0; // 2019-05-15: reset to prevent carry-over.
  QED3 = 0; // 2019-05-15: reset to prevent carry-over.
  QED4 = 0; // 2019-05-15: reset to prevent carry-over.
  seq = 0;  // 2019-05-14: prevent carry-over into LaParser()
  tdo = 0;  // 2018-07-12: reset time-of-direct-object for safety. 
  tkb = 0;  // 2018-07-12: reset for safety. 
  tsj = 0;  // 2019-04-26: reset outside of input modules to prevent carry-over. 
  ux1=0;ux2=0;ux3=0;ux4=0;ux5=0; // 2019-05-12: must be reset after EACH SVO input.
  uy1=0;uy2=0;uy3=0;uy4=0;uy5=0; // 2019-05-12: must be reset after EACH SVO input.
  uz1=0;uz2=0;uz3=0;uz4=0;uz5=0; // 2019-05-12: must be reset after EACH SVO input.
  inert = (inert + 1);  // 2018-01-20: but AudListen() resets to zero;
  lurk = (lurk + 1);    // 2018-01-20: AudListen() resets to zero; 
  if (isolation > 60) {  // 2018-11-14: if no input for arbitrary duration...
    Imperative();  // 2018-09-21: Issue a request for input from a human user.
    impetus = 0;   // 2018-09-21: reset the trigger for calling Imperative().
    isolation = 0; // 2018-10-03: reset the trigger for calling Imperative().
    return;  // 2019-04-28: abandon LaThink(); give human user a chance to respond. 
  }  // 2018-09-21: end of test for trigger to call Imperative()
  if (qucon==1 || whatcon==1 || wherecon==1) SpreadAct();  // 2018-10-28: 
  apb = "LaThink() at time = "+t+"; rejuvenations = "+rjc+"; since dob "+dob; // 2019-04-28:
  Voice();  // 2018-01-20: speak the all-points-bulletin "apb"; 
  if (kbcon > 0) {  // 2018-01-28: if user answers yes-or-no question; 
    KbRetro();  // 2018-01-28: retroactively adjust knowledge base; 
    kbcon = 0;  // 2018-01-28: reset for safety; 
    kbzap = 0;  // 2018-01-28: reset for safety. 
  }  // 2018-01-28: User has had one chance to answer yes-or-no question.
  inft = t;  // 2018-01-25: 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-01-25: end of test for incoming be-verb.
  if (yncon == 1) {  // 2018-01-25: set in the InFerence() module
    tdo = 0;  // 2018-07-12: prevent carry-over. 
    AskUser();  // 2018-01-25: for yes-or-no query; 
    return;  // 2019-04-28: abandon the rest of LaThink()
  }  // 2018-01-25: end of test to trigger asking a question.
  abort = false;  // 2018-01-20: 
  document.all.cosmos.innerHTML = ""; // 2018-01-04: blank out lower screen.
  if (nucon > 0) {  // 2018-01-23: if a new noun is encounter in NewConcept()
    SpreadAct();  // 2018-01-23: to activate concepts for a question. 
    nucon = 0;    // 2018-01-23: reset for safety.
    pov = 2;      // 2018-01-23: give human user a "pause" for input...
    return;  // 2018-01-23: after question abandon rest of function.
  }  // 2018-01-23: end of test for the condition of input of a new concept.

  if (quiet == true || quiet == false) {  // 2018-06-11: temporary laissez-faire...
    pov = "1";  // 2018-01-20: internal point-of-view for thinking. 
    output = "";  // blank out the output of the previous thought;
    outputplus = "";  // blank out the display of the previous thought.
    t = (t + 1);  // 2018-10-14: skip one time-point before edge="{"
    audMemory[t].audExam();  // 2018-10-12: ReJuvenate test;
    audMemory[t] = new audNode("{",aud1,aud2); // 2018-10-12
    Indicative();  // 2018-01-20: think in the indicative mood. 
  } // 2018-01-20: // 2018-01-20: end of test for absence of user input.

  if (tcj > 0) {  // 2019-07-28: if flag-panel includes a positive tag...
//  alert("LaThink: tcj= "+tcj);  // 2019-07-28: TEST; REMOVE
    ConJoin();  // 2019-07-28: insert a conjunction;
    tcj = 0;  // 2019-07-28: reset for safety.
    Indicative();  // 2019-07-28: think in the indicative mood.
    return;   // 2019-07-28: abandon LaThink() to avoid calling Indicative() again.
  } // 2019-07-28: end of test for a positive time-of-conjunction "tcj".

  if (etc > 1) {  // 2019-02-18: if multiple thoughts are active...
    ConJoin();  // 2019-02-12: insert a conjunction;
    Indicative();  // 2019-02-12: think in the indicative mood.
  }  // 2019-02-12: join multiple thoughts together.
  if (rsvp > -1) {  // 2018-05-20: and if there is no input...
    rsvp = (rsvp - 100);  // 2018-05-20: decrement rsvp-wait in absence of input 
    if (rsvp < 0) rsvp = 0;  // 2018-05-20: disallow negative "rsvp".
  }  // 2018-05-20: end of test for lack of input as reason to speed up thinking. 
  for (i = 1; i<(rsvp+100); i++) {  // 2018-05-20: delay for user to respond to output
   if (i > 1) { apb = "Rejuvenationes = "+rjc+ "; tempus = "+t+"; isolatio = "+isolation; Voice() }
   document.all.mouth.innerHTML = outputplus;  // 2018-12-09: show output while waiting...
  }  // 2018-05-20: end of delay to give time for user input. 

  conj = 0;  // 2018-06-03: prevent carry-over. 
  etc = 0;   // 2019-02-18: reset the flag that triggers a conjunction.
  quiet = true;  // 2018-06-11: after AI responds to input, things quiet down.
  subjnom = 0;  // 2018-06-11: prevent carry-over. 
  tdo = 0; // 2019-05-05: prevent caerry-over within Latin LaParser()
  tsj = 0; // 2019-05-05: prevent caerry-over within Latin LaParser()
  tio = 0; // 2019-05-05: prevent caerry-over within Latin LaParser()
  tvb = 0; // 2019-05-05: prevent caerry-over within Latin LaParser()
} // 2019-04-19: LaThink() returns to the FreeWill Volition() module.  


5. Variables for the LaThink Latin Thinking Module

  • abort -- for orchestration of sentence-generation.

  • apb -- variable to hold a message.

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

  • impetus -- a level of curiosity and a trigger.

  • inert -- for quick asking of a cogpsi question.

  • inft -- inference-time for AskUser;.

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

  • kbdba (knowledge-base doing-business-as) -- for fetching flag-panel function-value from a recognized word.

  • kbmfn (knowledge-base masculine-feminine-neuter) -- for fetching flag-panel gender value from a recognized word.

  • kbnum (knowledge-base number) -- for fetching flag-panel number value from a recognized word.

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

  • lurk -- counter to activate initial thinking.

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

  • prep -- preposition identifier for LaPrep().

  • QED1 -- subject -- item #1 for retroactive tagging.

  • QED2 -- verb -- item #2 for retroactive tagging.

  • QED3 -- indir. obj. -- item #3 for retroactive tagging.

  • QED4 -- dir. obj. -- item #4 for retroactive tagging.

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

  • quiet -- a status variable set briefly to false upon user-input, so that the AI may output one thought responding to input and not following an internal chain of thought as conducted by the SpreadAct() module. As long as user input continues, the AI continues to think up responses. If user-input stops or even pauses, the AI returns to thinking its own thoughts.

  • rsvp -- delay in milliseconds before next loop.

  • seq -- subSEQuent Psy concept in an idea.

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

  • tcj -- conceptual flag-panel time-of-conjunction.

  • tdo -- time-of-direct-object for LaParser() module.

  • tkb -- time-in-knowledge-base of an idea.

  • tsj -- time-of-subject for parsing.

  • ux1 -- unknown upshot placeholder for Latin nominative case.

  • ux2 -- unknown upshot placeholder for Latin genitive case.

  • ux3 -- unknown upshot placeholder for Latin daative case.

  • ux4 -- unknown upshot placeholder for Latin accusative case.

  • ux5 -- unknown upshot placeholder for Latin ablative case.

  • uy1 -- unknown upshot placeholder for Latin nominative case.

  • uy2 -- unknown upshot placeholder for Latin genitive case.

  • uy3 -- unknown upshot placeholder for Latin daative case.

  • uy4 -- unknown upshot placeholder for Latin accusative case.

  • uy5 -- unknown upshot placeholder for Latin ablative case.

  • uz1 -- unknown upshot placeholder for Latin nominative case.

  • uz2 -- unknown upshot placeholder for Latin genitive case.

  • uz3 -- unknown upshot placeholder for Latin dative case.

  • uz4 -- unknown upshot placeholder for Latin accusative case.

  • uz5 -- unknown upshot placeholder for Latin ablaative case.

  • 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/Latin -- is a special weblog URL which invites Netizens to view blog-posts discussing the use of Latin for artificial intelligence.


    9. AiTree of Artificial Intelligence in Latin Language


    Return to top; or to
    http://old.reddit.com/r/Latin
    http://old.reddit.com/r/classics
    http://old.reddit.com/r/latina
    http://old.reddit.com/r/LatinLanguage
    http://old.reddit.com/r/LatinMemes
    http://old.reddit.com/r/Locutorium -- posts must be in Latin
    http://old.reddit.com/r/RoughRomanMemes
    http://en.wikipedia.org/wiki/Natural_language_understanding -- solved.
    http://old.reddit.com/r/ControlProblem -- NOT SOLVED.
    FAQ -- Frequenter Advenientes Quaestiones
    Mens Latina Programming Journal for Artificial Intelligence in Latin Language.
    Modus Operandi -- User Manual for Artificial Intelligence in Latin Language.
    Subject to change without notice.


    Website Counter