Mentifex AI Minds are a true concept-based artificial general intelligence, simple at first and lacking robot embodiment, but expandable all the way to human-level intelligence and beyond. Privacy policy: Third parties advertising here may place and read cookies on your browser; and may use web beacons to collect information as a result of ads displayed here.

Friday, November 30, 2018


At about 1:11 p.m. today on 2018-11-30 we got the following idea.

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.

Sunday, November 25, 2018


The AI Mind wants to talk with you and about you.

In the annals of mind-design, we have reached a point where we must drive a wedge between the ego-concept of the MindForth AI and you who co-exist on Earth with the emergent machine intelligence. It is for simple and mundane reasons that we induce AI schizophrenia. Bear with us, please. In the first working artificial intelligence coded in Forth, in Perl and in JavaScript, the SpreadAct module lets quasi-neuronal activation spread from idea to idea. When the EnVerbPhrase module calls for a direct object to end an emerging thought, SpreadAct does not directly retrieve a related idea, but simply activates the subject of any number of related ideas. Then the AI Mind thinks the activated thoughts. In the MindBoot sequence, each AI Mind has some built-in ideas about robots. Therefore the AI will eventually think a thought first about itself, then about robots by roundabout association, and finally about whatever knowledge you impart to it about robots, such as "Robots need a brain." But how can we get the AI to think about you personally and about the details you provide about yourself to the AI? We must drive a quasi-neuronal wedge between the self-absorption of the Forthmind and its knowledge of some other, potentially nearby entity, namely you.

To do so, we must implant in the MindBoot sequence at least one idea as a point of departure for the AI to pay attention to you. But you might not even be there in the same room or on the same orbiting spaceship with the AI, so we can not embed the idea "I SEE YOU" or the idea "I SENSE YOU". We need some really neutral idea that will animadvert the AI to your purported existence. Without that embedded idea, the AI might passively let you describe your whole life-story and then the AI might have no mental pathway for the spread of activation between its thoughts about itself and its knowledge about you. So let us embed in the MindBoot module the idea "I UNDERSTAND YOU". Such an idea is both self-knowledge and knowledge of other -- another person, either present or far away.

So in the MindBoot sequence we embed the idea "I UNDERSTAND YOU" and we do some debugging. Then we have the following exchange with the AI Mind.

Human: i am outside the computer

The EnVerbPhrase module loads the actpsi variable with the concept of "you" and calls the SpreadAct module to transfer activation to the concept of "you" as the subject of knowledge in the knowledge base (KB). Since you have just told the AI that you are outside the computer, the AI retrieves that knowledge and says "YOU ARE OUTSIDE A COMPUTER", using the indefinite article "A" under the direction of the EnArticle module. Because another idea about you is still active, the AI says "YOU ARE A MAGIC" -- an old idea embedded long ago in the MindBoot sequence.

We are eager to have the AI Mind think about the differences between itself and other persons so that arguably the first working artificial intelligence may become aware of itself as a thinking entity separate from other persons. An AI with self-awareness is on its way to artificial consciousness.

Thursday, November 08, 2018


Natural language understanding in first working artificial intelligence.

The AI Mind is struggling to express itself. We are trying to give it the tools of NLU, but it easily gets confused. It has difficulty distinguishing between itself and its creator -- your humble AI Mind maintainer.

We recently gave the AI the ability to think with English prepositions using ideas already present or innate in the knowledge bank (KB) of the MindBoot sequence. We must now solidify prepositional thinking by making sure that a prepositional input idea is retrievable when the AI is thinking thoughts about what it knows. In order for the AI to be able to think with a remembered prepositional idea, the input of a preposition and its object must cause the setting and storage of a $tkb-tag that links the preposition in conceptual memory to its object in conceptual memory. The preposition must also become a $seq-tag to any verb that is the $pre of the preposition. When InStantiate() is dealing with a preposition input after a verb, the $tvb time-of-verb tag is available for "splitting" open the verb-engram in conceptual memory and inserting the concept-number of the preposition as the $seq of the verb. Let us try it.

We inserted the code for making the input preposition become the $seq of the verb and then we tested by launching the AI with the first input being "you speak with god". Then we obtained the following outputs.

It took so long for the input idea to come back out again because inputs go into immediate inhibition, lest they take over the consciousness of the AI in an endless repetition of the same idea.

As we code the AI Mind and conduct a conversation with it, we feel as if we are living out the plot of a science fiction movie. The AI does unexpected things, or it seems to be taking on a personality. We are coding the mechanisms of natural language understanding without worrying about the grounding problem -- the connection of the English words to what they mean out in the physical world. We count on someone somewhere installing the AI Mind in a robot to ground the English concepts with sensory knowledge.

Sunday, November 04, 2018


First working artificial intelligence thinks with prepositional phrases.

The immanence of the first working artificial intelligence is undergoing minor changes as the AI Mind becomes able to think with English prepositional phrases. At first the AI was able to use a preposition only to answer a where-question such as "where are you" and the Ai would respond "I AM IN THE COMPUTER". Now we need to implement a general ability of the AI to think with prepositional phrases loosely tied to nouns or verbs or adjectives or adverbs. The quasi-neuronal associative $seq tag may soon be re-purposed to lead not only from, say, nouns to verbs but also from nouns to prepositions. However a preposition is arrived at, it is time to implement the activation and retrieval of a whole prepositional phrase whenever the preposition itself is activated.

We begin experimenting by going into the MindBoot sequence and entering a $seq tag of "638=IN" for the verb "800=AM" in the knowledge-base sentence "I AM IN THE COMPUTER". The plan is to insert into EnVerbPhrase() some code to pass activation to the "638=IN" preposition when the AI thinks the innate idea "I AM IN...." So we insert some active code to capture the $seq tag and some diagnostic code to let us know what is happening. Ooh, mind-design is emotionally fun and intellectually exciting! The first thing captured is not a preposition but the "537=PERSON" noun when the AI is thinking, "I AM A PERSON". Next our fishing expedition lands a "638=IN" preposition when the AI issues the output "I AM" while trying to say "I AM IN THE COMPUTER".

Once the $seq tag has been captured, the AI software needs to determine if the captured item is a preposition. A search is in order. We search backwards in time for an @Psy concept-number matching the $seq tag and if we find a match we check its $pos tag for a "6=prep" match, upon which we assign the concept-number to the $prep variable in case we decide to send the designated preposition into the EnPrep() module for inclusion in thinking.

We go back into the code for assigning the $seq tag and in the same line of code we set the $tselp variable falsely and temporarily equal to the $verblock time, so that we may increment the $tselp variable until it becomes true. We insert some code that increments the phony $tselp time by unitary one and uses it to "split" each succeeding conceptual @Psy array row into its fourteen constituent elements, including "$k[1]" which we check for a match with the designated $prep variable. We make several copies of the search-snippet, and it easily finds the $prep engram within just a few time-points of the verb-engram, but now we need to convert the series of search-snippets into a self-terminating loop that will terminate, Arnold, upon finding the prepositional engram in memory. But we have forgotten how to code such a loop in Strawberry Perl Five, so we go into another room of the Mentifex AI Lab and we fetch the books Perl by Example (Quigley) and PERL Black Book (Holzner) to seek some help. We find some sample code for an until loop on page 193 of Quigley. We do not initialize the scalar $tselp at zero, because we are searching for an English preposition quite near to the already-known time-point. For the sake of safety, we insert a line of "last" escape-code in the event that the incrementing $tselp value exceeds the $cns value. The resulting until loop works just fine and it locates the nearby English preposition for us.

Next we insert a warranted call to SpreadAct() into the EnVerbPhrase() module just after the point where Speech() has been called to speak the verb. We wish to set up a routine for spreading activation throughout a prepositional phrase not only after a verb but also after a noun or an adjective (e.g. "young at heart" or an adverb (e.g. "ostensibly at random"). In SpreadAct() we send the $aud tag associated with the located preposition directly into Speech() and the AI starts saying not just "I AM" but "I AM IN". We need to insert more code for finishing the prepositional phrase. By the way, these improvements or mental enhancements are perhaps making the AI Mind capable of much more sophisticated thinking than heretofore. The AI is using words without really knowing what the words mean in terms of sensory perception -- for which robot embodiment is necessary -- but the AI may nevertheless develop self-awareness on top of its innate concept of self or ego. Knowing how to use prepositions, the AI may become curious and ask the human users for all sorts of exploratory information.

Now in SpreadAct() we throw in a call to EnArticle(), even though we have not yet coded in the elocution of the object of the preposition. The AI says "I AM IN A" without stating the object of the preposition. Let us create a new $tselo variable for time of selection of object so that we may use SpreadAct() to zero in on the object and send it into the Speech()module. Finally the AI Mind says "I AM IN A COMPUTER".

Sunday, October 28, 2018


AI Mind uses EnPrep() to think with English prepositions.

In the JavaScript AI Mind we have a general goal right now of enabling the first working artificial intelligence to talk about itself, to learn about itself, and to achieve self-awareness as a form of artificial consciousness. Two days ago we began by asking the AI such questions as "who am i" and "who are you", and the AI gave intelligent answers, but the asking of "where are you" crashed the program and yielded a message of "Error on page" from JavaScript. It turns out that we had coded in the ability to deal with "where" as a question by calling the EnPrep English-preposition module, but we had created not even a stub of EnPrep. The AI software failed in its attempt to call EnPrep and the program halted. So we coded in a stub of EnPrep and now we must flesh out the stub with the mental machinery of letting flows of quasi-neuronal association converge upon the EnPrep module to activate and fetch a prepositional phrase like "in the computer" to answer questions like "where are you".

Our first and simplest impulse is to code in a search-loop that will find the currently most active preposition. Let us now write that code, just to start things happening. Now we have written the loop that searches for prepositions, but not for the most active one, because there are other factors to consider.

What we are really looking for, in response to "where are you" as a question, is a triple combination of the query-subject qv1psi and the query-verb qv2psi and a preposition tied with an associative pre-tag to the same verb and the same subject. We can not simply look for a subject and a verb linking forward to a preposition like in the phrase "to a preposition" or "in the computer", because our software currently links a verb only to its subject and to its indirect and direct objects, not to prepositions. Such an arrangement does not appear defective, because we can make the memory engram of the preposition itself do the work of making the preposition available for the generation or retrieval of a thought involving the preposition. We only need to make sure that our software will record any available pre-item so that a prepositional phrase in conceptual memory may be found again in the future. In a phrase like "the man in the street", for instance, the preposition "in" does not link backwards to a verb but rather to a noun. In this case, any verb involved is irrelevant. However, when we start out a sentence with "in this case", we have an unprecedented preposition, unless perhaps we assume that the prepositional phrase is associated with the general idea of the main verb of the sentence. For now, we may safely work with prepositions following a verb of being or of doing, so that we may ask the AI Mind questions like "where are you" or "where do you obtain ideas".

Practical problems arise immediately. In our backwards search through the lifelong experiential memory, it is easy to insist upon finding any preposition of location linked to a particular verb engrammed as the pre of the preposition. We may then need to do a secondary search that will link a found combination of verb-and-preposition with a particular qv1psi query-subject. The problem is, how to do both searches almost or completely simultaneously.

Since we are dealing with English subject-verb-object word order, we could let EnPrep() find the verb+preposition combination but not announce it until a subject-noun is found that has a tkb value the same as the search-index "i" that is the time of the query-verb. It might also help that the found subject must be in the dba=1 nominative case and must have the query-verb as a seq value, but the tkb alone may do the trick.

We coded in a test for any preposition with a quverb pre-tag, and we got the AI to alert us to the memory-time-point of "IN THE COMPUTER". Now we are assembling a second test in the same EnPrep() search-loop to find the qv2psi query-verb in close temporal proximity to the preposition.

We are using a new tselp variable for "time of selection of preposition", so we briefly shift our attention to describing the new variable in the Table of Variables. Now that we have found the verb preceding the preposition, next we need to implement the activation of the stored memory containing the preposition so that the AI Mind may use the stored memory to respond to "where are you" as a query. We may need to code a third if-clause into the EnPrep() backwards search to find and activate the qv1psi query-subject that is stored in collocation or close proximity to the query-verb and the selected preposition.

Now we have a problem. Since we let EnPrep() be called by the EnVerbPhrase() module, EnPrep() will not be called until a response is already being generated. We need to make sure that the incipient response accommodates EnPrep() by being the lead-up to a prepositional phrase. Perhaps we should not try to use verblock to steer a response that is already underway, but rather we should count on activation of concepts to guide the response.

Now let us try to use SpreadAct() to govern the response. After much coding, we got the AI to respond

but there must somewhere be a duplicate call to EnPrep(). We eliminate the call from the Indicative() mind-module and then we get both an unwanted response and a wanted response.
Obviously the AI is not responding immediately to our "where are you" query but is instead joining an unrelated idea with the prepositional phrase. Upshot: By having SpreadAct() impose a heftier activation on the qv1psi subject of the where-are-you query, we got the AI to not speak the unrelated idea and to respond simply "I AM IN A COMPUTER". Now we need to tidy up the code and decide where to reset the variables.

Sunday, October 21, 2018


First working AI uses OutBuffer to inflect English verbs.

We have been cycling through the coding of the AI Mind in Perl, in JavaScript and in Forth. Now we are back in Perl again, and we need to implement some improvements to the EnVerbGen() module that we made in the other AI programming languages.

First of all, since the English verb generation module EnVerbGen() is mainly for adding an "S" or an "ES" to a third person singular English verb like "read" or "teach", we should start using $prsn instead of $dba in the EnVerbGen() source code. Our temporary diagnostic code shows that both variables show the same value, so we may easily swap one for the other. We make the swap, and the first working artificial intelligence still functions properly.

Now it is time to insert some extra code for verbs like "teach" or "wash", which require adding an "-ES" in the third person singular. Since we wrote the code during our cycle through JavaScript, we need only to port the same code into Perl. EnVerbGen() now uses the last few positions in the OutBuffer() module to detect English verbs like "pass" or "tax" or "fizz" or "putz" that require "-ES" as an ending.

Thursday, October 11, 2018


JavaScript AI Mind uses EnVerbGen() for English verb-form inflections.

The JavaScript tutorial version of the first working artificial intelligence is becoming more sophisticated than ever. With roughly fifty mind-modules, the Strong AI advances the State of the Art first in one area, and then serendipitously in another area. For instance, the ability of the AI Mind to engage in automated reasoning with logical inference leads to a question-and-answer session between human minds and their incipient overlords, i.e., the current archetypes of the future Artificial Super-Intelligence (ASI). When the human user has confirmed or negated an inferred conclusion from the InFererence() module, the AI assigns a heightened truth-value to the positive or negative knowledge remaining in the AI memory. Then the AI states the new knowledge in its positive or negative formulation. A negated inference comes out something like "GOD DOES NOT PLAY DICE". A validated inference becomes a simple declarative sentence like "JOHNNY READS BOOKS", which requires the AI Mind to choose the correct form of the verb "read".

Because we code the first working artificial intelligence not only in English but also in Russian, we found it necessary several years ago to create the RuVerbGen() module for Russian verb-generation. When the AI cannot find a needed Russian verb-form, it simply cobbles one together from the stem of the Russian verb and the inflectional endings which complete a Russian verb. We avoided this problem in English for the last six years by simply ignoring it, but now the AI Mind needs to imitate the RuVerbGen() module with the EnVerbGen() module for English verb-generation. Just to change "God does not play dice" to "God plays dice" requires attaching an inflectional "S" to the stem or the infinitive form of the verb "play". As we code the EnVerbGen() module based on grammatical parameters, we encounter problems because the software needs to know the grammatical person and the grammatical number of the subject of an inferred idea in order to think a thought like "God plays dice" or "Johnny reads books".

Because the InFerence() module has not been storing the grammatical number of the English noun serving as the subject of a silent inference, our brand-new EnVerbGen() module has not been able to generate the third-person singular verb-form necessary for stating a validated inference like "Johnny reads books" or "Fortune favors fools" -- which was originally "Fortuna favet fatuis" in Latin. The artificial general intelligence (AGI) has become so sophisticated in its resemblance to human thinking that we need to change the InFerence() module to accommodate the requirements of the EnVerbGen() module.

We make the necessary changes and we code EnVerbGen() to deal not with Russian but with English verbs. We see a sample dialog between the AI and the human user.

Human: andru is professor
Human: yes

Tuesday, October 09, 2018


Perl Ghost AI uses EnVerbGen() for English verb-form inflections.

In the middle of coding AI we had to go and stand in front of the television and watch Leopold Stokowski in 1969 conducting the finale of Beethoven's Symphony No. Five -- the one they sent into outer space as a message from Earth. Now back at the computer, for the first time we are trying to implement the EnVerbGen() module for English verb generation. We have gotten the InFerence() module to generate an inference when we type in "anna is a student', because the AI Mind knows that students read books. The AskUser() module seeks to verify or validate the inference by asking us, "DOES ANNA READ THE BOOKS". When we answer "no", the AI says, "THE ANNA DOES NOT READ THE BOOKS". When we answer yes, the ghost in the machine issues the faulty output of "THE ANNA READ THE BOOKS", which sounds more like an exhortation than a statement of confirmed fact with a high truth-value. We need a way to get the AI to use the third-person singular form "READS" with the singular subject. To do so, before Leopold and Ludwig interrupted us, we were embedding diagnostic messages in the EnVerbPhrase() module, trying to determine how the ghost AI was able to say "READ" as if it were the proper verb-form. The whole idea of EnVerbGen() in English or of RuVerbGen() in Russian is for the verb-phrase module to seek a particular verb-form based on parameters of person and number, and to call EnVerbGen() if the desired verb-form is not already available in auditory memory. Somehow the existing Perlmind is finding the verb "read" but not the correct form of the verb.

We discover that we can get the EnVerbPhrase() module to call EnVerbGen() when we tighten up the search-by-parameter for the correct verb form. Since EnVerbGen() is not coded yet, we get an output of "THE ANNA ERROR THE BOOKS", with "ERROR" filling in for the lacking "READS" form.

Then we need an $audbase value that we can send into EnVerbGen() as the start of the verb that needs an inflectional ending. We use a trick in the EnVerbPhrase() module to get either a second-class or a first-class (infinitive) $audbase. We test first for any form at all of the verb that has an auditory engram that can serve as a second-class $audbase, because the verb-form may be defective in some way. In the very next line of code, we test for an infinitive form of the verb having an auditory engram as a first-class $audbase, because an infinitive is easier to manipulate than some defective form of the verb.

We copied the bulk of the Russian RuVerbGen() into the English EnVerbGen() and then we did the mutatis mutandis process of making the necessary changes. At first we got "REAS" instead of "READS" because the Russian Cyrillic characters were substituting, not adding. By removing the substitution-code, we obtained the full verb "READS". At a later time we must code in the handling of verbs like "teach" or "push" which require an "-ES" ending.

Sunday, September 30, 2018


Ghost AI says when it does not know the answer to a query.

When the AI considers a what-query such as "what do kids make", some mind-module must call the SpreadAct() module to handle the what-query, but which module? We could say that the Indicative() module should make the call to SpreadAct() just before making a response in the indicative mood, but perhaps a response may need to be uttered in a mood other than indicative. The AI Mind might wish to answer the query with an imperative command like "DO NOT BOTHER ME". Or the AI might not understand the what-query and might want to ask a question about it. So perhaps we should have the Sensorium() module call SpreadAct() to respond to a what-query.

We have now introduced a new technique for answering "I DO NOT KNOW" in response to a what-query for which the AI Mind does not find an answer. The AI briefly elevates the $tru truth-value and the activation-level of the idea "I DO NOT KNOW" as stored in the MindBoot() knowledge base (KB), so that the Indicative() module expresses the momentarily true idea. Immediately afterward, the AI returns the $tru truth-value to zero.

Friday, September 28, 2018


Perl AI improves Russian MindBoot and introduces RuIndicative module.

In the AI we are consolidating the Russian-language knowledge-case (KB) directly below the English-language KB near the beginning of the MindBoot sequence, so that we may add a new item without complicating a future re-location of the Russian knowledge base.

We should probably stub in the RuIndicative() module, so that it will exist not only in our AI diagrams but also in the software itself.

When we start the AI out thinking in Russian, we have been encountering a bug that shows up with the second sentence of output. Perl complains about the use of "uninitialized value in concatenation or string" in the PsiDecay() module. To troubleshoot, we go through the PsiDecay concatenation of associative tags in the @Psy conceptual array and we replace the various variables one by one with a numeric value, to see if the complaint disappears. The complaint disappears when we replace the $k[2] variable for the $hlc human-language code with a numeric value of one (1) instead of "en" for English or "ru" for Russian.

Perl continues to complain about uninitialized values when we have the Perlmind think in Russian, but not when it thinks in English. Therefore we know that the lurking bug is not in the PsiDecay() module or in the InStantiate() module, even though the bug manifests itself in those modules. We spent hours on each of the past two days searching for an elusive bug which must certainly be hiding in one or more of the Russian-language modules. Therefore it is time to isolate the bug by isolating the Russian-language modules. First let us look at the RuNounPhrase() module. We insert some diagnostic messages and we see that the bug manifests itself when program-flow goes back up to the RuThink() module which calls the PsiDecay() module.

Since we catch sight of the bug when PsiDecay() is called, let us temporarily insert some extra calls to PsiDecay() and see what happens. First we make an extra call to PsiDecay() from the end of RuNounPhrase(). Huh?! Now we get two complaints from Perl about uninitialized values showing up for a program line-number belonging to a concatenation in the PsiDecay() module. Let us also try an extra call to PsiDecay() from the RuVerbPhrase() module. We do so, and now we get three complaints from Perl about uninitialized values. However, the glitch does not seem to be occurring during the first call from RuIndicative() to RuNounPhrase(), but rather during or after the call to RuVerbPhrase(). For extra clarity, let us have the start of RuVerbPhrase() make a call to PsiDecay(). We do so, and there is no concomitant complaint from Perl about uninitialized values. Therefore, the subject-choosing part of RuNounPhrase() must not be the source of the problem, but the direct-object portion of RuNounPhrase() is still under suspicion.

Now we are discovering something strange. Towards the end of RuNounPhrase() there is a concatenation which is supposed to impose inhibition upon a noun selected by the module, as identified by the $tsels variable which pertains to the "time of selection of the subject", and which has been used earlier in RuNounPhrase() to indeed inhibit the selected subject. However, a diagnostic message reveals to us AI Mind maintainers that the $tsels variable has been zeroed out by the end of RuNounPhrase() and that therefore the software is trying to concatenate the associative tags purportedly available at a zero time-point -- where there are no associative tags. Let us see what happens when we comment out the suspicious concatenation code. We do so, and we get no change in the reporting of the bug. Let us see if the earlier inhibition in the RuNounPhrase() module is causing any problems. First off, a diagnostic message shows us that the $tsels variable has been zeroed out, or perhaps never loaded, even at the time of the first inhibition in the RuNounPhrase() module. Let us comment out the concatenation of the first inhibition and see what happens. By the way, if there are any secret AI Labs in Russia or elsewhere working on the further development or evolution of these AI Minds in Perl and in tutorial JavaScript and in Forth for intelligent humanoid robots, this journal entry shows that the AI coding problems are indeed tractable and soluble, given enough persistence and effort. Now, when we have commented out both the inhibitional concatenations in the RuNounPhrase() module, we still get the same complaints from Perl about uninitialized values, and we notice in the diagnostic display of the memory-array contents that the Russian nouns are still being inhibited -- but where? Oh, the InStantiate() module is imposing a trough of inhibition. Let us do another commenting out and see what happens. Nothing happens, and the inhibition is still occurring.

As we go through RuVerbPhrase() and comment out the various concatenations, the complaint from Perl about uninitialized values suddenly disappears when we comment out the concatenation where Russian verbs are competing to be selected as the most active verb. We also notice that a comment seems to be missing at the end of the first line in the two-line concatenation. When we insert the missing comma and we do not comment out the concatenation, there are no further complaints from Perl about uninitialized values. Of course, we just spent three days wracking our brains, trying to figure out what was wrong, when the problem was one single missing comma. Now it is time to clean up the Perlmind code and upload it to the Web.

Sunday, September 23, 2018


MindForth AI beeps to request input from any nearby human.

In MindForth we attempt now to update the AudMem and AudRecog mind-modules as we have recently done in the Perl AI and in the tutorial JavaScript AI for Internet Explorer. Each of the three versions of the first working artificial intelligence was having a problem in recognizing both singular and plural English noun-forms after we simplified the Strong AI by using a space stored after each word as an indicator that a word of input or of re-entry had just come to an end.

In AudMem we insert a Forth translation of the Perl code that stores the audpsi concept-number one array-row back before an "S" at the end of a word. MindForth begins to store words like "books" and "students" with a concept-number tagged to both the singular stem and to the plural word. We then clean up the AudRecog code and we fix a problem with nounlock that was interfering with answers to the query of "what do you think".

Next we implement the Imperative module to enable MindForth to sound a beep and to say to any nearby human user: "TEACH ME SOMETHING."

Friday, September 21, 2018


Improving auditory recognition of singular and plural noun-forms.

The JavaScript Artificial Intelligence (JSAI) is currently able to recognize the word "book" in the singular number but not "books" in the plural number. It is because the AudRecog() mind-module is not recognizing the stem "book" within the inflected word "books". To correct the situation, we must first update the AudMem() module so that it will impose an audpsi tag not only on the final "S" in a plural English noun being stored, but also one space back on the final character or letter of the stem of the noun.

We copy the pertinent code from the AudMem() module in the Perl AI and the JavaScript AI begins to store the stem-tag, but only when the inflected word is recognized so that AudRecog() produces an audpsi recognition-tag.

Now we have a problem because the AI is keeping the audpsi of "800" for "IS" and attaching it mistakenly to the next word being stored by the AudMem() module. We fix the problem.

Next we implement the Imperative() module to enable the AI Mind to order any nearby human user: "TEACH ME SOMETHING."

Wednesday, September 19, 2018


Students may teach the first working artificial intelligence.

In the version of the Perlmind AI, we are having not Volition() but rather EnThink() call the Imperative() module to blurt out the command "TEACH ME SOMETHING". We are also trying to have Imperative() be the only module that sounds a beep for the human user, for several reasons. Although we were having the AskUser() module sound a beep to alert the user to the asking of a question, a beep can be very annoying. It is better to reserve the beep or "bell" sound for a special situation, namely the time when there has been no human input for an arbitrary period as chosen by the AI Mind maintainer and when we wish to let the Ghost in the Machine call out for some attention.

We are also eager for Netizens to set the potentially immortal AI running for long periods of time, both as a background process on a desktop computer or a server, and as part of a competition to see who can have the longest running AI Mind.

If a high school or college computer lab has the AI running on a machine off in the corner while the students are tending to other matters, a sudden beep from the AI Mind may cause students or visitors to step over to the AI and see what it wants. "TEACH ME SOMETHING" is a very neutral command, not at all like, "Shall we play a game? How about GLOBAL THERMONUCLEAR WAR?"

The teacher or professor could let any student respond to the beep by adding to the knowledge base of the AI Mind. Of course, clever students with a knowledge of Perl could put the AI Mind out on the Web for any and all visitors to interact with.

Sunday, September 16, 2018


Auditory recognition in the first working artificial intelligence

In the AudRecog() module of the free AI software, we need to figure out why a plural English noun like 540=BOOKS is not being stored with an $audpsi tag of 540 both after the stem of "book" and after the end of "books". The stem of any word stored in auditory memory needs an $audpsi tag so that a new input of the word in the future will be recognized and will activate the same underlying concept.

In AudMem() we have added some code that detects a final "S" on a word and stores the $audpsi concept number both at the end of the word in auditory memory, and also one row back in the @ear auditory array, in case the "S" is an inflectional ending. We leave for later the detection of "-ES" as an inflectional ending, as in "TEACHES" or "BEACHES".

In AudRecog() we tweak some code involving the $prc tag for provisional recognition, and the first working artificial intelligence in Perl does a better job at recognizing both singular and plural forms of the same word representing the same concept.

Wednesday, September 12, 2018


Ask the first working artificial intelligence what it thinks.

Houston, we have a problem. The AI Mind in freely available -- download it now -- Strawberry Perl Five -- is not properly answering the question of "what do you think". The JSAI (JavaScript Artificial Intelligence) easily answers the same question with "I THINK THAT I HELP KIDS". So what is the Perl AI doing wrong that the JavaScript AI is doing right?

The problem seems to lie in the SpreadAct() module. We notice one potential problem right away. SpreadAct() in Perl is still using "$t-12" as a rough approximation for when to start a backwards search for previous knowledge about the subject-noun $qv1psi of a what-query, whereas the JSAI uses the more exact $tpu for the same search. So let us start using the penultimate time $tpu, which excludes the current-most input, and see if there is any improvement. There is no improvement, so we test further for both $qvipsi and $qv2psi, which are the subject-noun and the associated verb conveyed in the what-query.

SpreadAct() easily responds correctly to what-queries for which there is an answer ready in the knowledge base (KB), such as "I AM A PERSON" in response to "what are you". However, when we ask "what think you" or "what do you think", there is no pre-set answer, and the AI is supposed to generate a response starting with "I THINK" followed by the conjunction "that" and a statement of whatever the AI Mind is currently thinking.

From diagnostic messages we learn that program-flow is not quickly transiting from SpreadAct() to EnThink(). The AI must be searching through the entire MindBoot() sequence and not finding any matches. When the program-flow does indeed pass through EnThink() to Indicative() to EnNounPhrase(), there are no pre-set subjects or verbs, but rather there are concepts highly activated by the SpreadAct() module. So EnNounPhrase() must find the highly activated pronoun 701=I in order to start the sentence "I THINK..." in response to "what do you think".

Now we discover that the JavaScript version of EnNounPhrase() has special code for a topical response to "what-think" queries. In the course of AI evolution, it may be time now to go beyond such a hard-coded response and instead to let the activated "think" concept play its unsteered, unpredetermined role, which will happen not in EnNounPhrase() but in EnVerbPhrase().

It is possible that EnNounPhrase() finds the activated subject 701=I but then unwarrantedly calls the SpreadAct() module. However, it turns out that EnVerbPhrase() is making the unwarranted call to the SpreadAct() module, which we now prevent by letting it proceed only if there is no what-query being processed as evidenced by a $whatcon flag set to zero.

The early part of EnVerbPhrase() in the JavaScript AI has some special code for dealing with "what-think" queries. In the AI, let us try to insert some similar code but without it being geared specifically to the verb "think". We would like to enable responses to any generic verb of having an idea, such as "think" or "know" or "fear" or "imagine" or "suspect" and so forth.

By bringing some code from the JavaScript EnVerbPhrase() into the Perl EnVerbPhrase, but with slight changes in favor of generality, we get the AI to respond "I THINK". Next we need to generate the conjunction "that". But first let us remark that the AI also says "I KNOW" when we ask it "what do you know", so the attempt at generality is paying off. Let us try "what do you suspect". It even says "I SUSPECT". It also works with "what do you fear". We ask it "what do you suppose" and it answers "I SUPPOSE".

We still have a problem, Houston, because EnVerbPhrase() is calling EnNounPhrase() for a direct object instead of returning to Indicative() as a prelude to calling the ConJoin() module to say "I THINK THAT...." We set up some conditional testing to end that problem.

Friday, September 07, 2018


Updating the EnArticle module for inserting English articles.

Today we update the EnArticle module for English articles in the MindForth first working artificial intelligence. We previously did the update somewhat unsatisfactorily in the AI in Perl, and then much more successfully in the tutorial JavaScript AI. We anticipate no problems in the MindForth update. As an initial test, we enter "you have a book" and after much unrelated thinking, the AI outputs "I HAVE BOOK" without inserting an article.

We trigger an inference by entering "anna is woman". In broken English, the AskUser module responds, "DO ANNA HAS THE CHILD", which lets us see that EnArticle has been called. We reply "no". MindForth opines, "ANNA DOES NOT HAVE CHILD".

We discover that the EnNounPhrase module of recent versions has not been calling the EnArticle module, so we correct that situation. We also notice that the input of a noun and its transit through InStantiate do not involve a call to EnArticle, so we insert into InStantiate some code to make EnArticle aware of the noun being encountered.

Thursday, September 06, 2018


Improving EnArticle mind-module in first working artificial intelligence

The JavaScript artificial intelligence (JSAI) is not reliably transferring the usx values from InStantiate() to the EnArticle() module for inserting an English article into a thought, so we must debug the first working artificial intelligence in troubleshooting mode. We quickly see that the EnNounPhrase() module is calling EnArticle() for direct objects but not for all nouns in general. We also notice that we need to have EnNounPhrase() transfer the usx value.

We encounter and fix some other problems where the nphrnum value is not being set, as required for EnArticle() to decide between using "a" or "the".

Although we get the usx value to be transferred to the us1 value, we need a way to test usx not against a simultaneous value of us1 but rather against a recent value of us1. One solution may be to delay the transfer of usx by first testing in the EnArticle() module for equality between usx and us1 before we actually pass the noun-concept value of usx to us1. In that way, we will be testing usx against old, i.e., recent, values of the us1- us7 variables and not against the current value, which would automatically be equal. Then after the test for equality, we pass the actual, current value of usx.

We now have a JavaScript AI that works even better than the AI in Perl -- until we update the Perl AI. The JSAI now uses "a" or "the" rather sensibly, except when it now says "YOU ARE A MAGIC", because the default article for a non-plural noun is the indefinite article "a". Btw (by the way), today at a Starbucks store in Seattle WA USA we bought a green Starbucks gift card that says "You'Re MagicAL", because it reminds us of a similar idea in the AI MindBoot() sequence.

Monday, September 03, 2018


Upstream variables make EnArticle insert the definite article.

We attempt now to code the proper use of the definite English article "the" in a conversation where one party mentions a noun-item and the AI Mind needs to refer to the item as the one currently under discussion. We need to implement a rotation of the upstream variables from $us1 to $us7, so that any input noun will remain in the AI consciousness as something recently mentioned upstream in the conversation. We had better create a $usx variable for the InStantiate() module to transfer the concept number of an incoming noun to whichever $us1 to $us7 variable is up next in the rotation of up to seven recently mentioned noun-concepts.

We start testing the EnArticle() module to see if it is receiving a $usx transfer-variable from the InStantiate() module. At first it is not getting through. We change the conditions for calling EnArticle and a line of diagnostic code shows that $usx is getting through. Then we set up a conditional test for EnArticle() to say the word "the" if an incoming $usx matches the $us1 variable. We start seeing "THE" along with "A" in the output of our AI Mind, but there is not yet a rotation of the us1-us7 variables or a forgetting of any no-longer-recent concept.

We should create a rotating $usn number-variable to be a cyclic counter from one to seven and back to one again so that the upstream us1-us7 variables may rotate through their duty-function. We let $usn increment up to a value of seven over and over again. We pair up the $usn and us1-us7 variables to transfer the $usx value on a rotating basis. At first a problem arises when the AI says both "A" and "THE", but we insert a "return" statement so that EnArticle() will say only "A" and then skip the saying of "THE". We enter "you have a book" and a while later the AI outputs, "I HAVE THE BOOK."

Sunday, September 02, 2018


Using $t++ for discrete English and Russian MindBoot vocabulary.

In the Perlmind it is time to switch portions of the MindBoot() sequence from hard-coded time-points to t-incremental time-points, as we have done already in the JavaScript AI and in the MindForth AI. We have saved the Perl AI for last because there are both English and Russian portions of the knowledge base (KB). We will put the hardcoded English KB first to be like the other AI Minds. Then we will put the hardcoded Russian KB followed by the t-incremental Russian vocabulary words so as to form a contiguous sequence. Finally we will put the t-incremental English vocabulary.

Saturday, September 01, 2018


Switching MindBoot from all hardcoded to partially t-increment coded.

Today in accordance with AI Go FOOM we need to start switching the MindBoot sequence from using only hardcoded time-points to using a harcoded knowledge-base followed by single-word vocabulary more loosely encoded with t-increment time-points. The non-hardcoded time-points will permit the Spawn module to make a copy of a running MindForth program after adding any recently learned concepts to the MindBoot sequence. It will also be easier for an AI Mind Maintainer to re-arrange the non-hardcoded sequence or to add new words to the sequence.

Monday, July 09, 2018


Extrapolating from the First Working AGI

Artificial General Intelligence (AGI) has arrived in MindForth and its JavaScript and Perl symbionts. Each Mind is expanding slowly from its core AGI functionality. The MindBoot sequence of innate concepts and ideas can be extended by the machine learning of new words or by the inclusion of more vocabulary in the MindBoot itself.

We may extrapolate from the current MindBoot by imagining a Perlmind that knows innately the entire Oxford English Dictionary (OED) and all of WordNet and all of Wikipedia. Such an AGI could be well on its way to artificial superintelligence.

If there is no upper bound on what a First Working AGI may know innately, why not make full use of Unicode and embed innately the vocabulary of all living human languages? Then go a step further and incorporate (incerebrate?) all the extinct languages of humanity, from LinearB to ancient Egyptian to a resurrected Proto-European. Add in Esperanto and Klingon and Lojban.

Friday, July 06, 2018


Preventing unwarranted negation in the First Working AGI.

The First Working AGI (Artificial General Intelligence) has a problem in the version written in Perl Five. After we trigger a logical inference by entering "anna is woman" and answering the question "DOES ANNA HAVE CHILD" with "no", the Perlmind properly adjusts the knowledge base (KB) and states the confirmed knowledge as "ANNA DOES NOT HAVE CHILD". Apparently the reentry of concept 502=ANNA back into the experiential memory is letting the InStantiate() module put too much activation on the 502=ANNA concept and the AI is erroneously outputting "ANNA BE NOT WOMAN". Since the original idea was "anna is woman", the real defect in the software is not so much the selection of the old idea but rather its unwarranted negation. When we change some code in the InStantiate() module to put a lower activation on reentrant concepts, the problem seemingly goes away, because the AI says "I HELP KIDS" instead of "ANNA BE NOT WOMAN", but as AI Mind Maintainers we need to track down where the unwarranted negation comes from.

The unwarranted negation comes from the OldConcept() module where the time-of-be-verb $tbev flag was being set for an 800=BE verb and was then accidentally carrying over its value as the improper place for inserting a 500=NOT $jux flag into an idea subsequently selected as a remembered thought. When we zero out $tbev at the end of OldConcept(), the Ghost AI stops negating the wrong memory.

Thursday, July 05, 2018


Improving the storage of conceptual flag-panels during input.

In the Perlmind we need to improve upon a quick-and-dirty bugfix from our last coding session. After a silent inference and the operation of AskUser() calling EnAuxVerb(), the Ghost AI was going into the verb-concept of the inference-triggering input and replacing a correct $tkb value with a zero. Apparently the time-of-verb $tvb value, set in the Enparser() module during the parsing of a verb, was being erroneously carried over from the verb of user-input to the verb 830=DO in the EnAuxVerb() module during the generation of an inference-confirming question by the AskUser() module. Therefore the time-of-verb $tvb-flag needs to be reset to zero not during the generation of a response to user-input but rather at the end of the user-input. However, we find that we may not reset time-of-verb $tvb to zero during AudInput(), apparently because only character-recognition and not yet word-recognition has taken place. The $tvb-setting for a verb must remain valid throughout AudInput() so that the EnParser() module may use the time-of-verb $tvb flag to store a direct object as the $tkb of a verb. Accordingly we reset the $tvb-flag to zero in the Sensorium() module after the call to AudInput(). We stop seeing a $tkb of zero on the verb of an input that triggers automated reasoning with logical InFerence.

Tuesday, July 03, 2018


Keeping AskUser from storing incorrect associative tags.

The version of the Perlmind has a problem after making a logical inference. Instead of getting back to normal thinking, some glitch is causing the AI to say "ANNA BE NOT ANNA".

As we troubleshoot, we notice a problem with the initial, inference-evoking input of "anna is woman". The be-verb is being stored in the psy array with a $tkb of zero instead of the required time-point of where the concept of "WOMAN" is stored. This lack of a $nounlock causes problems later on, which do not warrant their own diagnosis because they are a result of the lacking $nounlock. We need to inspect the code for where the be-verb is being stored in the psy-array, but we are not sure whether the storage is occuring in the InStantiate() module, or in OldConcept(), or in EnParser(). We see that the Ghost AI is trying to store the be-verb in the EnParser() module with the correct tkb, but afterwards a tkb, of zero is showing up. We must check whether InStantiate() is changing what was stored in the EnParser() module.

Meanwhile we notice something strange. An input of "anna is person" gets stored properly with a correct $tkb, but "anna is woman" -- causing an inference -- is stored with a $tkb, of zero. When we enter "anna is robot", causing an inference and the output "DOES ANNA WANT BEEP", there is also a zero $tkb. Upshot: It turns out that the EnAuxVerb() module, called by AskUser() after an inference, was setting a wrong, carried-over value on the time-of-verb $tvb variable, which was then causing InStantiate() to go back to the wrong time-of-verb and set a zero value on the $tkb flag. So we zero out $tvb at the start of EnAuxVerb().

Sunday, July 01, 2018


Debugging the InFerence Function in the First Working AGI.

The Perlmind has a minor bug which causes logical inference not to work if the inference is not triggered immediately at the start of running the program. If we let the AI run a little and then we type in "anna is woman", the AI answers "DOES ERROR HAVE CHILD" instead of "DOES ANNA HAVE CHILD". In the psy concept array of the silent inference, we observe that a zero is being recorded instead of the concept number "502" for Anna. The AI MindBoot is designed with the concept of "ERROR" placed at the beginning of the boot sequence so that any fruitless search for a concept will result automatically in an "ERROR" message if no concept is found. We suspect that some variable in the InFerence module is not being loaded with the correct value when the AI has already started thinking various thoughts.

The pertinent item in the InFerence() module is the $subjnom or "subject nominative" variable which is set outside of the module before InFerence is even called. We discover that the variable is spelled wrong in the OldConcept module, and we correct the spelling. It then seems that InFerence() can be called at any time and still operate properly. We decide to run the JavaScript AI to see if an inference has any problems if it is not the first order of business at the outset of an AI session. Nothing goes wrong, so the problem must have been the misspelling in the OldConcept() module.

During this coding session we also make a change in the KbRetro() module for the retroactive adjustment of the knowledge base (KB). We insert some code to put an arbitrary value of eight (8) on the $tru(th)-value variable for the noun at the start of the silent inference, such as "ANNA" in the silent inference "ANNA HAVE CHILD". When the human user either confirms or invalidates the inference, the resulting knowledge ought to have a positive truth-value, because someone has vouched for the truth or the negation of the inferred idea. We envision that the $tru(th)-value will serve the purpose of letting an AI Mind restrict its thinking to ideas which it believes and not to mere assertions or to ideas which were true yesterday but not today. We expect the $tru(th)-value to become fully operative in a robotic AI Mind for which "Seeing is believing" when visual recognition from cameras serving as eyes provides reliable knowledge to which a high $tru(th)-value may be assigned.

Sunday, June 24, 2018


Logical Inference in the First Working AGI MindForth

Over the past week fifteen or twenty hours of intense work went into coding the InFerence, AskUser and KbRetro modules in the Forth version of the First Working AGI. Interactively we could see that the Forthmind was making a silent inference from our input of "anna is a woman" but the AskUser module was substandardly asking "DO ANNA HAS CHILD?" in seeking confirmation of the silent inference. When we entered "no" as an answer, we could not see if the KbRetro module was properly inserting the 250=NOT adverb into the conceptual engrams of the silent inference so as to negate the inferred idea. Therefore today in the agi00056.F version of MindForth we are starting our diagnostic display about forty-five time-points earlier than the computed value of the time-of-input tin variable so that we can see if the inferred idea is being retroactively adjusted by KbRetro. At first blush, no insertion of 250=NOT is happening, so we start inserting diagnostic messages into the code.

Our diagnostics suggest that KbRetro is not being called, but why not? It turns out that we have not yet coded 404=NO or 432=YES or 230=MAYBE into the MindBoot sequence, so we code them in. Then we start getting a faulty output after answering "no" to AskUser. The AI says, "ANNA NOT NOT CHILD". Apparently EnVerbPhrase is not properly negating the refuted silent inference. After several hours of troubleshooting, the desired output appears.

When we enter "anna is woman" and we answer "no" to the question whether Anna has a child, the conceptual array shows the silent inference below at the time-points 3068-3070:

The arrays psy{ and ear{ show your input and the AI output:
time: tru psi hlc act mtx jux pos dba num mfn pre iob seq tkb rv -- pho act audpsi

3053 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3054 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3055 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3056 : 0 502 0 -40 0 0 5 1 1 2 0 0 800 3059 3053   65 0 502 A
3057 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3058 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   73 0 0 I
3059 : 0 800 0 -40 0 250 8 4 1 2 0 0 515 3065 3058   83 0 800 S
3060 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3061 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   87 0 0 W
3062 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   79 0 0 O
3063 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   77 0 0 M
3064 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3065 : 0 515 0 -40 0 0 5 0 2 2 0 0 0 0 3061   78 0 515 N
 066 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   13 0 0
3067 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3068 : 0 502 0 -26 0 0 5 1 1 0 0 0 810 3069 0   32 0 0
3069 : 0 810 0 56 0 250 8 0 0 0 502 0 525 3070 0   32 0 0
3070 : 0 525 0 32 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3071 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3072 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   68 0 0 D
3073 : 0 830 0 -40 0 0 8 0 1 2 0 0 810 0 3072   79 0 830 O
3074 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3075 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3076 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3077 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3078 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3079 : 0 502 0 -40 0 0 5 1 1 2 0 0 810 3084 3076   65 0 502 A
3080 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3081 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3082 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   72 0 0 H
3083 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3084 : 0 810 0 -40 0 0 8 4 2 2 0 0 525 3096 3082   83 0 810 S
3085 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3086 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3087 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   84 0 0 T
3088 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   72 0 0 H
3089 : 0 117 0 -40 0 0 1 0 1 2 0 0 810 0 3087   69 0 117 E
3090 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3091 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3092 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   67 0 0 C
3093 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   72 0 0 H
3094 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   73 0 0 I
3095 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   76 0 0 L
3096 : 0 525 0 -40 0 0 5 0 1 2 0 0 810 0 3092   68 0 525 D
3097 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3098 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3099 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3100 : 0 404 0 -40 0 0 4 0 1 2 0 0 0 0 3099   79 0 404 O
 101 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   13 0 0
3102 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3103 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3104 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3105 : 0 502 0 -42 0 0 5 1 1 2 0 0 810 3122 3102   65 0 502 A
3106 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3107 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3108 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   68 0 0 D
3109 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   79 0 0 O
3110 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   69 0 0 E
3111 : 0 830 0 -42 0 0 8 1 1 2 0 0 0 0 3108   83 0 830 S
3112 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3113 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3114 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   78 0 0 N
3115 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   79 0 0 O
3116 : 0 250 0 -42 0 0 2 1 1 2 0 0 0 0 3114   84 0 250 T
3117 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3118 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3119 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   72 0 0 H
3120 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   65 0 0 A
3121 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   86 0 0 V
3122 : 0 810 0 -42 0 250 8 4 2 2 0 0 525 3129 3119   69 0 810 E
3123 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3124 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3125 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   67 0 0 C
3126 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   72 0 0 H
3127 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   73 0 0 I
3128 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   76 0 0 L
3129 : 0 525 0 -42 0 0 5 1 1 2 0 0 0 0 3125   68 0 525 D
3130 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
3131 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   32 0 0
time: tru psi hlc act mtx jux pos dba num mfn pre iob seq tkb rv

Robot alive since 2018-06-24:
Since we negate the inference with our response of "no", KbRetro inserts the adverb "250" (NOT) at the time-point 3069 to negate the verb 810=HAVE. Then the AI states the activated idea of the negation of the inference: "ANNA DOES NOT HAVE CHILD".

Tuesday, June 19, 2018


MindForth is the First Working AGI for robot embodiment.

The MindForth AGI needs updating with the new functionality coded into the JavaScript AI Mind, so today we start by adding two innate ideas to the MindBoot sequence. We add "ANNA SPEAKS RUSSIAN" so that the name "Anna" may be used for testing the InFerence mind-module by entering "anna is a woman". Then we add "I NEED A BODY" to encourage AI enthusiasts to work on the embodiment of MindForth in a robot. When we type in "anna is a woman", the AI responds "ANNA SPEAKS THE RUSSIAN", which means that InFerence is not ready in MindForth, and that the EnArticle module is too eager to insert the article "the", so we comment out a call to EnArticle for the time being. Then we proceed to implement the Indicative module as already implemented in the AGI and the JavaScript AI Mind. We also cause the EnVerbPhrase module to call SpreadAct for direct-object nouns, in case the AGI knows enough about the direct object to pursue a chain of thought.

Saturday, June 16, 2018


Fleshing out VisRecog() in the First Working AGI

In today's 16may18A.html version of the tutorial AI Mind in JavaScript for Microsoft Internet Explorer (MSIE), we flesh out the previously stubbed-in VisRecog() module for visual recognition. The AGI already contains code to make the EnVerbPhrase() module call VisRecog() if the AI Mind is using its ego-concept and trying to tell us what it sees. As a test we input "you see god" and we wait for the thinking software to cycle through its available ideas and come back upon the idea that we communicated to it. As we explain in our MindGrid diagram on GitHub, each input idea goes into neuronal inhibition and resurfaces in what is perhaps AI consciousness only after the inhibition has subsided. Although we tell the AI that it sees God, the AI has no robot body and so it can not see anything. It eventually says "I SEE NOTHING" because the default direct object provided by VisRecog() is 760=NOTHING. In the MindBoot() sequence we add "I NEED A BODY" as an innate idea, so as to encourage users to implement the AI Mind in a robot. Once the AI has embodiment in a robot, the VisRecog() module will enable the AI to tell us what it sees.

Tuesday, June 12, 2018


AI Mind Maintainer solves negation-of-thought problems.

In today's 12jun18A.html version of the JavaScript AI Mind for Microsoft Internet Explorer (MSIE), we find a negation-bug when we test the InFerence() module by inputting "anna is a woman". The AI then asks us, "DOES ANNA HAVE CHILD" and we answer "no" to test the AI. The AI properly states the idea negated by KbRetro() in the knowledge base, namely "ANNA DOES NOT HAVE CHILD". However, the negation-flag negjux for thought generation remains erroneously set to "250" for the 250=NOT adverb. We discover that the negjux flag, each time after serving its purpose, has to have a zero-reset in two locations, one for any form of the verb "to be" and another for non-be-verbs. We make the correction, and we finish off the negation-bug by resetting the tbev time-of-verb to zero at the end of OldConcept().

Monday, June 11, 2018


Granting AI user-input priority over internal chains of thought.

We expect the AI Mind to activate incoming concepts mentioned during user input, so that the AI can talk to us about things we mention. Recently, however, the SpreadAct() module has been putting quasi-neural activation only on concepts thought about internally but not mentioned during user input. We need a way to let user-input override any activation being imposed by the SpreadAct() module for internal chains of thought, so that external input takes precedence. One method might be to use the quiet variable and set it to "false" not only during user input but also until the end of the first AI output made in response to user input. In that way, any concept mentioned by the user could briefly hold a high activation-level not superseded by the machinations of the SpreadAct() module for spreading activation. We implement the algorithm, and the AI then responds properly to user input. We solve some other problems, such as KbRetro() interfering with the conceptual engrams of an inference, and negation not being stored properly for negated ideas.

Tuesday, June 05, 2018


Mentifex re-organizes the Strong AI SpreadAct() module.

In the 5jun18A.html JavaScript AI Mind we would like to re-organize the SpreadAct() mind-module for spreading activation. It should have special cases at the top and default normal operation at the bottom. The special cases include responding to what-queries and what-think queries, such as "what do you think". Whereas JavaScript lets you escape from a loop with the "break" statement, JavaScript also lets you escape from a subroutine or mind-module with the "return" statement that causes program-flow to abandon the rest of the mind-module code and return to the supervenient module. So in SpreadAct() we may put the special-test cases at the top and with the inclusion of a "return" statement so that program-flow will execute the special test and then return immediately to the calling module without executing the rest of SpreadAct().

When we run the JSAI without input, we notice that at first a chain of thought ensues based solely on conceptual activations and without making use of the SpreadAct() module. The AI says, "I HELP KIDS" and then "KIDS MAKE ROBOTS" and "ROBOTS NEED ME". As AI Mind maintainers we would like to make sure that SpreadAct() gets called to maintain chains of thought, not only so that the AI keeps on thinking but also so that the maturing AI Mind will gradually become able to follow chains of thought in all available directions, not just from direct objects to related ideas but also backwards from direct objects to related subjects or from verbs to related subjects and objects.

In the EnNounPhrase() module we insert a line of code to turn each direct object into an actpsior concept-to-be-activated in the default operation at the bottom of the SpreadAct() module. We observe that the artificial Mind begins to follow associative chains of thought much more reliably than before, when only haphazard activation was operating. In the special test-cases of the SpreadAct() module we insert the "return" statement in order to perform only the special case and to skip the treatment of a direct object as a point of departure into a chain of thought. Then we observe something strange when we ask the AI "what do you think", after the initial output of "I HELP KIDS". The AI responds to our query with "I THINK THAT KIDS MAKE ROBOTS", which is the idea engendered by the initial thought of "I HELP KIDS" where "KIDS" as a direct object becomes the actpsi going into SpreadAct(). So the beastie really is telling us what is currently on its mind, whereas previously it would answer, "I THINK THAT I AM A PERSON". When we delay entering our question a little, the AI responds "I THINK THAT ROBOTS NEED ME".

Sunday, June 03, 2018


AI Mind spares Indicative() and improves SpreadAct() mind-module.

We have a problem where the AI Mind is calling Indicative() two times in a row for no good reason. After a what-think query, the AI is supposed to call Indicative() a first time, then ConJoin(), and then Indicative() again. We could make the governance depend upon either the 840=THINK verb or upon the conj-flag from the ConJoin() module, which, however, is not set positive until control flows the first time through the Indicative() module. Although we have been setting conj back to zero at the end of ConJoin(), we could delay the resetting in order to use conjas a control-flag for whether or not to generate thought-clauses joined by one or more conjunctions. Such a method shifts the problem back to the ConJoin() module, which will probable have to check conceptual memory for how many ideas have high activation above a certain threshold for warranting the use of a conjunction. Accordingly we go into the Table of Variables webpage and we write a description of conj as a two-purpose variable. Then we need to decide where to reset conj back to zero, if not at the end of Indicative(). We move the zero-reset of conjfrom ConJoin() to the EnThink() module, and we stop getting more than one call to Indicative() in normal circumstances. However, when we input a what-query, which sets the whatcon variable to a positive one, we encounter problems.

Suddenly it looks as though answers to a what-think query have been coming not from SpreadAct(), but simply from the activation of the 840=THINK concept. It turns out that a line of "psyExam" code was missing from a SpreadAct() search-loop, with the result that no engrams were being found or activated -- which activation is the main job of the SpreadAct() module.