This page refers you to
for the English-speaking MindForth AI source code.

You may separately download from
in order to run the artificial intelligence in Win32Forth.

Recent Work-in-Progress

MindForth Programming Journal (MFPJ)

1 Fri.6.JUL.2012 -- Debugging after Major Code Revision

In the MindForth artificial intelligence (AI) we are now letting
the AI run in tutorial mode without human input in order to
troubleshoot any glitches that occur after the major changes
of the most recent release. Without human intervention and under
the influence of the KbTraversal module, the AI calls various
subroutines to prompt a dialog with any nearby human. We observe
some glitches that are due perhaps to a lack of proper parameters
when a subroutine is called. We intend to debug the calling of the
various subroutines so that we may display an AI Mind that thinks
rationally not only when left to its own devices but also when the
AI must think in response to queries or comments from human users.

2 Sat.7.JUL.2012 -- Solving a Problem with WhatAuxSDo

In the course of letting MindForth run without human input, we noticed
that eventually the WhatAuxSDo module was called for the subject of
concept #56 "YOU" and the AI erroneously asked "WHAT DO ERROR DO".
By inserting a diagnostic message, we learned that WhatAuxSDo was
not finding a "subjnum" value for the #56 "YOU" concept and thus
could not find the word "YOU" in a search of the English "En" array.
We went into the EnBoot sequence and changed the "num" value for "YOU"
from zero ("0") to one ("1"). The AI correctly said, "WHAT DO YOU DO".
However, we may need to debug even further and find out why the
proper value of "num" for "YOU" is not being set duriong the output.

3 Sun.8.JUL.2012 -- Tightening Code for Searchability

When we search the free AI source code for "2 en{" which should
reveal any storing or retrieval of a "num" value, we do not find
any code for storing "num" in the English lexical array. Therefore
we should search for "5 en{" to see where the part-of-speech "pos"
is stored. We do so, and still we do not find what we need. Then
we try searching for "5 en{" with an extra blank space in the search,
and we discover that a form of "pos" is stored both in EnVocab and
in OldConcept. At the same time we see that "num" is also stored
in the same two mind-modules. Now we should be able to troubleshoot
the problem and find out why English lexical "num" is not being stored
during processes of thought. First however, we will try to tighten up
the code so that only one space intervenes for future occasions when
we are trying to find instances of array-manipulation code.

4 Wed.11.JUL.2012 -- Num(ber) in the English Lexical Array

We need to discover where elements of the flag-panel are inserted
into nodes of the English lexical array, so that the "num(ber)" value
may be stored properly as the AI Mind continues to think and to respond
to queries from human users.

5 Fri.13.JUL.2012 -- Correcting Fundamental Flaws

Today in the EnBoot English bootstrap module we are making a blanket
change by moving the EnVocab calls down to be on the same line of code
as the calls to InNativate, so that the "num(ber)" setting will go
properly into EnVocab. Our recent troubleshooting has revealed that
WhatAuxSDo needs to find a "num" value in the English lexical array
in order to function properly.

6 Sat.14.JUL.2012 -- Tracking Num(ber) Values

Next we need to zero in on how the AI assigns "num(ber)" tags
during the recognition of words. In OldConcept, it may be necessary
to store a default, such as "num" or "unk" and then to test for
any positive "ocn" that will simply override the default.

Since we rely on OldConcept to store the number tag, we may need
to track where the number-value comes from. AudInput has some
sophisticated code which tentatively assigns a plural number
when the character "S" is encountered as the last letter in
a word. In the work of 4nov2011 we started assigning zero as
a default number for the sake of the EnArticle module, but
we may need to change the AudInput module back to assigning
one ("1") as the default number.

7 Mon.16.JUL.2012 -- Avoiding Unwarranted Number Values

If the most recent "num(ber)" of a word like "ROBOTS" is found
to be "2" for plural, we do not want the AI to make the false
assumption that the "num(ber)" of the "ROBOTS" concept is inherently
plural. Yet we want words like "PEOPLE" or "CHILDREN" to be
recognized as being plural.

8 Tues.17.JUL.2012 -- Making Sure of Lexical Number

We may need to go into the NounPhrase subject-selection process
and capture the num(ber) value of the lexical item being re-activated
within the English lexical array.

See also:

MindForth discussion at

=== Code ===
:  KbRetro  ( retroactive adjustment of knowledge base )
  oldpsi @ 27 =  oldpsi @ 32 =  OR IF  \ yes or no 2jul2011
  \ CR ."  KbRetro: answer is " oldpsi @ .  \ 2jul2011
    oldpsi @ 27 = IF  \ 27=NO; 2jul2011
      64  tkbn @  1 psi{ ! \ high noun activation 21jul2011
      64  tkbv @  1 psi{ ! \ set high activation? 2jul2011
      12  tkbv @  3 psi{ ! \ set 12=NOT jux flag; 2jul2011
  \ CR ."  KbRetro: answer is No "  \ 2jul2011
    THEN  \ End of test for "No" answer; 2jul2011
    oldpsi @ 32 = IF  \ 32=YES; 2jul2011
      64  tkbv @  1 psi{ ! \ set high activation? 2jul2011
  \ CR ."  KbRetro: answer is Yes "  \ 2jul2011
    THEN \ End of test for "Yes" answer; 2jul2011
  ELSE  \ if neither; 2jul2011
    0  tkbn @  4 psi{ ! \ delete pre-tag for noun; 2jul2011
    0  tkbn @  6 psi{ ! \ delete seq-tag for noun; 2jul2011
    0  tkbv @  4 psi{ ! \ delete pre-tag for verb; 2jul2011
    0  tkbv @  6 psi{ ! \ delete seq-tag for verb; 2jul2011
  \ CR ."  KbRetro: answer is neither Yes nor No "
  THEN  \ 2jul2011
  0 kbcon !  \ temporarily here turn off kbcon;  2jul2011
  0 tkbn !  \ reset for safety;  2jul2011
  0 tkbv !  \ reset for safety;  2jul2011
;  ( End of KbRetro; return to OldConcept; 2jul2011 )

=== Demo ===

Users may demonstrate or "demo" the function of the KbRetro
module by provoking the AI Mind to ask a yes-or-no query
after the input of an unknown plural noun, like "unicorns".
First the AI may ask, "What do unicorns do?" If the user
answers something like, "Unicorns fight battles", the AI
AskUser module may then turn the answer into a question
like, "Do robots fight battles?" Users may answer these
questions with the four possibilities of yes, no, maybe, or
nothing in order to see how the KbRetro module works.
In the Diagnostic mode of the JavaScript AiMind.html program,
the values of the "jux" flag and of the "pre" and "seq" flags
are visible. Likewise in MindForth the AI can be stopped and
the ".psi" report can be run to make the flag-panes of the
Psi concept array visible. The AI may also behave differently
after each answer, perhaps making the negational statement
after a "No" answer or moving on to another topic if the
answer is not "Yes" or "No".

=== Import ===

The function of KbRetro is significant for several reasons.
It is one of the first enhancements of the AI Mind to show
sophisticated, human-like thinking. It shows the interdependence
of various parts of the AI Mind, because all the mind-modules
must cooperate to preserve the negationality of any idea
negated by human users with trustworthy authority.

German DeKi AI

MindForth is being implemented as a German-speaking AI at

with updates at

and with associated German-AI files at


Душка Искусственный Интеллект
Get A Free Russian Keyboard from!

Return to top; or to
German AI User Manual or
AiMind.html in English or Dushka.html in Russian or
iForth to run MindForth Supercomputer AI in English or Wotan Supercomputer AI in German.
Join the AGI Mailing List to discuss Artificial General Intelligence (AGI).