( 24jan13A.F -- modification of 2jan13A.F MindForth )
( Released under GNU General Public License V2 )
( http://gpl-violations.org -- see NYT Sun.26.SEP.2010. )
( May be ported to new language and app store marketed. )
( May be named "Mind.F" or any "Filename.F" you choose. )
( Rename any Mind.F.txt as simply Mind.F for Win32Forth. )
( http://home.planet.nl/~josv/w32for42_671.exe )
( http://prdownloads.sourceforge.net/win32forth/W32FOR42_671.zip?download )
( http://code.google.com/p/mindforth/wiki/IntelForth )
( http://store.kagi.com/cgi-bin/store.cgi?storeID=AMP_Live )
( http://www.winzip.com/aboutzip.htm tells about WinZip. )
( Download and unzip W32FOR42_671.zip to run MindForth. )
( Run the AI with Win32Forth by issuing three commands: )
( win32for.exe [ENTER] )
( fload Mind.f [ENTER] )
( MainLoop [ENTER]. )
( To halt the AI Mind, press the ESCAPE key at any time. )
( Ask or answer questions about MindForth AI on Usenet. )
( AI codebase below fills blank space with Usenet links )
( http://groups.google.com/group/comp.lang.forth/topics )
( http://www.scn.org/~mentifex/DeKi.txt German Wotan AI )
( http://www.scn.org/~mentifex/DeKiUser.html AI Manual )
( http://www.scn.org/~mentifex/mindforth.txt Win32Forth )
( http://www.scn.org/~mentifex/AiMind.html in JavaScript )
( http://www.scn.org/~mentifex/Dushka.html is Russian AI )
( http://www.scn.org/~mentifex/RuAiUser.html AI Manual )
( http://bookstore.iuniverse.com/Products/SKU-000540906/AI4U.aspx )
( http://www.amazon.com/The-Art-Meme-ebook/dp/B007ZI66FS )
( http://code.google.com/p/mindforth/wiki/UserManual )
( Please make a copy of this AI and host it on your website. )
( http://code.google.com/p/mindforth/wiki/ChangeLog data )
\ 12nov12A.F moves input words through AudBuffer and OutBuffer.
\ 15nov12A.F stubs in the VerbGen module for generating verbs.
\ 20dec12A.F introduces InFerence module for machine reasoning.
\ 21dec12A.F troubleshoots InFerence with diagnostic messages.
\ 22dec12A.F finds alternate auditory engrams for inferences.
\ 25dec12A.F achieves inferences about new input not held in KB.
\ 27dec12A.F feeds inference into AskUser for a yes-or-no query.
\ 28dec12A.F displays internal mental time and ReJuvenate count.
\ 29dec12A.F asks user to confirm or deny inference; adjusts KB. 
\  2jan13A.F prevents inference about a subject lacking a verb.
\ 23jan13A.F troubleshoots the comprehension of objectless verbs.
\ 24jan13A.F comprehends quasi-intransitive verbs without objects.
DECIMAL  ( use decimal numbers )
variable abc  ( AudBuffer transfer character; 8nov2012 )
variable act 0 act ! ( activation level  )
variable actbase ( AudRecog discrimination activation base)
variable actran  ( PsiDecay holder of act-levels; 16may2011 )
variable adverbact 0 adverbact ! ( 29aug2008 adverb test )
variable adjcon  ( insert-adjective condition-flag; 16sep2011 )
variable aftjux  ( after-jux for negation of verb of being )
variable anset  ( Before vowel set article AN insertion )
variable atcd  ( 30dec2009 "antecedent" for EnPronoun )
variable aud  ( auditory recall-tag for activating engrams)
variable audbase  ( recall-vector for VerbGen;  8nov2012 )
variable audjuste ( NounPhrase motjuste aud to SpeechAct )
variable audme  ( tag to find "ME" in auditory memory )
variable audnum  ( de-globalizing the "num" variable; 8nov2012 )
variable audpsi  ( de-globalizing the "psi" variable )
variable audrec  ( 6may2009 replacing "psi" in AudRecog )
variable audrun 1 audrun ! ( counter of loops through AudRecog )
variable audstop  ( flag to stop SpeechAct after one word )
variable audverb  ( psi number of an input verb; 27dec2012 )
variable b01  ( buffer character 01 in OutBuffer; 12nov2012 )
variable b02  ( buffer character 02 in OutBuffer; 12nov2012 )
variable b03  ( buffer character 03 in OutBuffer; 12nov2012 )
variable b04  ( buffer character 04 in OutBuffer; 12nov2012 )
variable b05  ( buffer character 05 in OutBuffer; 12nov2012 )
variable b06  ( buffer character 06 in OutBuffer; 12nov2012 )
variable b07  ( buffer character 07 in OutBuffer; 12nov2012 )
variable b08  ( buffer character 08 in OutBuffer; 12nov2012 )
variable b09  ( buffer character 09 in OutBuffer; 12nov2012 )
variable b10  ( buffer character 10 in OutBuffer; 12nov2012 )
variable b11  ( buffer character 11 in OutBuffer; 12nov2012 )
variable b12  ( buffer character 12 in OutBuffer; 12nov2012 )
variable b13  ( buffer character 13 in OutBuffer; 12nov2012 )
variable b14  ( buffer character 14 in OutBuffer; 12nov2012 )
variable b15  ( buffer character 15 in OutBuffer; 12nov2012 )
variable b16  ( buffer character 16 in OutBuffer; 12nov2012 )
variable bday ( day of birth reveals oldest living AI Mind)
variable becon 0 becon !  ( detect be-verb for InFerence 18dec2012 )
variable beflag 0 beflag ! ( 23apr2009 for InStantiate )
variable beg  1 beg ! ( "beginning" flag for word engrams )
variable bhour ( hour of birth for user interface display )
variable bias 5 bias ! ( Parser; newConcept: expected POS )
variable binc  ( OutBuffer "b" increment for VerbGen 12nov2012 )
variable bminute ( minute of birth: user interface display)
variable bmonth ( month of birth: user interface display )
variable bsec ( second of birth: user interface display)
variable byear ( MainLoop; TuringTest HCI -- year of birth)
variable c01  ( character in AudBuffer; 12nov2012 )
variable c02  ( character in AudBuffer; 12nov2012 )
variable c03  ( character in AudBuffer; 12nov2012 )
variable c04  ( character in AudBuffer; 12nov2012 )
variable c05  ( character in AudBuffer; 12nov2012 )
variable c06  ( character in AudBuffer; 12nov2012 )
variable c07  ( character in AudBuffer; 12nov2012 )
variable c08  ( character in AudBuffer; 12nov2012 )
variable c09  ( character in AudBuffer; 12nov2012 )
variable c10  ( character in AudBuffer; 12nov2012 )
variable c11  ( character in AudBuffer; 12nov2012 )
variable c12  ( character in AudBuffer; 12nov2012 )
variable c13  ( character in AudBuffer; 12nov2012 )
variable c14  ( character in AudBuffer; 12nov2012 )
variable c15  ( character in AudBuffer; 12nov2012 )
variable c16  ( character in AudBuffer; 12nov2012 )
variable caller  ( debug-identifier of calling module )
variable cns  2048 cns ! ( MindGrid size; doubled 3aug2012 )
variable coda  128 coda ! ( memory recycled in ReJuvenate)
variable cognum  ( grammatical number of cogpsi; 22oct2011 )
variable cogpsi  ( new noun being learned; 17oct2011 )
variable conj  ( OldConcept; ConJoin: conjunction )
variable ctu ( continuation-flag for "Aud" array phonemes )
variable dba ( case for nouns; person for verbs; 8nov2012 )
variable defact ( default activation for NounPhrase; 9oct2011 )
variable defartcon ( set definite article condition ) 
variable dirobj  ( indicates seeking for a direct object )
variable dobseq  ( for transfer within InFerence; 22dec2012 )
variable dopsi  ( direct-object-psi to calculate "thotnum")
variable edge  0 edge ! ( Rejuvenate: edge-of-thought flag)
variable en8 ( EnVocab recall-vector "aud" in Rejuvenate )
variable enx ( holds concept-number in transfer to English)
variable eot ( end-of-text for use in AudInput ) 
variable fex ( holds fiber-out concept up from Psi memory )
variable fin ( holds fiber-in concept for Psi array access)
variable firstword ( for identifying input of a query 19aug2011 )
variable flex1  ( "I" or "S" element of SpeechAct inflection )
variable flex2  ( "N" as part of "ING" SpeechAct inflection )
variable flex3  ( "G" as part of "ING" SpeechAct inflection )
variable fyi 0 fyi ! ( rotates through display modalities )
variable fyipsi  ( psi source-node in SpreadAct; 17oct2011 )
variable gencon ( VerbGen status flag from Wotan; 22dec2012 ) 
variable ghost 0 ghost ! ( to switch from "a" to "the" )
variable glot 1 glot ! ( flag for which language to think in )
variable greet 640 greet ! ( greeting-trigger; 16oct2010 )
variable guspsi  ( concept-tag attached to taste-memories )
variable gusrec  ( for external recognition by GusRecog )
variable hipsi   ( "high-psi" tag on wavecrest concept )
variable hl ( possible standard instead of "glot"; 20aug2011 )
variable holdnum  ( transfer from subject to verb;  8nov2012 )
( I = Index in loops; does not require a fetch "@" )
variable img  ( visRecog: for future use as "image" )
variable indefartcon ( set indefinite article condition )
variable indefmust ( force saying of "A" or "AN"; 20oct2011 )
variable inert  0 inert ! ( marker of no recent interaction )
variable inft  ( inference-time for AskUser 27dec2012 )
variable instnum  ( instantiation number for WhatBe questions )
variable IQ 1 IQ ! ( an invitation to code an IQ algorithm) 
variable jrt ( ReJuvenate "junior time" for memories moved)
variable jux  0 jux ! ( holds Psi # of a JUXtaposed word )
variable kbcon  ( flag for awaiting a yes-or-no answer 2jul2011 )
variable kbpsi  ( 20jan2008 an interim knowledge-base psi )
variable kbquiz 0 kbquiz !  ( flag to call kbSearch )
variable kbtv  0 kbtv !  ( KbTraversal trigger; 7aug2010 )
variable kbtqv  ( time of seq-concept found in KB; 7oct0211 )
variable kbyn  ( holds kbtv values for asking Y/N 24jun2011 ) 
variable kibosh  ( suppresses concepts failing to win selection )
variable krt ( Knowledge Representation time "t" for later)
variable lastpho  ( 24may2009 to avoid extra "S" on verbs )
variable lastword  0 lastword !  ( for zeroing "seq" tags.)
variable len  ( length, for avoiding non-words in AudInput)
variable lexact  ( testing a lexical "act" for EnReify )
variable lopsi  ( "low-psi" tag on just-crested concept )
variable lurk ( counter to activate initial thinking; 19sep2010 )
variable match  ( end-of-word flag for control ) 
variable memoire  ( instead of "motjuste" in kbSearch )
variable mfn  ( "masculine feminine neuter" gender flag )
variable mfnflag ( gender flag to cause a who-query; 17aug2010 )
variable midway 1 midway ! ( limit for searching backwards)
variable monopsi ( 26jul2002 For use in audRecog module )
variable moot  ( flag to prevent associations in DO-queries )
variable morphpsi ( for audRecog recognition of morphemes )
variable motjuste ( best word for inclusion in a thought )
variable nacpsi   ( 9may2009 de-globalized psi for NounAct)
variable negjux  ( flag for 12=NOT juxtaposed to a verb; 9oct2011 )
variable nen  0 nen ! ( English lexical concept number )
variable newpsi   ( for singular-nounstem assignments ) 
variable nlt  0 nlt !  ( not-later-than among time-points )
variable nounlock ( for a verb to lock onto a seq-nounl 8oct2011 )
variable nounval 0 nounval ! ( from NounPhrase to MounAct )
variable nphrnum 0 nphrnum ! ( NounPhrase number )
variable nphrpos 0 nphrpos ! ( for testing in EnCog )
variable num 0 num !  ( number-flag for the psi array )
variable numflag ( 4dec2009 for selection of verb-forms )
variable numsubj ( 13apr2010 for number of subject )
variable nwc    ( new-word-count for noun-stem recog )
variable objold  ( a test for optimizing slosh-over; 12oct2010 )
variable obstat ( Lets AudInput psi-damp a reentrant word.)
variable ocn  ( old-concept-number for EnVocab; 14oct2011 )
variable oldact ( show the source of spreading activations)
variable oldpos ( old part-of-speech for use with verbs )
variable oldpsi ( used in OldConcept to de-globalize "psi")
variable olfpsi ( concept-tag attached to smells in memory)
variable olfrec ( for external recognition by OlfRecog )
variable onset 0 onset ! ( of an auditory memory engram )
variable opt  ( option, for flushing out a part of speech )
variable ordo 0 ordo ! ( from JSAI; AudInput word-order )
variable pcn ( predicate concept number; 17jul2012 )
variable penultpho  ( 17may2009 next-to-last phoneme )
variable pho ( phoneme of input/output & internal reentry ) 
variable phodex  0 phodex ! ( pho-index for AudBuffer 14nov2012 )
variable pos  ( old- & newConcept; enVocab: part-of-speech)
variable pov  ( point-of-view: #35 internal; *42 external )
variable prc  ( provisional recognition in AudRecog; 27dec2012 )
variable pre ( previous concept associated with a concept )
variable precand  ( inviolate "pre" candidate from JSAI )
variable predflag ( indicates predicate nominative 11sep2010 )
variable prednom  ( predicate nominative for InFerence; 18dec2012 )
variable predpos 0 predpos ! ( Predicate part of speech )
variable prejux  ( previous jux to carry NOT to verb 21jul2011 )
variable prepho   ( 17may2009 previous phoneme )
variable prepsi ( synaptic deglobalized "pre" in SpreadAct)
variable preset 0 preset ! ( for setting InStantiate "pre")
variable prevtag  ( from JSAI; for use in InStantiate )
variable prox1  ( first proximate concept of input cluster )
variable prox2  ( for determining association among engrams )
variable prox3  ( for ReActivate to impose unequal activation )
variable proxcon  ( flag to indicate usage of prox variables )
variable prsn  0 prsn ! ( 1st, 2nd, 3rd person )
variable psi ( identifier of a psi concept in Psi mindcore)
variable psi1 ( activation-level at each node of verb )
variable psi3 0 psi3 ! ( for VerbPhrase to find negation 25jun2011 ) 
variable psi8 ( tutorial enx in tutorial or diagnostics; 12oct2011 )
variable psibase ( winning psibase with winning actbase )
variable putdbav ( putative dba for verbs; 27dec2012 )
variable putnum  ( putative number for subj-verb agreement )
variable questype  ( oldConcept; Conjoin: "question-type" )
variable quiet 1 quiet ! ( status flag for auditory input )
variable quo ( 27dec2009 query-object for EnCog response )
variable quobj ( query-object for yes-or-no questions 24jun2011 )
variable qup ( 28dec2009 query-predicate if verb not given )
variable qusub  ( internal provisional query-subject; 3oct2010 )
variable quverb  ( query-verb for yes-or-no questions 24jun2011 )
variable recnum  ( recognized number of a recognized word 19jul2011 )
variable retropsi   ( for AudInput and Audmem noun-stems )
variable residuum 0 residuum ! ( activation after PsiDamp )
variable rjc  0 rjc ! ( rejuvenation counter for tracking )
variable rsvp 1000 rsvp ! ( user-response delay-counter)
variable rv ( "recall-vector" for diagnostic display )
variable scn  ( subject concept number; 17jul2012 )
variable seq  ( subSEQuent concept associated with another)
variable seqneed  ( noun/pronoun or verb needed as a "seq" )
variable seqpos  ( "seq" concept part-of-sppeech 1oct2011 )
variable seqpsi ( synaptic deglobalized "seq" in SpreadAct)
variable seqtqv  ( for transfer during InFerence; 18dec2012 )
variable seqverb  ( interstitial carrier for InFerence; 18dec2012 )
variable singflag  ( singularity flag for singular nouns )
variable snu ( subj# as parameter for verb-selection 21dec2012 ) 
variable spacegap  ( to add gap of one space in SpeechAct )
variable spike  ( 1aug2005: for potential use in SpreadAct)
variable spt  ( AudMem; AudInput: blank space time )
variable stemgap  ( for avoiding false audRecog stems )
variable stempsi  ( for singular noun-stem recognition )
variable subj     ( flag to supercharge subject-nouns )
variable subjectflag  ( 3dec2009 a default for NounPhrase )
variable subjnom  ( subject-nominative for InFerence; 18dec2012 )
variable subjnum ( for agreement with predicate nominative )
variable subjold ( old subject as default candidate 28sep2010 )
variable subjpsi  ( parameter to govern person of verb-forms )
variable sublen   ( length of audRecog subpsi word-stem )
variable subpsi ( for AudRecog of sub-component wordstems )
variable supsi    ( subject-psi for calculating "thotnum" )
variable svo2  ( second item among subj-verb-obj; 3sep2011 )
variable svo3  ( third item among subj-verb-obj; 28aug2011 )
variable t  0 t ! ( time incremented during AudMem storage)
variable t2s ( auditory text-to-speech index for SpeechAct)
variable tacpsi  ( concept-tag attached to tactile engrams)
variable tacrec   ( for external recognition by TacRecog )
variable tbev  ( time of be-verb for use with aftjux 27jul2011 )
variable tkbn  ( time of KbRetro noun adjustment; 2jul2011 )
variable tkbv  ( time of KbRetro verb adjustment; 2jul2011 )
variable topic  ( topic for a question to be asked )
variable topicnum ( grammatical number of question "topic" )
variable tov 1 tov ! ( time-of-voice for keeping track )
variable tpeg  ( pegging the time-slice of a subject-noun )
variable tqv  ( tempus quod vide for specific psi instance )
variable transcon 1 transcon !  ( transitive verb? 24jan2013 )
variable trc  ( 20dec2009 tabula-rasa-counter like rjc )
variable tsday    ( for AudListen transcript-mode headers )
variable tseln  ( time of selection of noun;  8may2011 )
variable tselo  ( time of selection of object 30jul2011 )
variable tsels  ( time of selection of subj. 28jul2011 )
variable tselv  ( time of selection of verb;  8may2011 )
variable tshour   ( AudListen )
variable tsminute ( AudListen )
variable tsmonth  ( AudListen )
variable tsn  ( time of seqneed for InStantiate;  1jul2012 )
variable tssecond ( AudListen )
variable tsyear   ( AudListen )
variable tult     ( t penultimate, or time-minus-one )
variable unk  ( "unknown" variable for general use ) 
variable upnext  ( Flag lets new input de-crest previous. )
variable urpre ( original pre during call to other module )
variable urpsi ( original psi for use in psiDamp, etc. )
variable vacpsi  ( de-globalized psi for VerbAct; 27sep2010 )
variable vault 611 vault ! ( size of EnBoot;  8nov2012 )
variable vbpsi   ( verb-psi for calculating "thotnum" )
variable verblock ( for subject-noun to lock onto seq-verb; 8oct2011 )
variable verbpsi  ( for transit into WhatAuxSVerb 13jun2011 )
variable verbval  ( transfer from VerbPhrase to VerbAct )
variable vispsi ( concept-tag attached to images in memory)
variable visrec   ( for external recognition by VisRecog )
variable vphract  ( verb phrase activation level 19jun2011 )
variable vphraud  ( holds aud-fetch for SpeechAct; 25jun2011 )
variable vpos     ( verb part of speech for inflections )
variable vrsn 20130124 vrsn ! ( version identifier; 24jan2013 )
variable whoflag   0 whoflag !   ( for InStantiate )
variable wordend  ( for singular noun-stem assignments )
variable yesorno 0 yesorno ! ( in conjunction w. KbSearch )
variable yncon ( statuscon to trigger yes-or-no query 2jul2011 )
variable ynverb  ( yes-or-no verb for AskUser; 24jun2011 )
variable zone  ( time-zone for "pre" and "seq" searches )


:  CHANNEL   ( size num -< name >- )
  CREATE   ( Returns address of newly named channel. )
  OVER     ( #r #c -- #r #c #r )
  ,        ( Stores number of rows from stack to array.)
  * CELLS  ( Feeds product of columns * rows to ALLOT.)
  ALLOT    ( Reserves given quantity of cells for array.)
  DOES>    ( member; row col -- a-addr )
  DUP @    ( row col pfa #rows )
  ROT *    ( row pfa col-index )
  ROT +    ( pfa index )
  1 +      ( because first cell has the number of rows.)
  CELLS +  ( from number of items to # of bytes in offset )
;


cns @  9  CHANNEL  psi{  ( Mindcore concept array "psi" )
cns @  9  CHANNEL   en{  ( English lexicon array "en" )
cns @  6  CHANNEL  aud{  ( Auditory memory channel "aud" )


:  PsiClear  ( set Psi activations to zero; 26sep2010 )
  1   t @  1 +  DO
    0 I 1 psi{ !
  -1 +LOOP
; ( End of PsiClear )


:  TabulaRasa
  0 trc !  ( 20dec2009 tabula-rasa-counter like jrc )
  1 tov !
  BEGIN  cns @  1  DO
    0 I  trc @  psi{ !
  LOOP
  1  trc +!
  trc @  9  <  WHILE  \ Cover 9 columns 0-8; 29sep2011
  REPEAT
  0 trc !
  1 tov !
  BEGIN  cns @  1  DO
    0 I  trc @   en{ !
  LOOP
  1  trc +!
  trc @ 9 < WHILE  \ Cover #0 to #8, i.e. 9; 10nov2012
  REPEAT
  0 trc !
  1 tov !
  BEGIN  cns @  1  DO
    0 I  trc @  aud{ !
  LOOP
  1  trc +!
  trc @  6  <  WHILE
  REPEAT
  cns @  1  DO
    32   I  0   aud{ !
  LOOP
; ( End of TabulaRasa )


\ NounClear is a mechanism called by NounPhrase to set
\ activation on nouns and pronouns to zero just before
\ a pair of old and new noun-engrams is reduced even
\ further into negative activation by neural inhibition.
\ The purpose is to prevent the build-up of stray activations.
:  NounClear ( remove activation from all nouns ) \ 20dec2009
  midway @  cns @  DO     \  Loop backwards over time.
    I 5 psi{ @ 5 = I 5 psi{ @ 7 = OR IF \ pro(noun) 18aug2011
      I     1 psi{ @ 0 > IF \ avoid inhibited engrams; 26aug2011
        0 I 1 psi{ !  \ 20dec2009 Set noun to zero activation.
      THEN  \ end of test for positive activation; 26aug2011
    THEN              \ 20dec2009 End of test for pos=5 nouns.
  -1  +LOOP  \  End of backwards loop looking for pos=5 nouns.
; ( End of NounClear; return to NounPhrase; 18aug2011 )


:  VerbClear ( remove activation from all verbs )
  midway @  t @  DO
    I     5 psi{ @ 8 = IF
      I     1 psi{ @ 0 > IF \ avoid inhibited engrams; 26aug2011
        0 I 1 psi{ !
      THEN  \ end of test for positive activation; 26aug2011
    THEN
  -1  +LOOP
;  ( End of VerbClear )


:  VerbClip ( lower activation on all verbs )
  midway @  t @  DO
    I     5 psi{ @ 8 = IF
      I   1 psi{ @ 12 > IF  \ test; REMOVE? 25aug2010
      6 I 1 psi{ +!   \ test; 25aug2010
      THEN
    THEN
  -1  +LOOP
; ( End of VerbClip; return to AudInput )


:  PsiDecay ( let conceptual activations dwindle )
  fyi @ 2 > IF CR
    ."       PsiDecay called to reduce all "
    ." conceptual activations." CR
  THEN
  midway @  t @  DO
    I    1 psi{ @ 0 > IF \ avoid inhibited nodes; 9sep2010
      I  1 psi{ @ 40 > IF  34 actran ! THEN  \  4aug2011
      I  1 psi{ @ 50 > IF  35 actran ! THEN  \  4aug2011
      I  1 psi{ @ 60 > IF  36 actran ! THEN  \  4aug2011
      I  1 psi{ @ 70 > IF  37 actran ! THEN  \  4aug2011
      I  1 psi{ @ 80 > IF  38 actran ! THEN  \  4aug2011
      I  1 psi{ @ 90 > IF  39 actran ! THEN  \  4aug2011
    actran @ 0 > IF actran @ I 1 psi{ ! THEN  \ 16may2011
      0 actran !  \ Reset to zero for safety; 16may2011
        I  1 psi{ @  1 -        I  1  psi{  !
    THEN  \ end of test to skip inhibited nodes; 9sep2010
    I  1  psi{ @  0 < IF  1  I  1  psi{ +! THEN  \ 6sep2010
    I  0  psi{ @ 830 = IF  0 I  1  psi{  ! THEN  \ 830=DO
    I  0  psi{ @ 781 = IF  0 I  1  psi{  ! THEN  \ 781=WHAT
    I  0  psi{ @ 117 = IF  0 I  1  psi{  ! THEN  \ 117=THE
  -1  +LOOP
; ( http://code.google.com/p/mindforth/wiki/PsiDecay )


:  PsiDamp ( reduce activation of a concept )
  ( 33-48 = consciousness tier where concepts win selection. )
  ( 17-32 = subconscious where concepts remain available. )
  (  1-16 = noise tier below logical association threshold. )
  16 residuum !
  fyi @ 2 > IF CR
  ."     PsiDamp called for urpsi = " urpsi @ .
  ."  by module ID #" caller @ .
  caller @  42 = IF ." WhatAuxSDo " THEN
  caller @  51 = IF ." AuxVerb "    THEN
  caller @  62 = IF ." VerbPhrase " THEN
  caller @  66 = IF ." NounPhrase " THEN
  caller @ 104 = IF ." AudInput "   THEN
  caller @ 148 = IF ." Activate "   THEN
  caller @ 3535 = IF ." AudInput "  THEN
  caller @ 6967 = IF ." EnCog "     THEN \ test; 26sep2010
  caller @ 8766 = IF ." WhoBe "     THEN \ test; 26sep2010
  caller @ 8773 = IF ." WhatBe "    THEN \ changed; 25feb2011
  0 caller !
  THEN
  urpsi @ 791 = IF  \ if urpsi is 791=WHO; 10nov2012
    1 residuum !   \ deemphasize WHO; test; 25jul2010
  THEN  \ test; 25jul2010
  ( code to prevent psi-damping inhibited concepts; 6sep2010 )
  midway @  t @  DO
            I  0  psi{ @ urpsi @ = IF \ concept found; 6sep2010
            I  1  psi{ @ -1 > IF  \ positive act.? 16aug2011
 residuum @ I  1  psi{ !  \ psi-damp only high activations
      THEN  \ end of test for only positive act.; 6sep2010
    THEN  \ end of test for particular concept; 6sep2010
  -1 +LOOP
  0 residuum ! 
; ( http://code.google.com/p/mindforth/wiki/PsiDamp )


:  EnDamp ( deactivate English lexicon concepts )
  midway @  t @  DO
    0 I  1  en{ !
  -1 +LOOP
;  ( End of EnDamp )


:  AudDamp ( deactivate auditory engrams )
  midway @  t @  DO
    0 I  1 aud{ !
  -1 +LOOP
;  ( End of AudDamp )


:  .psi ( show concepts in the Psi array )
  CR  ." Psi mindcore concepts"
  CR  ." time: psi act num jux pre pos seq enx "
  t @ 1+  midway @ DO
    I    0  psi{ @ 0 > IF
      CR I . ." : "
      I  0  psi{ @ . ." "
      I  1  psi{ @ . ." "
      I  2  psi{ @ . ." "
      I  3  psi{ @ . ." "
      I  4  psi{ @ . ." "
      I  5  psi{ @ . ." "
      I  6  psi{ @ . ." "  \ Show tqv-point; 12oct2011
      I  7  psi{ @ . ." "  \ new "seq" position 12oct2011
      I  8  psi{ @ enx ! enx @ .  \ new "enx"; 12oct2011
      enx @ 0 > IF
        ." to "
        I unk !
        0 aud !
        midway @ unk @  DO
          I   0 en{ @  enx @ = IF
            I 8 en{ @  aud  !  \ with dba; 10nov2012
            aud @ 0= NOT IF
              BEGIN
                aud @ 0 aud{ @ EMIT
                1 aud +!
                aud @ 0 aud{ @ 32 =
              UNTIL
              ."  "
            THEN
            0 aud !
          LEAVE  ( One engrammed word is enough. )
          THEN
        -1  +LOOP
      THEN
    THEN
  LOOP
  CR ." time: psi act num jux pre pos tqv seq enx "  0 unk !
  CR ." You may enter .psi or .en or .aud to view memory "
  ." engrams or "
  CR ." MainLoop [ENTER] to erase all memories "
  ." and restart the Mind."
  CR
;  ( End of .psi post-Escape report )


:  .en ( show vocabulary in the English lexicon array )
  CR ." English lexical fibers"
  CR ." t nen act num mfn dba fex pos fin aud:" \ 18dec2012
  t @  1+  midway @  DO
    I  0  en{ @  unk !
    unk @  0 > IF ( display positive data )
      CR I . unk @ . ." "
      I 1 en{ @ . ." "
      I 2 en{ @ . ." "
      I 3 en{ @ . ." "
      I 4 en{ @ . ." "
      I 5 en{ @ . ." "  \ dba; 10nov2012
      I 6 en{ @ . ." "
      I 7 en{ @ . ." "
      I 8 en{ @ aud !  aud @ . ."  to "
      BEGIN
        aud @ 0 aud{ @ EMIT  1 aud +!
        aud @ 0 aud{ @ 32 =
      UNTIL
      ."  "
      0 aud !
    THEN
  LOOP
  0 unk !
  CR ." t nen act num mfn dba fex pos fin aud" CR
  CR ." You may enter .psi or .en or .aud to view memory "
  ." engrams or "
  CR ." MainLoop [ENTER] to erase all memories "
  ." and restart the Mind."
  CR
;  ( End of .en post-Escape report )


:  .aud ( show engrams in the auditory memory array )
  CR ." Auditory memory nodes"
  CR  ."  t pho act pov beg ctu audpsi"
  t @  1+  1 DO           ( Show the entire Aud channel.)
    CR    I . ." "
    I 2 aud{ @ 123  =  IF
      ."     { "
    THEN
    I 0 aud{ @  33  <  IF
      ."  "  ( show a blank )
    ELSE
      I 0 aud{ @ EMIT ."  "
      I 1 aud{ @ .     ." "
      I 2 aud{ @ EMIT ."  "
      I 3 aud{ @ .     ." "
      I 4 aud{ @ .     ." "
      I 5 aud{ @ .
    THEN
    I 2 aud{ @ 125  =  IF
      ."     } "
    THEN
    I cns @ > IF QUIT THEN  \ safety measure; 26jul2010
  LOOP
  CR ." You may enter .psi or .en or .aud to view memory "
  ." engrams or "
  CR ." MainLoop [ENTER] to erase all memories "
  ." and restart the Mind."
  CR
;  ( End of .aud post-Escape report )


:  .out ( show characters in the OutBuffer; 12nov2012 )
  CR ." AudBuffer word = " CR  \ 15nov2012
  c01 @ EMIT  c02 @ EMIT  c03 @ EMIT  c04 @ EMIT
  c05 @ EMIT  c06 @ EMIT  c07 @ EMIT  c08 @ EMIT
  c09 @ EMIT  c10 @ EMIT  c11 @ EMIT  c12 @ EMIT
  c13 @ EMIT  c14 @ EMIT  c15 @ EMIT  c16 @ EMIT
  CR ." OutBuffer word = " CR  \ 14nov2012
  b01 @ EMIT  b02 @ EMIT  b03 @ EMIT  b04 @ EMIT
  b05 @ EMIT  b06 @ EMIT  b07 @ EMIT  b08 @ EMIT
  b09 @ EMIT  b10 @ EMIT  b11 @ EMIT  b12 @ EMIT
  b13 @ EMIT  b14 @ EMIT  b15 @ EMIT  b16 @ EMIT
  CR ." 1234567890123456 " \ show right-justification
  CR  \ Return to left margin for Forth ok prompt.
;  ( End of OutBuffer report; 12nov2012 )


: .echo ( show what the robot just said )
  ( As on Usenet, user responds _below_ the AI output. )
  fyi @ 2 = IF
    CR ." Tutorial mode is now in effect. "
    ."  Enter input or wait for output."
  THEN
  CR  ." Robot: "
    tov @ t @ = IF   \ 12jan2010 Test for equality.
      tov @ 1 - tov !  \ 12jan2010 Prevent infinite loops.
    THEN  \ 12jan2010 End of test for tov @ t equality.
    t @ tov @  DO
      I 0  aud{ @  0 =  IF
        ."  "
      ELSE
        I   2 aud{ @  42 = NOT IF
          I 0 aud{ @ EMIT
        THEN
      THEN
    LOOP
;  ( End of .echo )


: SpreadAct  ( spreading activation )
  PsiDecay  \ to differentiate among activations; 10aug2012
  prepsi @ 0 > IF  \ From NounAct or VerbAct; 30jun2012
    zone @ 7 -   zone @  DO
      I 0  psi{ @   prepsi @  =  IF  \ now prepsi; 15sep2010
\ CR ." SprAct: augmenting activation at time "  \ 10aug2012
\ I . ."  of prepsi " prepsi @ .  \ test; 10aug2012
             \  1   I  1 psi{ +!  \ C-ing outl 10aug2012
                8   I  1 psi{ +!  \ for queries; 10aug2012
        I zone  @  6 - > IF LEAVE THEN
      THEN
    -1  +LOOP
  THEN
  seqpsi @ 0 > IF  \ replacing seqsyn; 15sep2010
    fyi @ 3 = IF
      CR ." SprA seqpsi & spike = " seqpsi @ . spike @ . CR
    THEN
    zone @ 32 +   zone @  DO  \ Search past non-seq psi.
      I 0  psi{ @  seqpsi @  =  IF  \ replacement 15sep2010
        fyi @ 3 = IF
          CR ." SprA matching seqpsi w. spike = " \ 24sep2010
          seqpsi @ .  spike @ . CR  \ non-global 24sep2010
        THEN
        fyi @ 1 > IF
          pov @ 35 = IF
            0 psi8 !  \ new flag-panel location of "enx"; 12oct2011
            fyi @ 3 = IF
              CR ." sprdAct: seqpsi = " seqpsi @ . CR \ 24sep2010
            THEN
            midway @ t @ DO
              I   0  psi{ @ fyipsi @ = IF  \ 17oct2011
                I 8  psi{ @   psi8 !  \ new "enx"; 12oct2011
                LEAVE
              THEN
            -1  +LOOP
            midway @ t @ DO
              I   0  en{ @    psi8 @ = IF  \ new "enx"; 12oct2011
                I 7  en{ @  rv !
                LEAVE
              THEN
            -1  +LOOP
            0 rv !
            midway @ t @ DO
              I   0  psi{ @  seqpsi @ = IF  \ 15sep2010
                I 8  psi{ @   psi8 !  \ new "enx"; 12oct2011
                LEAVE
              THEN
            -1  +LOOP
            midway @ t @ DO
              I   0  en{ @    psi8 @ = IF  \ "enx"; 12oct2011
                I 7  en{ @  rv !
                LEAVE
              THEN
            -1  +LOOP
            rv @ 0 > IF
              BEGIN
                rv @ 0 aud{ @ EMIT  1 rv +!
                rv @ 0 aud{ @ 32 =
              UNTIL
            THEN
            0 rv !
            ."  "
          THEN
        THEN   \ end of FYI=1;  2aug2011
        fyi @ 2 > IF
          pov @ 35 = IF
            CR
            0 psi8 !  \ new "enx"; 12oct2011
            midway @ t @ DO
              I   0  psi{ @   fyipsi @  =  IF  \ 17oct2011
                I 8  psi{ @   psi8 !  \ "enx"; 12oct2011
                LEAVE
              THEN
            -1  +LOOP
            midway @ t @ DO
              I   0  en{ @    psi8 @ = IF   \ "enx"; 12oct2011
                I 8  en{ @  rv !   \ with dba; 10nov2012
                LEAVE
              THEN
            -1  +LOOP
            rv @ 0 > IF
              BEGIN
                rv @ 0 aud{ @ EMIT  1 rv +!
                rv @ 0 aud{ @ 32 =
              UNTIL
            THEN
            0 rv !
            ."  #" fyipsi @ . ." act " oldact @ .  \ 17oct2011
            ." at i " I . ." sprA spike "
            spike @ . ." to seqpsi #" seqpsi @ . \ 20sep2010
            midway @ t @ DO
              I   0  psi{ @  seqpsi @ = IF  \ 15sep2010
                I 8  psi{ @   psi8 !  \ "enx"; 12oct2011
                LEAVE
              THEN
            -1  +LOOP
            midway @ t @ DO
              I   0  en{ @    psi8 @ = IF  \ "enx"; 12oct2011
                I 8  en{ @  rv !   \ with dba; 10nov2012
                LEAVE
              THEN
            -1  +LOOP
            rv @ 0 > IF
              BEGIN
                rv @ 0 aud{ @ EMIT  1 rv +!
                rv @ 0 aud{ @ 32 =
              UNTIL
            THEN
            0 rv !
            CR
            ."  at act " I 1 psi{ @ . ." yields "
          THEN
        THEN    \ end of FYI=2+  2aug2011
        fyi @ 3 = IF
          ." SprA: spiking seqpsi " spike @ . seqpsi @ .
        THEN
        subjectflag @ 1 = IF  \ onto verb-nodes; 18oct2010
        ( insert diagnostic code here to troubleshoot 5aug2011 )
          spike @ I 1 psi{ +!  ( add spike to seqpsi 15sep2010 )
        ELSE  \ in all other cases, e.g. dirobj; 25jun2011
        ( insert diagnostic code here to troubleshoot 5aug2011 )
          spike @ I 1 psi{  !  ( Xfer absolute act; 25jun2011 )
        THEN  \ end of test for subject-nodes; 18oct2010
        fyi @ 2 > IF
          pov @ 35 = IF
            I 1 psi{ @ .
            fyi @ 2 > IF
              ." and zone = " zone @ .
            THEN
          THEN
        THEN
        fyi @ 3 = IF
          I 1 psi{ @ . ." (lim = 63) for t=" I rv !
          BEGIN
            -1 rv +!
            rv @ 3 aud{ @ 1 =
          UNTIL
          rv @ .
          BEGIN
            rv @ 0 aud{ @ EMIT  1 rv +!
            rv @ 0 aud{ @ 32 =
          UNTIL
          ."  engram; in sprA spike = " spike @ .
          0 rv !
        THEN
        I zone  @  6 + > IF
          fyi @ 2 > IF
            CR ." executing LEAVE at zone = " zone @ .
          THEN
          LEAVE
        THEN
        LEAVE  \ After finding one seqpsi; 13oct2010
      THEN   \ end of test for matching Psi#; 8aug2011
    LOOP
  THEN
; ( http://code.google.com/p/mindforth/wiki/SpreadAct )


:  NounAct ( re-activate all recent nodes of a concept )
  0 unk !  \ reset before using in NounAct; 8aug2011
  28 nounval !  \ test; 1sep2011
  fyi @ 2 > IF CR  \ 5jan2010 Altering the next line:
  ."     Calling NounAct (not in AI4U). nacpsi = " nacpsi @ . CR
  THEN
  nacpsi @  0 >  IF
    fyi @ 2 > IF
      CR ."       NounAct calls SpreadAct to transfer "
      CR ." proportionate activation from each node of "
      CR ." concept #" psi @ .
    THEN
    midway @   t @  DO
      I 0 psi{ @ nacpsi @ = IF
      -3 unk +!  \ for decrementing spike over time; 8aug2011
         ( insert diagnostic code here; 7sep2011 )
         I      1 psi{ @ -1 > IF \ avoid inhibition; 3sep2011
           nounval @ I  1 psi{ !  \ 3sep2011
         THEN  ( http://greenarraychips.com )
            I  0 psi{ @  781 = IF  \ 781=WHAT; 10nov2012
          0 I  1 psi{ !
            THEN  ( http://www.calcentral.com/~forth/forth )
                  12 spike !  ( Aim for ample spikes.)
          I  4 psi{ @  prepsi !  ( for SpreadAct 15sep2010 )
          I  7 psi{ @  seqpsi !  ( for SpreadAct 12oct2011 )
          I           zone !     ( for use in SpreadAct )
          I  1 psi{ @  0 = IF  0 spike ! THEN
          I  1 psi{ @  5 > IF 12 spike ! THEN
          I  1 psi{ @ 10 > IF 24 spike ! THEN  \  3nov2010
          I  1 psi{ @ 15 > IF 26 spike ! THEN  \  3nov2010
          I  1 psi{ @ 20 > IF 28 spike ! THEN  \  3nov2010
          I  1 psi{ @ 25 > IF 30 spike ! THEN  \  4jun2011
          I  1 psi{ @ 30 > IF 32 spike ! THEN  \  4jun2011
          I  1 psi{ @ 35 > IF 34 spike ! THEN  \  4jun2011
          I  1 psi{ @ 40 > IF 36 spike ! THEN  \  4jun2011
          I  1 psi{ @ 45 > IF 38 spike ! THEN  \  4jun2011
          I  1 psi{ @ 50 > IF 40 spike ! THEN  \  4jun2011
          I  1 psi{ @ 55 > IF 42 spike ! THEN  \  4jun2011
          I  1 psi{ @ 60 > IF 44 spike ! THEN  \  4jun2011
        nacpsi @ fyipsi !   \ 17oct2011
          I  1 psi{ @ oldact !
          I  5 psi{ @ oldpos !
        seqpsi @  0 > IF  \ replacement; 15sep2010
          seqpsi @ 791 = IF  \ 791=WHO; 10nov2012
            1 spike !  \ not 24 act; 11aug2010
          THEN   \ end of experiment; 11aug2010
          ( insert diagnostic code here; 8aug2011 )
        unk @ -10 < IF -10 unk ! THEN  \ limit decrement 8aug2011
        unk @ spike +!  \ decrement spike; 8aug2011 
          7865 caller !
          SpreadAct  ( for spreading activation )
          0 caller !
          0 prepsi !  \ replacing presyn; 15sep2010
          0 seqpsi !  \ replacing seqsyn; 15sep2010
        THEN
        precand @ pre !
        0 oldpos !
        0 fyipsi !  \ 17oct2011
        0 oldact !
        0  pre !
      THEN
      0 spike !  \ reset for each new loop; 14oct2010
    -1  +LOOP
  THEN
  0 spike !
; ( http://code.google.com/p/mindforth/wiki/NounAct )


:  VerbAct ( re-activate all recent nodes of a verb )
  17 verbval !  \ lowering to promote warranted assoc; 27aug2011
  fyi @ 2 > IF CR
  ."     Calling verbAct (not in AI4U). psi = " psi @ . CR
  THEN
  vacpsi @  0 >  IF  \ if a vacpsi exists; 9nov2010
    fyi @ 2 > IF
      CR ."       VerbAct calls SpreadAct to transfer "
      CR ." proportionate activation from each node of "
      CR ." concept #" psi @ .
    THEN
    vacpsi @ fyipsi !  \ a replacement variable; 17oct2011
    midway @   t @ DO
      I 0 psi{ @ vacpsi @ = IF  \ deglobalized psi; 8oct2010
        fyi @ 2 > IF
          I 1 psi{ @ 8 > IF
            ." +"
          THEN
        THEN
            I  1 psi{ @  psi1 !
          I    1 psi{ @ -1 > IF \ avoid inhibited nodes; 9sep2010
            ( insert diagnostic code here; 27aug2011 )
            moot @ 0 = IF  \ deprive queries of tags; 20aug2011
              verbval @ I  1 psi{ +!  \ CUMULATIVE for slosh-over.
            THEN  \ end of test for a moot query input; 20aug2011
          THEN  \ end of test to skip inhibited nodes; 9sep2010
            I  0 psi{ @  781 = IF  \ 781=WHAT; 11nov2012
          0 I  1 psi{ !
            THEN
          I  4 psi{ @  prepsi !  ( for SpreadAct 15sep2010 )
          I  7 psi{ @  seqpsi !  ( for SpreadAct 12oct2011 )
          I           zone !     ( for use in SpreadAct )
          I  1 psi{ @  0 = IF  0 spike ! THEN
          I  1 psi{ @  0 > IF  1 spike ! THEN
          I  1 psi{ @  5 > IF  3 spike ! THEN
          I  1 psi{ @ 10 > IF  6 spike ! THEN
          I  1 psi{ @ 15 > IF  9 spike ! THEN
          I  1 psi{ @ 20 > IF 12 spike ! THEN
          I  1 psi{ @ 25 > IF 15 spike ! THEN
          I  1 psi{ @ 30 > IF 16 spike ! THEN
          I  1 psi{ @ 35 > IF 17 spike ! THEN
          I  1 psi{ @ 40 > IF 18 spike ! THEN
          I  1 psi{ @ 45 > IF 19 spike ! THEN
          I  1 psi{ @ 50 > IF 30 spike ! THEN
          I  1 psi{ @ 55 > IF 33 spike ! THEN
          I  1 psi{ @ 60 > IF 36 spike ! THEN
          I  1 psi{ @ 65 > IF 39 spike ! THEN
          I  1 psi{ @ 70 > IF 42 spike ! THEN
          I  1 psi{ @ 75 > IF 45 spike ! THEN
          I  1 psi{ @ 80 > IF 48 spike ! THEN
          I  1 psi{ @ 85 > IF 50 spike ! THEN
          I  1 psi{ @ 90 > IF 52 spike ! THEN
          I  1 psi{ @ 95 > IF 54 spike ! THEN
        vacpsi @ fyipsi !  \ a replacement variable; 17oct2011
          I  1 psi{ @ oldact !
          I  5 psi{ @ oldpos !
   fyi @ 2 = IF  \ In Tutorial mode show slosh-over; 17oct2010
     CR  ."    VerbAct calls SpreadAct with activation "
     spike @ . ." for Psi #" seqpsi @ . \ 18oct2010
   THEN  \  End of test for Tutorial mode; 17oct2010
        seqpsi @  0 > IF  \ replacement; 15sep2010
        ( insert diagnostic code here; 6aug2011 )
          5 spike +!  \ for sake of direct objects; 3sep2011
          8665 caller !
          SpreadAct  ( for spreading activation )
          0 caller !
          0 prepsi !  \ replacing presyn; 15sep2010
          0 seqpsi !  \ replacing seqsyn; 15sep2010
        THEN
        0 oldpos !
        0 fyipsi !  \ 17oct2011
        0 oldact !
        0  pre !
        0  seq !
      THEN
      ( perhaps reset spike to zero for each loop? 14oct2010 )
      0 spike !  \ reset to start each loop again; 14oct2010
    -1  +LOOP
  THEN
; ( http://code.google.com/p/mindforth/wiki/VerbAct )


:  ReActivate ( re-activate recent nodes of a concept )
  fyi @ 2 > IF CR
  ."     Calling ReActivate. psi = " psi @ . CR
  THEN
  0 spike !
  psi @  0 >  IF
    fyi @ 2 > IF
      CR ."       ReActivate calls SpreadAct to transfer "
      CR ." proportionate activation from each node of "
      CR ." concept #" psi @ .
    THEN
    midway @ tov @  DO  \ Omitting current input; 29may2011
      I 0 psi{ @ psi @ = IF
         pov @ 42 = IF  \ Only during "*" external POV; 7may2011
          moot @ 0 = IF  \ deprive queries of tags; 20aug2011
           I  1 psi{ @ 0 < IF  \ if inhibited; 29aug2011
             1 I  1 psi{ +!  \ reactivate only slightly; 29aug2011
               proxcon @ 1 = IF  \ if clustering input; 7sep2011
                 prox3 @ psi @ = IF   \ 7sep2011
                   I 7 psi{ @ prox2 @ = IF  \ seq; 12oct2011
                     40 I 1 psi{ !  \ extra act; 7sep2011
                   THEN  \ 7sep2011
                 THEN  \ 7sep2011
               THEN  \ end of proxcon test; 7sep2011
           ELSE   \ otherwise impose full reactivation; 29aug2011
             I      1 psi{ @ -1 > IF \ avoid inhibition; 3sep2011
               35 I 1 psi{ +!  \ Relative not absolute 12aug2011
               I 5 psi{ 8 = IF  \ Test for a verb; 28jun2012
                 16 I 1 psi{ +!  \ Accentuate verbs; 28jun2012
               THEN  \ End of test for verbs; 28jun2012
               proxcon @ 1 = IF  \ if clustering input; 7sep2011
                 prox2 @ psi @ = IF  \ 7sep2011
                 THEN  \ 7sep2011
                 prox3 @ psi @ = IF   \ 7sep2011
                   I 7 psi{ @ prox2 @ = IF  \ seq; 12oct2011
                     10 I 1 psi{ +!  \ extra act; 7sep2011
                   THEN  \ 7sep2011
                 THEN  \ 7sep2011
               THEN  \ end of proxcon test; 7sep2011
             THEN  ( http://www.ez-robot.com )
           THEN   \ end of test for inhibited concept; 29aug2011
          THEN  \ end of test for a moot query input; 20aug2011
         THEN   \  End of new test for external POV;  7may2011
            I  0 psi{ @ 781 = IF  \ 781=WHAT; 10nov2012
          0 I  1 psi{ !
            THEN
            I  0 psi{ @ 791 = IF  \ 791=WHO; 10nov2012
          0 I  1 psi{ !  \ As in InStantiate; 3may2011
            THEN  \ end of test for 791=WHO   10nov2012
            I  0 psi{ @ 830 = IF  \ 830=DO; 10nov2012
          0 I  1 psi{ !   \ 12jan2010 For what-do queries.
            THEN          \ End of 830=DO test; 10nov2012
                               1 spike !  \ 30jun2012
          I  1 psi{ @  0 = IF  0 spike ! THEN
          I  1 psi{ @  5 > IF  7 spike ! THEN
          I  1 psi{ @ 10 > IF  8 spike ! THEN
          I  1 psi{ @ 15 > IF  9 spike ! THEN
          I  1 psi{ @ 20 > IF 10 spike ! THEN
          I  1 psi{ @ 25 > IF 11 spike ! THEN
          I  1 psi{ @ 30 > IF 12 spike ! THEN
          I  1 psi{ @ 35 > IF 13 spike ! THEN
          I  1 psi{ @ 40 > IF 14 spike ! THEN
          I  1 psi{ @ 45 > IF 15 spike ! THEN
          I  1 psi{ @ 50 > IF 16 spike ! THEN
          I  1 psi{ @ 55 > IF 17 spike ! THEN
          I  1 psi{ @ 60 > IF 18 spike ! THEN
          I  4 psi{ @  prepsi !  ( for SpreadAct 30jun2012 )
          I  7 psi{ @  seqpsi !  ( for SpreadAct 30jun2012 )
          I           zone !     ( for SpreadAct 30jun2012 )
        148 caller !
        SpreadAct  ( for spreading activation 30jun2012 )
        0 oldpos !
        0 fyipsi !  \ 17oct2011
        0 oldact !
        0    pre !
        0 prepsi !
        0    seq !
        0 seqpsi !
        0   psi1 !
        1  spike !
      THEN
    -1  +LOOP
    0 caller !
    0 urpsi !
  THEN
; ( http://code.google.com/p/mindforth/wiki/ReActivate )


:  InNativate ( quasi-instantiate the EnBoot sequence )
( concept fiber psi )             psi @  t @  0 psi{ !
( Set "num" number flag )         num @  t @  2 psi{ !
( Store PREvious associand. )     pre @  t @  4 psi{ !
( Store functional pos code. )    pos @  t @  5 psi{ !
( Store the "tqv" time-point. )   tqv @  t @  6 psi{ !
( Store the subSEQuent tag. )     seq @  t @  7 psi{ !
( Store the EN-transfer tag. )    enx @  t @  8 psi{ ! 
; ( http://code.google.com/p/mindforth )


:  OutBuffer  ( right-justifies a word in memory )
  32 b01 !  32 b02 !  32 b03 !  32 b04 !  32 b05 !
  32 b06 !  32 b07 !  32 b08 !  32 b09 !  32 b10 !
  32 b11 !  32 b12 !  32 b13 !  32 b14 !  32 b15 !
  32 b16 !
  c16 @ 32 > IF  \ if the AudBuffer is full; 14nov2012
    c16 @ b16 ! c15 @ b15 ! c14 @ b14 ! c13 @ b14 !
    c12 @ b12 ! c11 @ b11 ! c10 @ b10 @ c09 @ b09 !
    c08 @ b08 ! c07 @ b07 ! c06 @ c06 ! c05 ! b05 !
    c04 @ b04 ! c03 @ c03 ! c02 @ b02 ! c01 @ c01 !
    EXIT  \ abandon remainder of function; 13nov2012
  THEN \ end of transfer of 16-character word; 13nov2012
  c15 @ 32 > IF  \ word only 15 chars long? 14nov2012
    c15 @ b16 ! c14 @ b15 ! c13 @ b14 ! c12 @ b13 !
    c11 @ b12 ! c10 @ b11 ! c09 @ b10 ! c08 @ b09 !
    c07 @ b08 ! c06 @ b07 ! c05 @ b06 ! c04 @ b05 !
    c03 @ b04 ! c02 @ b03 ! c01 @ b02 ! EXIT
  THEN  \ transfer of a 15-character word; 13nov2012
  c14 @ 32 > IF
    c14 @ b16 !  c13 @ b15 !  c12 @ b14 !  c11 @ b13 !
    c10 @ b12 !  c09 @ b11 !  c08 @ b10 !  c07 @ b09 !
    c06 @ b08 !  c05 @ b07 !  c04 @ b06 !  c03 @ b05 !
    c02 @ b04 !  c01 @ b03 !  EXIT
  THEN
  c13 @ 32 > IF
    c13 @ b16 !  c12 @  b15 ! c11 @  b14 ! c10 @ b13 !
    c09 @ b12 !  c08 @  b11 ! c07 @  b10 ! c06 @ b09 !
    c05 @ b08 !  c04 @  b07 ! c03 @  b06 ! c02 @ b05 !
    c01 @ b04 !  EXIT
  THEN
  c12 @ 32 > IF
    c12 @ b16 !  c11 @ b15 !  c10 @ b14 !  c09 @ b13 !
    c08 @ b12 !  c07 @ b11 !  c06 @ b10 !  c05 @ b09 !
    c04 @ b08 !  c03 @ b07 !  c02 @ b06 !  c01 @ b05 !
    EXIT
  THEN
  c11 @ 32 > IF
    c11 @ b16 !  c10 @ b15 !  c09 @ b14 !  c08 @  b13 !
    c07 @ b12 !  c06 @ b11 !  c05 @ b10 !  c04 @  b09 !
    c03 @ b08 !  c02 @ b07 !  c01 @ b06 !  EXIT
  THEN
  c10 @ 32 > IF
    c10 @ b16 !  c09 @ b15 !  c08 @ b14 !  c07 @ b13 !
    c06 @ b12 !  c05 @ b11 !  c04 @ b10 !  c03 @ b09 !
    c02 @ b08 !  c01 @ b07 !  EXIT
  THEN
  c09 @ 32 > IF
    c09 @ b16 !  c08 @ b15 !  c07 @ b14 !  c06 @ b13 !
    c05 @ b12 !  c04 @ b11 !  c03 @ b10 !  c02 @ b09 !
    c01 @ b08 !  EXIT
  THEN
  c08 @ 32 > IF
    c08 @ b16 !  c07 @ b15 !  c06 @ b14 !  c05 @ b13 !
    c04 @ b12 !  c03 @ b11 !  c02 @ b10 !  c01 @ b09 !
    EXIT
  THEN
  c07 @ 32 > IF
    c07 @ b16 !  c06 @ b15 !  c05 @ b14 !  c04 @ b13 !
    c03 @ b12 !  c02 @ b11 !  c01 @ b10 !
    EXIT
  THEN
  c06 @ 32 > IF
    c06 @ b16 !  c05 @ b15 !  c04 @ b14 !  c03 @ b13 !
    c02 @ b12 !  c01 @ b11 !
    EXIT
  THEN
  c05 @ 32 > IF
    c05 @ b16 !  c04 @ b15 !  c03 @ b14 !  c02 @ b13 !
    c01 @ b12 !
    EXIT
  THEN
  c04 @ 32 > IF
    c04 @ b16 !  c03 @ b15 !  c02 @ b14 !  c01 @ b13 !
    EXIT
  THEN
  c03 @ 32 > IF
    c03 @ b16 !  c02 @ b15 !  c01 @ b14 !
    EXIT
  THEN
  c02 @ 32 > IF
    c02 @ b16 !  c01 @ b15 !
    EXIT
  THEN
  c01 @ 32 > IF
     c01 @ b16 !
     EXIT
  THEN
;  \ end of OutBuffer; return to AudBuffer or VerbGen.


:  AudBuffer  ( for transfer of words to OutBuffer; 12nov2012 )
  1 phodex +!  \ increment; 12nov2012
  phodex @  1 = IF  \ Erase any left-over old data;
    abc @ c01 !  \ fill in first item of new data.
    32 c02 ! 32 c03 ! 32 c04 ! 32 c05 ! 32 c06 !
    32 c07 ! 32 c08 ! 32 c09 ! 32 c10 ! 32 c11 !
    32 c12 ! 32 c13 ! 32 c14 ! 32 c15 ! 32 c16 !
  THEN  \ end of blanking out with 32=SPACE
  phodex @  2 = IF abc @ c02 !  THEN  \ 12nov2012
  phodex @  3 = IF abc @ c03 !  THEN  \ 12nov2012
  phodex @  4 = IF abc @ c04 !  THEN  \ 12nov2012
  phodex @  5 = IF abc @ c05 !  THEN  \ 12nov2012
  phodex @  6 = IF abc @ c06 !  THEN  \ 12nov2012
  phodex @  7 = IF abc @ c07 !  THEN  \ 12nov2012
  phodex @  8 = IF abc @ c08 !  THEN  \ 12nov2012
  phodex @  9 = IF abc @ c09 !  THEN  \ 12nov2012
  phodex @ 10 = IF abc @ c10 !  THEN  \ 12nov2012
  phodex @ 11 = IF abc @ c11 !  THEN  \ 12nov2012
  phodex @ 12 = IF abc @ c12 !  THEN  \ 12nov2012
  phodex @ 13 = IF abc @ c13 !  THEN  \ 12nov2012
  phodex @ 14 = IF abc @ c14 !  THEN  \ 12nov2012
  phodex @ 15 = IF abc @ c15 !  THEN  \ 12nov2012
  phodex @ 16 = IF abc @ c16 !  THEN  \ 12nov2012
  OutBuffer  \ right-justify each input word; 15nov2012
  0 abc !  \ reset for non-persistence; 14nov2012
;  \ end of AudBuffer; return to AudInput or VerbGen


:  InStantiate ( create a concept-fiber node )
  seqneed @ 0 = IF 5 seqneed ! THEN  \ test; 27jul2012
  precand @ 0 > IF precand @ pre ! THEN
  ordo @ 1 = IF  0 prevtag ! THEN
  firstword @ 830 = IF  \ DO or DOES; 10nov2012
    1 moot !  \ deprive queries of pre and seq tags; 19aug2011
  THEN  \ end of test for a DO-query; 19aug2011
  firstword @ 781 = firstword @ 791 = OR IF  \ 10nov2012
    1 proxcon !  \ set for 781=WHAT or 791=WHO; 10nov2012
  THEN
  lastword @ 1 = IF
    0 seq !
  THEN   ( http://home.iae.nl/users/mhx/i4faq.html )
  t @ 610 > IF   \  Avoid the EnBoot vault; 11nov2012
    whoflag @ 1 = IF
      psi @ 800 = IF 800 beflag ! THEN  \ 10nov2012
      pos @ 5 = pos @ 7 = OR IF
        beflag @ seq !
        0 beflag !
      THEN
    THEN
    psi @ 781 = IF  \ Special handling of 781=WHAT; 10nov2012
      1 indefartcon ! \ indefinite article condition 16apr2011
      0 act !      \ To suppress "WHAT" during answer.
    THEN           \ End of test for input of "WHAT"
    psi @ 791 = IF  \ Special handling of 791=WHO; 10nov2012
      1 defartcon ! \ Set definite article condition 16apr2011
      1 whoflag !
      0 act !      \ To suppress "WHO" during answer.
    THEN
    singflag @ 1 = IF
      pos @ 5 = IF
        1 num !
        0 singflag !
      THEN
    THEN
    psi @ 1 =  psi @ 83 = OR IF  \ "A" or "AN"; 6aug2011
      1 singflag !
      0 act !
    THEN
  THEN   \ end of InStantiate t-test clause; 14jul2012
  pos @ 5 = IF  \ noun either external or internal; 6aug2011
    recnum @ 0 > IF   \ If positive recog-num; 6aug2022
      recnum @ num !  \ Override num(ber); 6aug2011
    \ 0 recnum !  \ reset for safety; 6aug2011; 14jul2012
    THEN  \ End of test for positive recog-num; 6aug2011
  THEN  \ End of test for a 5=pos noun; 6aug2011
  pov @ 42 = IF  \ If POV is external; 24jun2011
    num @ 0 = IF  \ if no num(ber) is assigned; 24jun2011
      putnum @ 0 > IF   \ if putative number is positive
        putnum @ num !  \ replace zero with putative num
      THEN  \ end of test for positive putnum; 24jun2011
    THEN   \ end of test for missing num-value; 24jun2011
    pos @ 8 = IF putnum @ num ! THEN \ test; 24jun2011
    pos @ 5 = IF psi @ quobj ! THEN  \ for AskUser; 6aug2011
  THEN  \ End of test for "*" external POV; 20aug2011
  pov @ 35 = IF  \ If POV is pound-sign internal; 3may2011
   num @ 0 = IF  \ if no num(ber) is assigned; 24jun2011
     putnum @ 0 > IF   \ if putative number is positive
       putnum @ num !  \ replace zero with putative num
       0 putnum !  \ zero for safety; test; 5aug2011
     THEN  \ end of test for positive putnum; 24jun2011
   THEN   \ end of test for missing num-value; 24jun2011
   pos @ 8 = IF putnum @ num ! THEN \ test; 24jun2011
    0 act !  \ 0 activation for ReEntry concepts; 26apr2011
  THEN  \ End of test for #internal POV;  7may2011
  prevtag @ pre !
  t @ vault @ < IF  0 pre ! THEN  \ for safety; 22sep2011
  ( concept fiber psi )             psi @  t @  0 psi{ !
  moot @ 0 = IF  \ deprive queries of tags; 20aug2011
  ( Set "act" activation level. )   act @  t @  1 psi{ +!
    pos @ 8 = IF  \ Re-using code; test for a verb; 28jun2012
      16 t @ 1 psi{ +!  \ Accentuate verbs; 28jun2012
    THEN  \ End of test for verbs; 28jun2012
  THEN  \ end of test for a moot query input; 20aug2011
  ( Set "num" number flag       )   num @  t @  2 psi{ !
  ( Store JUXtaposition tags. )     jux @  t @  3 psi{ !
  moot @ 0 = IF  \ deprive queries of tags; 19aug2011
  ( Store PREvious associand. )     pre @  t @  4 psi{ !
  THEN  \ end of test for a moot query input; 19aug2011
  ( Store functional pos code. )    pos @  t @  5 psi{ !
   seq @ 0 > IF  \ avoid spurious carry-over tqv; 1aug2012
    ( Store the "tqv" time-point. ) tqv @  t @  6 psi{ !
   THEN  \ only store "tqv" if there is a "seq"; 1aug2012
  moot @ 0 = IF  \ deprive queries of tags; 19aug2011
  ( Store the subSEQuent tag. )     seq @  t @  7 psi{ !
  THEN  \ end of test for a moot query input; 19aug2011
  ( Store the EN-transfer tag. )    enx @  t @  8 psi{ !
  t @ vault @ < IF  \ store only during EnBoot; 29sep2011
  \ ( Store the "tqv" time-point. ) tqv @  t @  8 psi{ !
  THEN  \ otherwise store "tqv" retroactively; 29sep2011
  num @ instnum !
  pos @ 5 = IF num @ putnum ! THEN \ noun to verb; 24jun2011
  0 num !
  jux @ 250 = IF 0 jux ! THEN  \ reset after use; 10nov2012
  prejux @ 250 = IF  \ 250=NOT from OldConcept; 10nov2012
    250 jux !  \  set jux for next instantiand; 10nov2012
    0 prejux !  \ reset for safety; 21jul2011
  THEN  \  end of post-instantiation test; 21jul2011
  mfn @ 1 =  mfn @ 2 = OR IF  \ masc or fem; 17aug2010
    mfn @ mfnflag !  \   17aug2010
  THEN   \ 17aug2010
  mfn @ 0 = IF  0 mfnflag ! THEN  \ test; 25aug2010
  0 mfn !  \ Test code applies only to En array.
  0 preset !
  pos @ 5 = pos @ 7 = OR IF
    psi @ prevtag !
  THEN
  psi @ 830 = NOT IF   \ DO? DOES? 10nov2012
    psi @ 830 = NOT IF  \ 830=DO/DOES; 10nov2012
      seqneed @ 8 = IF  \ if looking for a verb; 2oct2011
        pos @ 8 = IF  \ if part-of-speech is verb; 2oct2011
          psi @ seq !  \ verb has arrived; 2oct2011
          0 seqneed !  \ zero out after use; 2oct2011
          1 transcon ! \ until noun fails to come in; 24jan2013
          pos @ seqpos !  \ possibly for tqv; 2oct2011
        THEN  \ end of test for 8=pos verb; 2oct2011
          tsn @  t @ 2 - DO  \ look for noun needing seq; 1jul2012
          I 5 psi{ @ 5 = I 5 psi{ @ 7 = OR IF \ (pro)noun 2oct2011
            moot @ 0 = IF  \ deprive queries of tags; 5oct2011
              seq @ I 7 psi{ !  \ insert the seq; 12oct2011
              seqpos @ 8 = IF  \ a verb?  2oct2011
                t @   I 6 psi{ !  \ insert "tqv" value; 12oct2011
                t @   tqv !       \ assign "tqv" value;  2oct2011
              THEN  \ end of seqpos=verb test; 2oct2011
            THEN  \ end of test for a moot query input; 5oct2011
            LEAVE  \ insert only one seq; 2oct2011
          THEN  \ end of test for subject noun or pronoun 2oct2011
        -1 +LOOP   \ end of backwards loop; 2oct2011
      THEN  \ end of test for needing a verb; 2oct2011
    THEN  \ end of skipping auxiliary DOES; 6oct2011
  THEN  \ end of skipping auxiliary verb DO; 6oct2011
  seqneed @ 5 = IF  \ if looking for a noun; 5oct2011
    pos @ 5 =  pos @ 7 = OR IF  \ if noun or pronoun; 5oct2011
      4 dba !  \ from DeKi: assuming acc. dir. obj.; 27dec2012 
      psi @ seq !  \ because a (pro)noun has arrived; 5oct2011
      0 seqneed !  \ zero out after use; 5oct2011
      pos @ seqpos !  \ possibly for tqv; 5oct2011
    ELSE  \ if no direct object is found; 24jan2012
      0 transcon !  \ declare intransitive verb; 24jan2013
    THEN  \ end of test for 5=pos noun or 7=pos pronoun; 5oct2011
      tsn @  t @ 2 -  DO  \ look for verb needing "seq"; 1jul2012
      I 5 psi{ @ 8 = IF  \ verb?  5oct2011
        moot @ 0 = IF  \ deprive queries of tags; 5oct2011
         transcon @ 1 = IF  \ verb transitive? 24jan2012
          seq @ I 7 psi{ !  \ insert the seq; 12oct2011
          seqpos @ 5 =  seqpos @ 7 = OR IF  \ (pro)noun? 5oct2011
            t @   I 6 psi{ !  \ insert "tqv" value; 12oct2011
            t @   tqv !       \ assign "tqv" value;  5oct2011
          THEN  \ end of seqpos=(pro)noun test; 5oct2011
         THEN  \ end of test for positive "transcon"; 24jan2013 
        THEN  \ end of test for a moot query input; 5oct2011
        LEAVE  \ insert only one seq; 5oct2011
      THEN  \ end of test for a verb; 5oct2011
    -1 +LOOP   \ end of backwards loop; 5oct2011
  THEN  \ end of test for needing a noun; 5oct2011
  ordo @ 2 = IF  \  7sep2011
    psi @ prox2 !  \ 7sep2011
  THEN  \  7sep2011
  ordo @ 3 = IF  \  7sep2011
    psi @ prox3 !  \ 7sep2011
  THEN  \  7sep2011
  pos @ 5 =  pos @ 7 = OR IF  \ (pro)noun? 2oct2011
    8 seqneed !  \ need "8=verb" seq; 2oct2011
  THEN  \ end of test for a noun or a pronoun; 2oct2011
  pos @ 6 = IF  \ if preposition; 2oct2011
    5 seqneed !  \ need noun or pronoun; 2oct2011
  THEN ( http://home.hccnet.nl/a.w.m.van.der.horst/ciforth.html )
  psi @ 830 = NOT IF \ skip auxiliary verb "830=DO"; 10nov2012
    psi @ 830 = NOT IF  \ skip auxiliary "830=DOES"; 10nov2012
      pos @ 8 = IF  \ if verb then need noun as "seq"; 5oct2011
        5 seqneed !  \ seek noun or pronoun as "seq"; 5oct2011
      THEN  \  end of test for 8=verb; 5oct2011
   THEN  \ end of test to skip auxiliary DOES; 6oct2011
  THEN  \ end of test to skip auxiliary DO; 6oct2011
  lastword @ 1 = IF  0 lastword ! THEN  \ for seqneed; 30jun2012
  0 dba !  \ from DeKi: reset for safety; 27dec2012 
  0 recnum !  \ lest carry-over to other words; 19jul2011
  0 seq !
; ( http://code.google.com/p/mindforth/wiki/InStantiate )


:  EnVocab ( English Vocabulary node creation; 8jul2012 )
  ( Number "nen" of English )       nen @  t @  0 en{ !
  ( Do not store the activation level; it is a transient.)
  ( Store "num" number tag. )       num @  t @  2 en{ !
  ( Store "mfn" gender tag. )       mfn @  t @  3 en{ !
  ( Store case or person tag. )     dba @  t @  4 en{ !
  ( Store mindcore EXit tag. )      fex @  t @  5 en{ !
  ( Store part of speech "pos".)    pos @  t @  6 en{ !
  ( Store mindcore IN tag. )        fin @  t @  7 en{ !
  ( Store the auditory "aud" tag. ) aud @  t @  8 en{ !
  0 dba !  \ reset for safety; 27dec2012
; ( http://code.google.com/p/mindforth/wiki/EnVocab )


:  EnParser ( determine the part of speech )
  5 bias !
  35 act !  \ Activate lower than ReActivate; 29may2011
  pov @ 42 = IF  \ only during external input; 9oct2010
    act @ ordo @ - act !  \ reduce S-V-O act's; 9oct2010
  THEN  \ end of test for external POV; 9oct2010
  InStantiate  \ create a Psi concept node; 6nov2010
  pos @ 5 = IF  8 bias !  THEN
  pos @ 7 = IF  8 bias !  THEN
  pos @ 8 = IF  5 bias ! 0 singflag ! THEN  \ 4nov2011
; ( http://code.google.com/p/mindforth/wiki/EnParser )


:  EnReify ( express abstract concepts as real words )
  0 act !
  midway @  t   @  DO
          I   1 psi{ @  0 > IF
          I   1 psi{ @  lexact !
          I   2 psi{ @  num !
 lexact @ I   1  en{ !
    num @ I   2  en{ !
            0 lexact ! 
         THEN  ( http://home.vrweb.de/~stephan.becher/forth )
    0 enx !
    0 act !
    0 lexact !
  -1  +LOOP
  0 act !
; ( http://code.google.com/p/mindforth/wiki/EnReify )


:  KbSearch ( knowledge base search )
  ordo @ 2 = IF
    NounAct  ( may need a "nacpsi" value )
    EnReify
  THEN  ( http://www.ccreweb.org/software/kforth )
  ordo @ 3 = IF
    0 act !
    midway @ t  @ DO
      I     5 en{ @  8 = IF   \ Test part-of-speech.
        I   1 en{ @  act @ > IF  ( if en1 is higher )
          I 0 en{ @  memoire !  ( store psi-tag of word )
          I 1 en{ @  act !  ( to test for a higher en1 )
        THEN
      THEN
    -1 +LOOP
    yesorno @ 0 > IF
      memoire @ psi @ = IF
        1 yesorno +!
      ELSE
        0 yesorno !
      THEN
    THEN
    psi @ vacpsi !  \ deglobalizing; 27sep2010
    VerbAct
    0 vacpsi !  \ reset for safety; 27sep2010
    EnReify
  THEN
  ordo @ 4 = IF
    0 act !
    0 memoire !
    midway @ t  @ DO
      I 5 en{ @ 5 = I 5 en{ @ 7 = OR IF
        I    1 en{ @  act @ > IF  ( if en1 is higher )
          I  0 en{ @  memoire !  ( store psi-tag of word )
          I  1 en{ @  act !  ( to test for a higher en1 )
        THEN
      THEN
    -1 +LOOP
    yesorno @ 0 > IF
      memoire @ psi @ = IF
        1 yesorno +!
      ELSE
        0 yesorno !
      THEN
    THEN  ( http://www.lifeai.com )
  THEN
  0 kbquiz !
  ordo @ 4 = IF 0 ordo ! THEN
; ( http://code.google.com/p/mindforth/wiki/KbSearch )


:  KbRetro  ( retroactive adjustment of knowledge base )
  oldpsi @ 432 = oldpsi @ 404 = OR IF  \ yes or no 10nov2012
    oldpsi @ 404 = IF  \ 404=NO; 10nov2012
      64  tkbn @  1 psi{ ! \ high noun activation 21jul2011
      64  tkbv @  1 psi{ ! \ set high activation? 2jul2011
     250  tkbv @  3 psi{ ! \ set 250=NOT jux flag 27dec2012
   \ CR ."  KbRetro: answer is No "  \ 29dec2012
    THEN  \ End of test for "No" answer; 2jul2011
    oldpsi @ 432 = IF  \ 432=YES; 10nov2012
      64  tkbv @  1 psi{ ! \ set high activation? 2jul2011
   \  CR ."  KbRetro: answer is Yes "  \ 29dec2012
    THEN \ End of test for "Yes" answer; 2jul2011
  ELSE  \ if neither; 2jul2011
    0  tkbn @  4 psi{ ! \ delete pre-tag for noun;  2jul2011
    0  tkbn @  7 psi{ ! \ delete seq-tag for noun; 12oct2011
    0  tkbv @  4 psi{ ! \ delete pre-tag for verb;  2jul2011
    0  tkbv @  7 psi{ ! \ delete seq-tag for verb; 12oct2011
  \ CR ."  KbRetro: answer is neither Yes nor No " \ 29dec2012
  THEN  ( http://retroforth.org )
  0 kbcon !  \ temporarily here turn off kbcon;  2jul2011
  0 tkbn !  \ reset for safety;  2jul2011
  0 tkbv !  \ reset for safety;  2jul2011
; ( http://code.google.com/p/mindforth/wiki/KbRetro )


:  OldConcept ( recognize a known word )
  28 act !  \ A value subject to optimization; 28sep2010
  midway @ t @ DO
  \ I 0 en{ @ oldpsi @ = IF
    I 0 en{ @ oldpsi @ =  I 8 en{ @ 0 > AND IF \ 29dec2012
    I 2 en{ @    0 > IF
    I 2 en{ @  ocn ! THEN  \ "unk" is too global; 14jul2012
    I 3 en{ @    0 > IF
    I 3 en{ @  mfn ! THEN
  ( I 4 en{ @  dba ! is not trustworthy for verbs 28dec2012 )
    I 5 en{ @    0 > IF    \ adding dba; 10nov2012
    I 5 en{ @  fex ! THEN  \ adding dba; 10nov2012
    I 6 en{ @    0 > IF    \ adding dba; 10nov2012
    I 6 en{ @  pos ! THEN  \ adding dba; 10nov2012
    I 7 en{ @    0 > IF    \ adding dba; 10nov2012
    I 7 en{ @  fin ! THEN  \ adding dba; 10nov2012
    LEAVE
    THEN  ( http://home.iae.nl/users/mhx/eforth.html )
  -1 +LOOP
  pos @ 8 = IF  \ verb? for WhatAuxSVerb 13jun2011
    numsubj @ unk !  \ assume agreement; 19jun2011
    3 dba !  \ 3rd person default before changes; 27dec2012
    putdbav @ 0 > IF  \ positive putdbav? 27dec2012
      putdbav @ dba !  \ transfer; 27dec2012
      0 putdbav !  \ reset after use; 27dec2012
    THEN  \ end of test for putative dba; 27dec2012
  THEN  \ end of test for verb \ 13jun2011
  oldpsi @ 800 = IF t @ tbev ! THEN \ 800=BE; 10nov2012
  pos @ 5 =  pos @ 7 =  OR IF  \ noun or pron.? 27dec2012
    1 dba !  \ default before changes; 27dec2012
    audverb @  0 > IF  \ preceded by a verb? 27dec2012
      audverb @  800 = NOT IF  \ except be-verbs; 27dec2012
        4 dba !  \ accusative direct object; 27dec2012
      THEN  \ code snippet taken from Wotan DeKi; 27dec2012
      0 audverb !  \ reset after use; 27dec2012
    THEN  \ end of test for positive audverb; 27dec2012
  THEN  \ end of test for noun or pronoun; 27dec2012
  oldpsi @ 701 = oldpsi @ 731 = OR IF 1 putdbav ! THEN
  oldpsi @ 707 = oldpsi @ 737 = OR IF 2 putdbav ! THEN
  subjectflag @ 1 = IF 1 dba ! THEN \ nom. subj. 27dec2012
  dirobj @ 1 = IF 4 dba ! THEN  \ acc. dir. obj. 27dec20122012
  pov @  42 = IF  \ external POV during input; 18dec2012
    oldpsi @ 800 = IF 1 becon ! THEN  \ InFerence; 18dec2012
  THEN  \ only set becon during external input; 18dec2012
  ( oldpsi found by AudRecog )   oldpsi @  t @  0 en{ !
  ( Add zero activation 28jul2011 )   0    t @  1 en{ +!
  ocn @ 0 > IF  \ from AudInput for old nouns; 14oct2011
  ( Store old-concept-number tag )  ocn @  t @  2 en{ !
    0 ocn !  \ reset to zero after use; 14oct2011
  THEN  \ leaving only one space in "2 en{" etc 8jul2012
  pcn @ 0 > IF  \ from NounPhrase predicate selection; 17jul2012
  ( Store pred-concept-number tag )  pcn @  t @  2 en{ !
    \ 0 pcn !  \ reset to zero after use; 17jul2012
  THEN  \ leaving one search-space in "2 en{" etc 17jul2012
  ( Store "mfn" gender tag. )       mfn @  t @  3 en{ !
  ( Store "dba" tag; 10nov2012 )    dba @  t @  4 en{ !
  ( Store mindcore EXit tag. )      fex @  t @  5 en{ !
  ( Store part of speech "pos".)    pos @  t @  6 en{ !
  ( Store mindcore IN tag. )        fin @  t @  7 en{ !
  ( Store the auditory "aud" tag. ) aud @  t @  8 en{ !
  pov @  35 = IF fex @ oldpsi ! THEN  ( internal pov )
  pov @  42 = IF fin @ oldpsi ! THEN  ( external pov )
  oldpsi @  enx !
  oldpsi @ 250 = IF  \ 250=NOT; 10nov2012
    tbev @ 0 > IF   \ if positive be-verb time; 27jul2011
    250 tbev @  3 psi{ !  \ set verb "jux" to NOT 10nov2012
    0 tbev !  \ reset for safety; 27jul2011
    THEN  \ end of test for a positive tbev; 27jul2011
  THEN  \ end of test for input of 250=NOT; 10nov2012
  oldpsi @ 781 = IF 8 act ! THEN  ( 781=WHAT; 10nov2012 )
  oldpsi @ 791 = IF 8 act ! THEN  ( 791=WHO; 10nov2012 )
  ordo @ 1 = IF
    oldpsi @ 830 = IF  ( 830=DO; 10nov2012 )
      1 kbquiz !
    THEN
  THEN
  oldpsi @ 830 = IF 0 act ! THEN  ( 830=DO; 10nov2012 )
  oldpsi @ 117 = IF 1 act ! THEN  ( 117=THE; 10nov2012 )
  kbcon @  0 > IF  \ if awaiting answer; 2jul2011
    KbRetro  \ retroactively adjust knowledge base;  2jul2011
  THEN  \  2jul2011
  oldpsi @ 250 = IF  \ 250=NOT; 10nov2012
    250 prejux !  \ set flag for verb; 10nov2012
    250 aftjux !  \ set flag for a be-verb; 10nov2012
  THEN  \ end of test for 250=NOT negation; 10nov2012
  oldpsi @ psi !
  EnParser
  fyi @ 2 > IF CR
  ."   from OldConcept "
  THEN
  pov @  42 = IF  \ external POV during input; 18dec2012
    pos @ 5 = IF  \ nouns only, not pronouns; 27dec2012
      subjnom @  0 >  IF  \ already subjnom? 27dec2012
        oldpsi @  prednom !  \ 27dec2012
      THEN  \ end of test for pre-existing subjnom; 27dec2012
      prednom @ 0 = IF  \ 27dec2012
        oldpsi @  subjnom !  \ grab for InFerence; 27dec2012
      THEN  \ alternate between subjnon and prednom; 27dec2012
    THEN  \ end of test for a noun; 27dec2012
    pos @ 8 = IF  \ verb part-of-speech? 27dec2012
      oldpsi @  800 = NOT IF  \ other than be-verb? 27dec2012
        0 subjnom !  \ cancel out any subjnom; 27dec2012
      THEN  \ end of test for a be-verb; 27dec2012
    THEN  \ end of test for a verb; 27dec2012
  \ subjnom @  0 = IF  \ not yet declared? 18dec2012
  \   pos @ 5 = IF  \ nouns only, not pronouns; 18dec2012
  \     oldpsi @  subjnom !  \ grab for InFerence; 18dec2012
  \   THEN  \ end of test for a noun; 18dec2012
  \ THEN  \ end of test for no subjnom yet; 18dec2012
  \ subjnom @ 0 >  IF  \ already declared? 18dec2012
  \   becon @ 1 = IF  \ be-verb in use? 18dec2012
  \     pos @ 5 = IF  \ nouns only, not pronouns; 18dec2012
  \       oldpsi @ prednom !  \ grab for InFerence; 18dec2012
  \     THEN  \ end of test for a noun; 18dec2012
  \   THEN  \ end of test for be-verb input; 18dec2012
  \ THEN  \ end of test for positive subjnom; 18dec2012
  THEN  \ end of test for external-input POV; 18dec2012
  pov @ 42 = IF  ( external pov )
    ReActivate
  THEN
  0 act !
  pov @ 35 = IF  ( internal pov )
    1 match !
  THEN
\ pos @ 8 = IF psi @ quverb ! THEN  \ for yes-or-no; 24jun2011
\ pos @ 8 = IF psi @ quverb ! THEN  \ Commenting out 29dec2012
  pos @ 8 = IF oldpsi @ audverb ! THEN  \ for "dba"; 27dec2012
  kbquiz @ 0 > IF
    1 yesorno !
    KbSearch
  THEN
  yesorno @ 0 > IF
    KbSearch
  THEN
  0 pos !  \ Reset no longer above but down here.
; ( http://code.google.com/p/mindforth/wiki/OldConcept )


:  NewConcept ( machine learning of new concepts )
  0 newpsi !
  1 nen +!
  1 nwc +!
  nen @ newpsi !
  nen @ stempsi !
  nen @ psi !
  nen @ fex !
  nen @ fin !
  bias @ pos !
  bias @ 8 = IF  \ 4nov2011
    putnum @ num !  \ 4nov2011
    0 putnum !    \ 4nov2011
    0 singflag !  \ prevent carry-over; 4nov2011
    3 dba !  \ default dba=3 third person; 26dec2012
    putdbav @ 0 > IF  \ positive putdbav? 27dec20122012
      putdbav @ dba !  \ transfer; 27dec20122012
      0 putdbav !  \ reset after use; 27dec2012
    THEN  \ 27dec2012
  THEN  \ 4nov2011
  bias @ 5 = IF  \ expecting a noun?  27dec2012
    1 dba !  \ default before changes; 27dec2012
    audverb @  0 > IF  \ preceded by a verb? 27dec2012
      audverb @  800 = NOT IF  \ except be-verbs; 27dec2012
        4 dba !  \ accusative direct object; 27dec2012
      THEN  \ part of code snippet from Wotan DeKi 27dec2012
      0 audverb !  \ reset after use; 27dec2012
    THEN  \ end of test for positive audverb; 27dec2012
  THEN  \ end of test for expecting a noun; 27dec2012
  EnVocab ( to create an English vocabulary node )
  0 fex !
  0 fin !
  nen @  enx !
  EnParser
  pos @ 8 = IF nen @ quverb ! THEN  \ for yes-or-no; 24jun2011
  pos @ 5 = IF  \ if a new noun is encountered; 22oct2011
    nen @ cogpsi !  \ hold onto new noun for WhatBe; 22oct2011
    instnum @ cognum !  \ keep track of the num(ber); 22oct2011
  THEN  \ end of test of "pos" part-of-speech; 22oct2011
  pov @  42 = IF  \ external POV during input? 18dec2012
    pos @ 5 = IF  \ nouns only, not pronouns; 27dec2012
      subjnom @  0 >  IF  \ already subjnom? 27dec2012
        newpsi @  prednom !  \ 27dec2012
      THEN  \ end of test for pre-existing subjnom; 27dec2012
      prednom @ 0 = IF  \ 27dec2012
        newpsi @  subjnom !  \ grab for InFerence; 27dec2012
      THEN  \ alternate between subjnon and prednom; 27dec2012
    THEN  \ end of test for a noun; 27dec2012
  \ pos @ 8 = IF  \ verb part-of-speech? 27dec2012
  \   newpsi @  800 = NOT IF  \ other than be-verb? 27dec2012
  \     0 subjnom !  \ cancel out any subjnom; 27dec2012
  \   THEN  \ end of test for a be-verb; 27dec2012
  \ THEN  \ end of test for a verb; 27dec2012
  \ subjnom @  0 = IF  \ not yet declared? 18dec2012
  \   pos @ 5 = IF  \ nouns only, not pronouns; 18dec2012
  \     newpsi @  subjnom !  \ grab for InFerence; 18dec2012
  \   THEN  \ end of test for a noun; 18dec2012
  \ THEN  \ end of test for no subjnom yet; 18dec2012
  \ subjnom @ 0 >  IF  \ already declared? 18dec2012
  \   becon @ 1 = IF  \ be-verb in use? 18dec2012
  \     pos @ 5 = IF  \ nouns only, not pronouns; 18dec2012
  \       newpsi @ prednom !  \ grab for InFerence; 18dec2012
  \     THEN  \ end of test for a noun; 18dec2012
  \   THEN  \ end of test for be-verb input; 18dec2012
  \ THEN  \ end of test for positive subjnom; 18dec2012
  THEN  \ end of test for external-input POV; 18dec2012
  kbcon @  0 > IF  \ if awaiting answer; 2jul2011
    KbRetro  \ retroactively adjust knowledge base;  2jul2011
  THEN   ( http://www.gnu.org/software/gforth )
  0 pos !
  0 act !
; ( http://code.google.com/p/mindforth/wiki/NewConcept )


\ The visual recognition module of MindForth AI for robots
\ when fully implemented will serve the purpose of letting
\ AI Minds dynamically describe what they see in real time
\ instead of fetching knowledge from the AI knowledge base.
:  VisRecog  ( identification of objects seen by a robot )
  svo3 @ 0 = IF  \ if no direct object is available;
    midway @  t @  DO  \ search for an automatic default
      I       0 en{ @  760 = IF  \ 760=NOTHING; 10nov2012
        I     8 en{ @  aud !  \ hold address for SpeechAct
        LEAVE  ( http://aimind-i.com )
      THEN  ( http://www.vicariousinc.com ) 
    -1 +LOOP \ end of looping through English lexical array
  THEN  ( http://opencv.willowgarage.com )
; ( http://code.google.com/p/mindforth/wiki/VisRecog )


:  AudRecog ( auditory recognition )
  0 audrec !
  0 psi !
  8 act !
  0 actbase !
  midway @  spt @ DO
    I 0 aud{ @ pho @ = IF  \ If incoming pho matches stored aud0;
      I 1 aud{ @ 0 = IF    \ if matching engram has no activation;
        I 3 aud{ @ 1 = IF  \ if beg=1 on matching no-act aud engram;
       \ audrun @ 1 = IF   \ if comparing start of a word; 8may2010
         audrun @ 2 < IF   \ if comparing start of a word; 8may2010
          I 4 aud{ @ 1 = IF   \ If beg-aud has ctu=1 continuing,
            8 I 1+   1 aud{ !  \ activate the N-I-L character,
            0 audrec !
            I   5 aud{ @ 0 > IF   \ audpsi available? 27dec2012
              I 5 aud{ @ prc !  \ provisional recognition 27dec2012
            THEN  \ end of test for an early audpsi; 27dec2012
          ELSE
            len @ 1 = IF
              I 5 aud{ @  monopsi !
            THEN  \ End of test for one char length.
          THEN   \ end of test for continuation of beg-aud
         THEN  \ end of test for audrun=1 start of word.
        THEN   \ end of test for a beg(inning) non-active aud0
      THEN   \ end of test for matching aud0 with no activation
      I 1 aud{ @ 0 > IF  \ If matching aud0 has activation,
        0 audrec !       \ Zero out any previous audrec.
        I 4 aud{ @ 1 = IF  \ If act-match aud0 has ctu=1 continuing,
          2 act +!           \ Increment act for discrimination.
          0 audrec !         \ because match-up is not complete.
          act @ I 1+   1 aud{ ! \ Increment for discrimination.
        THEN  \ end of test for active-match aud0 continuation
        I 4 aud{ @ 0 = IF  \ If ctu=0 indicates end of word
          len @ 2 = IF  \ If len(gth) is only two characters.
            I 1 aud{ @ 7 > IF  \ testing for eight (8).
              I 5 aud{ @ psibase !  \ Assume a match.
            THEN  \  End of test for act=8 or positive.
          THEN   \ End of test for two-letter words.
        THEN   \ End of test in AudRecog for end of word.
        I 1 aud{ @ 8 > IF  \ If activation higher than initial
          8 actbase !  \ Since act is > 8 anyway; 8may2010
          I 4 aud{ @ 0 = IF  \ If matching word-engram now ends,
            I 1 aud{ @ actbase @ > IF  \ Testing for high act.
              I 5 aud{ @ audrec !  \ Fetch the potential tag
              I 5 aud{ @ subpsi !  \ Seize a potential stem.
              len @ sublen !    \ Hold length of word-stem.
              I 5 aud{ @ psibase !  \ Hold onto winner.
              I 2 psi{ @ recnum !   \ recognized number 19jul2011
              I   4 en{ @  0 > IF  \ from German AI; 27dec2012
                I 4 en{ @ dba !  \ verb-recognition; 27dec2012
              THEN  \  end of test for dba; 27nov20122012
              I 1 aud{ @ actbase !  \ Winner is new actbase.
            THEN  \ End of test for act higher than actbase.
          ELSE  \ part of AudRecog code; 14jul2012
            0 audrec !
            monopsi @ 0 > IF
              monopsi @ audrec !
              0 monopsi !
            THEN  ( http://code.google.com/p/reda4 )
          THEN  \ End of test for final char that has a psi-tag.
        THEN  \  End of test for engram-activation above eight.
      THEN  \ End of test for matching aud0 with activation.
    THEN  \ End of test for a character matching "pho".
    I midway @ = IF  \ If a loop reaches midway; 8may2010
      1 audrun +!  \ Increment audrun beyond unity; 8may2010
    THEN   \ End of test for loop reaching midway; 8may2010
  -1 +LOOP
  0 act !
  0 actbase !
  psibase @ 0 > IF
     psibase @  audrec !
  THEN
  audrec @ 0 = IF
    monopsi @ 0 > IF
      len @ 2 < IF
        monopsi @ audrec !
      THEN
      0 monopsi !
   audrec @ 0 = IF
        psibase @ 0 > IF
          psibase @ audrec !
        THEN
      THEN
    THEN
  THEN
  audrec @ 0 = IF
      morphpsi @ audrec !
    sublen @ 0 > IF
      len @ sublen @ -  stemgap !
    THEN
    stemgap @ 0 < IF 0 stemgap ! THEN
    stemgap @ 1 > IF 0 subpsi ! THEN
    stemgap @ 1 > IF 0 morphpsi ! THEN
    stemgap @ 1 > IF 0 audrec ! THEN
  THEN
  subpsi @ morphpsi !
  0 psibase !
  0 subpsi !
  audrec @ 0 > IF
    stemgap @ 2 > IF
      0 audrec !
    THEN
  THEN
  audrec @ audpsi !
  0 stemgap !  \ safety measure; 22sep2011
; ( http://code.google.com/p/mindforth/wiki/AudRecog )


:  AudMem ( auditory memory channel )
  t @ vault @ > IF
    pho @ 32 > IF
      AudRecog
    THEN  ( ASCII 32 = SPACE-bar )
  THEN  ( http://pygmy.utoh.org/pygmyforth.html )
    t @ 1-  0 aud{ @  0 = IF  1 beg !  THEN
    t @ 1-  0 aud{ @ 32 = IF  1 beg !  THEN
    pho @  t @  0 aud{ !
    pov @  t @  2 aud{ !
    beg @  t @  3 aud{ !
    ctu @  t @  4 aud{ !
    ctu @ 0 = IF
      audpsi @ 0 > IF
        audpsi @  t @  5 aud{ !
      THEN
      0 audpsi !
    THEN  ( http://home.earthlink.net/~gmayhak/M5_htm.htm )
    pov @ 42 = IF
      pho @ 83 = IF
        0 stempsi !
        wordend @ 1 = IF
            0 t @ 1- 4 aud{ !
        THEN
        0 newpsi !
      THEN
    THEN
    pho @ 32 = IF t @ spt !  THEN
; ( http://code.google.com/p/mindforth/wiki/AudMem )


:  AudListen ( preparation for AudInput )
  t @  2 +  tsn !  \ time when awaiting input; test; 1jul2012
  rsvp @  1  DO
    KEY? IF
      KEY pho !
      0 inert !  \ User input cancels "inert" status; 16oct2011
      0 quiet !
      pho @  8 = IF 7 EMIT THEN
      pho @  9 = IF
         400 rsvp !  ( 23dec2009 From Supercomputer mind.frt )
        pho @ 13 = IF  1 lastword !  THEN
        fyi @ 0 = IF CR CR
          TIME&DATE  tsyear ! tsmonth ! tsday !
          tshour ! tsminute ! tssecond !
          ." Transcript of Forthmind "
          vrsn @ . ." interview at "  \ declare version; 3aug2012
          tshour @ . tsminute @ . tssecond @ .
          ." o'clock on " tsday @ .
          tsmonth @  1 = IF ." January "   THEN
          tsmonth @  2 = IF ." February "  THEN
          tsmonth @  3 = IF ." March "     THEN
          tsmonth @  4 = IF ." April "     THEN
          tsmonth @  5 = IF ." May "       THEN
          tsmonth @  6 = IF ." June "      THEN
          tsmonth @  7 = IF ." July "      THEN
          tsmonth @  8 = IF ." August "    THEN
          tsmonth @  9 = IF ." September " THEN
          tsmonth @ 10 = IF ." October "   THEN
          tsmonth @ 11 = IF ." November "  THEN
          tsmonth @ 12 = IF ." December "  THEN
          tsyear @ . 8 EMIT 46 EMIT CR
        THEN
        1 fyi +!
        fyi @ 3 > IF 0 fyi ! THEN
        fyi @ 0 = IF CR ." Normal display mode. Tab 1 = "
          ." Transcript; 2 = Tutorial; 3 = Diagnostic." CR
        THEN
        fyi @ 2 = IF CR
          ."   Tutorial mode reveals the internal "
          ." thinking of the AI Mind." CR CR
        THEN
        fyi @ 3 = IF CR
          ." Diagnostic messages - ignore during input "
          ." until you press ENTER." CR
        THEN
        0  pho !
      THEN
      pho @ 27 = IF
        0 nounval !
        0 lopsi !   0 hipsi !
        CR
        CR ." User Command:  halt" 0 pho ! 0 rjc ! 0 fyi !
        CR ." You may enter .psi or .en or .aud to view "
        ." memory engrams, or " CR ." MainLoop [ENTER] "
        ." to erase memories and restart the Mind."
        CR ." Type 'bye' to quit Forth, EXIT to quit DOS."
        CR
        0 audpsi ! 0 newpsi ! 0 oldpsi ! 0 stempsi !
        1 audrun !     \ 26jul2010 In case AI is run again.
        0 defartcon !  \ 16apr2011 In case AI is run again.
        0 indefartcon ! \ 16apr2011 In case AI is run again.
        0 kbtv !       \ 28sep2010 In case AI is run again.
        0 mfn !        \ 25aug2010 In case AI is run again.
        0 mfnflag !    \ 23aug2010 In case AI is run again.
        0 motjuste !   \ 29aug2010 In case AI is run again.
        0 objold !     \ 12oct2010 In case AI is run again.
        0 ordo !       \ 21dec2009 In case AI is run again.
        0 prsn !       \ 29aug2010 In case AI is run again.
        0 psi1 !       \ 25aug2010 In case AI is run again.
        0 quo !        \ 27dec2009 In case AI is run again.
        0 qup !        \ 28dec2009 In case AI is run again.
        0 subjold !    \  9oct2010 In case AI is run again.
        0 subjpsi !    \  1jan2010 In case AI is run again.
        0 vphract !    \ 21jun2011 In case AI is run again.
        0 whoflag !    \ 23jul2010 In case AI is run again.
        QUIT
      THEN
      pho @ 0 > IF
        pho @ EMIT
      THEN
      pho @ DUP 96 > IF  \ convert input to UPPERCASE
        DUP 123 < IF
          32 -
        THEN
      THEN  pho !  \ save UPPERCASE as pho(neme) again.
      pho @ abc !  \ for transfer to AudBuffer; 12nov2012
      LEAVE
      ELSE
      ."  "
    THEN
    8  EMIT
  LOOP
  pho @ 0 > IF \ if user enters data; 19sep2010
    0 lurk !  \ reset; 19sep2010
  THEN   \ end of test for user entry; 19sep2010
  1 lurk +!   \ test; remove; 19sep2010
; ( http://code.google.com/p/mindforth/wiki/AudListen )


:  AudInput ( accept auditory input )
  0 match !
  0 upnext !
  0 urpsi !
  t @ nlt !
  pov @  42 = IF
    fyi @ 2 = IF
      ."     AudInput calls AudListen "
      ."  (Tab key will slow the AI down)." CR
    THEN
     t @ spt !
     t @ 8 >  IF  .echo  THEN  ( show output of AI )
     CR ." Human: "
  THEN
  140 0 DO ( Accept a tweet of 140 characters from Twitter)
    pov @ 35 = IF  ( during internal re-entry )
      pho @ 13 = IF  \ if a CR is declared; 8may2010
        1 audrun !  \ Reset to one at CR end of input.
      THEN  \ end of test for a declared CR; 8may2010
      1 upnext +!
      upnext @ 1 = IF
        obstat @ 0 = IF
          kbpsi @ lopsi !
          0 kbpsi !
          lopsi @ urpsi !
          3535 caller !
          pho @ 64 > IF
            urpsi @ qup @ = IF
              urpsi @ vacpsi ! \ prep to deglobalize; 27sep2010
              urpsi @ psi ! VerbAct
              0 vacpsi !  \ reset for safety; 27sep2010
            THEN
          THEN
          hipsi @ lopsi !
          0 caller !
          0 urpsi !
          1 obstat !
        THEN
      THEN  \ AudInput; 14jul2012
      bias @ 5 = IF  \ If EnParser expects a noun; 6aug2011
        pho @ 83 = IF  \ If "83=S";  6aug2011
          2 num !  \ Assign plural number; 6aug2011
          2 ocn !  \ Dislodgeable old-concept number; 14oct2011
        THEN  \ Only terminating "S" governs "num" 6aug2011
        pho @  0 > IF   \ Disregard empty pho; 6aug2011
          pho @  32 = NOT IF  \ Disregard SPACE; 6aug2011
            pho @  13 = NOT IF  \ Disregard CR; 6aug2011
              pho @ 83 = NOT IF \ If other than "S"; 6aug2011
               recnum @ 0 > IF  \ if recognized; 4nov2011
                recnum @ num !  \  transfer value; 14jul2012
                recnum @ ocn !  \  transfer value; 14jul2012
               ELSE  \ for non-S words w. no recnum; 16jul2012
                0 num !  \ default non-plural; 14jul2011
                0 ocn !  \ default non-plural; 14jul2012
               THEN  \ end of recognition-test; 4nov2011
              ELSE  \ if there is a recnum; 16jul2012
                recnum @ num !  \ transfer value; 16jul2012
                recnum @ ocn !  \ transfer value; 16jul2012
              THEN  \ If last letter is not "S"; 6aug2011
            THEN  \ End of test for carriage-return 6aug2011
          THEN  \  End of test for SPACE; 6aug2011
        THEN  \ End of test for empty pho; 6aug2011
      THEN  \ End of test for noun-expected; 6aug2011
    THEN  \ end of test for pov "35=#" internal reentry
    pov @ 42 = IF   ( during external input )
      AudListen
      pho @ 0 > IF  \ If a character comes in; 14nov2012
        AudBuffer  \ For external input; 14nov2012
      THEN  \ end of test for a positive "pho"; 14mov2012
      pho @ 0 > IF
        0 kbtv !
        1 upnext +!
        upnext @ 1 = IF
          hipsi @ urpsi !  \ What-do queries require
          hipsi @ lopsi ! \ Preventing a residuum lets
          0 caller !  \ SelfRef answer I DO NOT KNOW
          0 urpsi !  \ if no direct object is active.
        THEN
        400 rsvp !  ( give more time )
      THEN
      I 138 = IF
        rsvp @ 250 > IF 100 rsvp ! THEN
      THEN
      I 139 = IF
        pho @ 0 = IF
          rsvp @ 1 - rsvp !
          rsvp @ 2 < IF 400 rsvp ! THEN
        THEN
      THEN
      pho @ 32 = pho @ 13 = OR IF
        0 phodex !  \ Reset for AudBuffer; 14nov2012
        pho @ 13 = IF 10 EMIT THEN
        prepho @ 83 = IF
          0 t @ 1 - 4 aud{ !
          0 prepho !
        THEN
      THEN
      bias @ 5 = IF  \ If EnParser expects a noun 26may2011
        pho @ 83 = IF  \ If "S"
          2 num !  \ Assign plural number; 26may2011
        THEN  \ Only terminating "S" governs "num" 26may2011
        pho @  0 > IF   \ Disregard empty pho;  26may2011
          pho @  32 = NOT IF  \ Disregard SPACE; 26may2011
            pho @  13 = NOT IF  \ Disregard CR; 26may2011
              pho @ 83 = NOT IF \ If other than "S" 26may2011
                0 num !  \ Let "0" be default singular; 4nov2011
                singflag @ 1 = IF  \ article "a"? 4nov2011
                  1 num !  \ Assume singular number; 26may2011
                THEN  \ end of test to override default; 4nov2011
              THEN  \ If last letter is not "S"; 26may2011
            THEN  \ End of test for carriage-return 26may2011
          THEN  \  End of test for SPACE; 26may2011
        THEN  \ End of test for empty pho;  26may2011
      THEN  \ End of test for noun-expected; 26may2011
    THEN  \ End of test for external input
    pho @  0 > IF
      1 t +!
    THEN
    I 139 = IF  \ near end of input loop? 16oct2011
      1 inert +!  \  increment inert-flag by one; 16oct2011
    THEN  \ end of test for near-end of wait; 16oct2011
    pho @ 13 = IF  ( carriage-return; 24jan2013 )
       1 audrun !  \ Reset to one at CR end of input.
       1 beg !
      13 eot !
       1 lastword !
      32 pho !  10 EMIT  CR  \ 7sep2011
       0 proxcon !  \ reset at end of input; 7sep2011
       1 quiet !
     \ 0 seqneed !  \ test; 30jun2012
     \ 0 seqneed !  \ C-ing out for object-less verbs 24jan2013
    THEN   ( http://www.inventio.co.uk )
    pho @ 27 =  IF
      CR ." AudInput: halt"  0 pho !  0 fyi !  0 nounval !
      CR ." You may enter .psi .en .aud to view memory "
      ." engrams, or " CR ." MainLoop [ENTER] to erase "
      ." memories and run the AI again."
      0 lopsi !  0 hipsi !
      0 audpsi ! 0 newpsi ! 0 oldpsi ! 0 stempsi !
      QUIT
    THEN
    pho @ 32 = IF  ( space-bar; 24jan2013 )
      prepho @ penultpho !
      1 audrun !  \ Reset to unity at end of a word.
      1 ordo +!
      audpsi @ urpsi !
      ordo @ 1 = IF audpsi @ firstword ! THEN  \ 19aug2011
      0 upnext !
      t @  spt !
      t @  1 - tult !
      0  tult @  4 aud{ !
      audpsi @  0 >  IF
        0 sublen !
        onset @ aud !
        0 onset !
  audpsi @  tult @  5 aud{ !
        pov @ 42 = IF
          tult @ 0 aud{ @ 83 = IF
       tult @ 1- 5 aud{ @ audpsi @ = NOT IF
              0  tult @ 1- 4 aud{ !
            THEN
   audpsi @  tult @ 1- 5 aud{ !
          THEN
        THEN
        audpsi @ hipsi !
        audpsi @ oldpsi !
        OldConcept
        eot @ 13 = IF
          35 pov !
        THEN
        0 psi !
        0 audpsi !
        0 aud !
      ELSE
        len @ 0 > IF
          onset @ aud !
          hipsi @ lopsi !
          1 wordend !
          NewConcept
          psi @ hipsi !
            nen @  tult @  5 aud{ !
     nen @  tult @ 1- 5 aud{ !
            nen @ retropsi !
        THEN
      THEN
      AudDamp
      0 len !
      0 aud !
      eot @ 13 = IF
        5 bias !
      THEN
      0 psi !
    THEN  \ end of test for 13=SPACE; 24jan2013
    1 beg !
    1 ctu !
    spt @ 1 + onset !
      t @  onset @  = IF  1 beg !  ELSE  0 beg !  THEN
    pho @ 32 > IF
      1 len +!
      AudMem
    THEN
    eot @ 13 = IF
      5 bias !
      1 quiet !
    THEN
    eot @  0 > IF
      eot @ 14 = IF
        1 quiet !
        0 eot !
        0 pho !
        LEAVE
      THEN
      14 eot !
    THEN
    pho @ 0 > IF
      pho @ prepho !
    THEN
    0 pho !
  LOOP
  hipsi @ kbpsi !
  0 newpsi !
  0 wordend ! 
; ( http://code.google.com/p/mindforth/wiki/AudInput )


:  SensoryInput ( sensory input channels )
 ( SMELL  -- normal sensory stub for later implementation )
 ( VISION -- normal sensory stub for seed AI expansion )
 ( TOUCH  -- normal haptics stub for cybernetic organisms )
 ( TASTE  -- normal sensory stub for cyborg alife )
 ( SYNAESTHESIA -- an option in a multisensory AI )
     fyi @ 2 = IF
 ."   SensoryInput calls AudInput." CR
     THEN
   AudInput  ( for entry or reentry of phonemic ASCII )
 ( COMPASS  -- exotic sensory stub for use in robots )
 ( GEIGER   -- exotic: Geiger counter )
 ( GPS      -- exotic: Global Positioning System )
 ( INFRARED -- exotic )
 ( RADAR    -- exotic: RAdio Detection And Ranging )
 ( SONAR    -- exotic: SOund Navigation And Ranging )
 ( VSA      -- exotic: Voice Stress Analyzer lie detector )
 ( Wi-Fi    -- exotic: 802.11 wireless fidelity )
; ( http://code.google.com/p/mindforth/wiki/SensoryInput )


:  EnBoot ( English bootstrap of initial concepts )
  0 act ! 0 jux ! 35 pov ! 0 t ! t @ spt !
  ." clearing memory"
  CR ." There is no warranty for what this software does."
 ( ERROR -- first word so any bug will announce itself )
    1 t ! 69 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ E
    2 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
    3 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
    4 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
    5 t ! 82 pho ! 0 beg !   0 ctu ! 586 audpsi ! AudMem \ R
586 nen !  3 mfn ! 0 dba ! 586 fex ! 5 pos ! 586 fin ! 1 aud !
586 psi !  1 num ! 0 pre !   0 seq ! 586 enx ! EnVocab InNativate

 ( A -- English article for EnArticle module; 8 nov2012 )
    7 t ! 65 pho ! 1 beg !   0 ctu ! 101 audpsi ! AudMem \ A
101 nen !  0 mfn ! 0 dba ! 101 fex ! 1 pos ! 101 fin ! 7 aud !
101 psi !  1 num ! 0 pre !   0 seq ! 101 enx ! EnVocab InNativate

 ( ALL -- for machine reasoning logic; 8nov2012 )
    9 t ! 65 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ A
   10 t ! 76 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ L
   11 t ! 76 pho ! 0 beg !   0 ctu ! 123 audpsi ! AudMem \ L
123 nen !  0 mfn ! 0 dba ! 123 fex ! 1 pos ! 123 fin ! 9 aud !
123 psi !  0 num ! 0 pre !   0 seq ! 123 enx ! EnVocab InNativate

 ( AN -- to be selected instead of "A" before a vowel )
   13 t ! 65 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ A
   14 t ! 78 pho ! 0 beg !   0 ctu ! 102 audpsi ! AudMem \ N
102 nen !  0 mfn ! 0 dba ! 102 fex ! 1 pos ! 102 fin ! 13 aud !
102 psi !  0 num ! 0 pre !   0 seq ! 102 enx ! EnVocab InNativate

 ( AND -- for machine reasoning logic; 8nov2012 )
   16 t ! 65 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ A
   17 t ! 78 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ N
   18 t ! 68 pho ! 0 beg !   0 ctu ! 302 audpsi ! AudMem \ D
302 nen !  0 mfn ! 0 dba ! 302 fex ! 3 pos ! 302 fin ! 16 aud !
302 psi !  0 num ! 0 pre !   0 seq ! 302 enx ! EnVocab InNativate

 ( ANY -- for machine reasoning logic; 8nov2012 )
   20 t ! 65 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ A
   21 t ! 78 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ N
   22 t ! 89 pho ! 0 beg !   0 ctu ! 111 audpsi ! AudMem \ Y
111 nen !  0 mfn ! 0 dba ! 111 fex ! 1 pos ! 111 fin ! 20 aud !
111 psi !  0 num ! 0 pre !   0 seq ! 111 enx ! EnVocab InNativate

 ( ANYTHING -- a default direct object for AskUser; 8nov2012 )
   24 t ! 65 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ A
   25 t ! 78 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ N
   26 t ! 89 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ Y
   27 t ! 84 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ T
   28 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
   29 t ! 73 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ I
   30 t ! 78 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ N
   31 t ! 71 pho ! 0 beg !   0 ctu ! 711 audpsi ! AudMem \ G
711 nen !  0 mfn ! 4 dba ! 711 fex ! 7 pos ! 711 fin ! 24 aud !
711 psi !  0 num ! 0 pre !  0 seq  ! 711 enx ! EnVocab InNativate

 ( BAD -- adjective for EnAdjective module; 8nov2012 )
   33 t ! 66 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ B
   34 t ! 65 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ A
   35 t ! 68 pho ! 0 beg !   0 ctu ! 186 audpsi ! AudMem \ D
186 nen !  0 mfn ! 0 dba ! 186 fex ! 1 pos ! 186 fin ! 33 aud !
186 psi !  0 num ! 0 pre !   0 seq ! 186 enx ! EnVocab InNativate

 ( BE -- infinitive impersonal form of 800=BE;  8nov2012 )
   37 t ! 66 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ B
   38 t ! 69 pho ! 0 beg !   0 ctu ! 800 audpsi ! AudMem \ E
800 nen !  0 mfn ! 0 dba ! 800 fex ! 8 pos ! 800 fin ! 37 aud !
800 psi !  0 num ! 0 pre !   0 seq ! 800 enx ! EnVocab InNativate

 ( AM -- 1st person singular I-form of 800=BE;  8nov2012 )
   40 t ! 65 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ A
   41 t ! 77 pho ! 0 beg !   0 ctu ! 800 audpsi ! AudMem \ M
800 nen !  0 mfn ! 1 dba ! 800 fex ! 8 pos ! 800 fin ! 40 aud !
800 psi !  1 num ! 0 pre !   0 seq ! 800 enx ! EnVocab InNativate

 ( ARE -- 2nd person singular YOU-form of 800=BE;  8nov2012 )
   43 t ! 65 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ A
   44 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
   45 t ! 69 pho ! 0 beg !   0 ctu ! 800 audpsi ! AudMem \ E
800 nen !  0 mfn ! 2 dba ! 800 fex !   8 pos ! 800 fin ! 43 aud !
800 psi !  1 num ! 0 pre !   0 seq ! 800 enx ! EnVocab InNativate

 ( IS -- 3rd person singular HE-SHE-IT-form of 800=BE; 8nov2102 )
   47 t ! 73 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ I
   48 t ! 83 pho ! 0 beg !   0 ctu ! 800 audpsi ! AudMem \ S
800 nen !  0 mfn ! 3 dba ! 800 fex ! 8 pos ! 800 fin ! 47 aud !
800 psi !  1 num ! 0 pre !   0 seq ! 800 enx ! EnVocab InNativate

 ( ARE -- 1st person plural WE-form of 800=BE;  8nov2012 )
   50 t ! 65 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ A
   51 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
   52 t ! 69 pho ! 0 beg !   0 ctu ! 800 audpsi ! AudMem \ E
800 nen !  0 mfn ! 1 dba ! 800 fex ! 8 pos ! 800 fin ! 50 aud !
800 psi !  2 num ! 0 pre !   0 seq ! 800 enx ! EnVocab InNativate

 ( ARE -- 2nd person plural YOU-form of 800=BE;  4nov2012 )
   54 t ! 65 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ A
   55 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
   56 t ! 69 pho ! 0 beg !   0 ctu ! 800 audpsi ! AudMem \ E
800 nen !  0 mfn ! 2 dba ! 800 fex ! 8 pos ! 800 fin ! 54 aud !
800 psi !  2 num ! 0 pre !   0 seq ! 800 enx ! EnVocab InNativate

 ( ARE -- 3rd person plural THEY-form of 800=BE; 8nov2012 )
   58 t ! 65 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ A
   59 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
   60 t ! 69 pho ! 0 beg !   0 ctu ! 800 audpsi ! AudMem \ E
800 nen !  0 mfn ! 3 dba ! 800 fex ! 8 pos ! 800 fin ! 58 aud !
800 psi !  2 num ! 0 pre !   0 seq ! 800 enx ! EnVocab InNativate

 ( BECAUSE -- for machine reasoning logic; 9nov2012 )
   62 t ! 66 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ B
   63 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
   64 t ! 67 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ C
   65 t ! 65 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ A
   66 t ! 85 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ U
   67 t ! 83 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ S
   68 t ! 69 pho ! 0 beg !   0 ctu ! 344 audpsi ! AudMem \ E
344 nen !  0 mfn ! 0 dba ! 344 fex ! 3 pos ! 344 fin ! 62 aud !
344 psi !  0 num ! 0 pre !   0 seq ! 344 enx ! EnVocab InNativate

 ( BECOME -- essential intransitive verb; 9nov2012 )
   70 t ! 66 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ B
   71 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
   72 t ! 67 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ C
   73 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
   74 t ! 77 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ M
   75 t ! 69 pho ! 0 beg !   0 ctu ! 808 audpsi ! AudMem \ E
808 nen !  0 mfn ! 0 dba ! 808 fex ! 8 pos ! 808 fin ! 70 aud !
808 psi !  0 num ! 0 pre !   0 seq ! 808 enx ! EnVocab InNativate

 ( BOY -- always masculine noun for use with gender flags )
   77 t ! 66 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ B
   78 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
   79 t ! 89 pho ! 0 beg !   0 ctu ! 589 audpsi ! AudMem \ Y
589 nen !  1 mfn ! 0 dba ! 589 fex ! 5 pos ! 589 fin ! 77 aud !
589 psi !  1 num ! 0 pre !   0 seq ! 589 enx ! EnVocab InNativate

 ( BUT -- conjunction for ConJoin module; 9nov2012 )
   81 t ! 66 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ B
   82 t ! 85 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ U
   83 t ! 84 pho ! 0 beg !   0 ctu ! 305 audpsi ! AudMem \ T
305 nen !  0 mfn ! 0 dba ! 305 fex !   3 pos ! 305 fin ! 81 aud !
305 psi !  0 num ! 0 pre !   0 seq ! 305 enx ! EnVocab InNativate

( CHESS -- important singular AI noun ending in "S"; 9nov2012 )
   85 t ! 67 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ C
   86 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
   87 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
   88 t ! 83 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ S
   89 t ! 83 pho ! 0 beg !   0 ctu ! 564 audpsi ! AudMem \ S
564 nen !  0 mfn ! 0 dba ! 564 fex ! 5 pos ! 564 fin ! 85 aud !
564 psi !  1 num ! 0 pre !   0 seq ! 564 enx ! EnVocab InNativate

( CHILD -- example of irregular noun for a polyglot AI Mind )
   91 t ! 67 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ C
   92 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
   93 t ! 73 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ I
   94 t ! 76 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ L
   95 t ! 68 pho ! 0 beg !   0 ctu ! 525 audpsi ! AudMem \ D
525 nen !  0 mfn ! 0 dba ! 525 fex ! 5 pos ! 525 fin ! 91 aud !
525 psi !  1 num ! 0 pre !   0 seq ! 525 enx ! EnVocab InNativate

( CHILDREN -- irregular plural for retrieval by parameters )
   97 t ! 67 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ C
   98 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
   99 t ! 73 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ I
  100 t ! 76 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ L
  101 t ! 68 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ D
  102 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
  103 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  104 t ! 78 pho ! 0 beg !   0 ctu ! 526 audpsi ! AudMem \ N
526 nen !  0 mfn ! 0 dba ! 526 fex ! 5 pos ! 526 fin ! 97 aud !
526 psi !  2 num ! 0 pre !   0 seq ! 526 enx ! EnVocab InNativate

 ( DATA -- always plural noun in correction of modern usage )
  106 t ! 68 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ D
  107 t ! 65 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ A
  108 t ! 84 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ T
  109 t ! 65 pho ! 0 beg !   0 ctu ! 599 audpsi ! AudMem \ A
599 nen !  0 mfn ! 0 dba ! 599 fex ! 5 pos ! 599 fin ! 106 aud !
599 psi !  2 num ! 0 pre !   0 seq ! 599 enx ! EnVocab InNativate

 ( DO -- infinitive form of verb essential for AuxVerb module )
  111 t ! 68 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ D
  112 t ! 79 pho ! 0 beg !   0 ctu ! 830 audpsi ! AudMem \ O
830 nen !  0 mfn ! 0 dba ! 830 fex ! 8 pos ! 830 fin ! 111 aud !
830 psi !  0 num ! 0 pre !   0 seq ! 830 enx ! EnVocab InNativate

 ( DO -- 1st person singular I-form of auxiliary verb; 9nov2012 )
  114 t ! 68 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ D
  115 t ! 79 pho ! 0 beg !   0 ctu ! 830 audpsi ! AudMem \ O
830 nen !  0 mfn ! 1 dba ! 830 fex ! 8 pos ! 830 fin ! 114 aud !
830 psi !  1 num ! 0 pre !   0 seq ! 830 enx ! EnVocab InNativate

 ( DO -- 2nd person sing. YOU-form of auxiliary verb; 9nov2012 )
  117 t ! 68 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ D
  118 t ! 79 pho ! 0 beg !   0 ctu ! 830 audpsi ! AudMem \ O
830 nen !  0 mfn ! 2 dba ! 830 fex ! 8 pos ! 830 fin ! 117 aud !
830 psi !  1 num ! 0 pre !   0 seq ! 830 enx ! EnVocab InNativate

 ( DOES -- 3rd person sing. HE-SHE-IT-form of auxiliary verb )
  120 t ! 68 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ D
  121 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  122 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  123 t ! 83 pho ! 0 beg !   0 ctu ! 830 audpsi ! AudMem \ S
830 nen !  0 mfn ! 3 dba ! 830 fex ! 8 pos ! 830 fin ! 120 aud !
830 psi !  1 num ! 0 pre !   0 seq ! 830 enx ! EnVocab InNativate

 ( DO -- 1st person plural WE-form of auxiliary verb; 9nov2012 )
  125 t ! 68 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ D
  126 t ! 79 pho ! 0 beg !   0 ctu ! 830 audpsi ! AudMem \ O
830 nen !  0 mfn ! 1 dba ! 830 fex ! 8 pos ! 830 fin ! 125 aud !
830 psi !  2 num ! 0 pre !   0 seq ! 830 enx ! EnVocab InNativate

 ( DO -- 2nd person plural YOU-form of auxiliary verb; 9nov2012 )
  128 t ! 68 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ D
  129 t ! 79 pho ! 0 beg !   0 ctu ! 830 audpsi ! AudMem \ O
830 nen !  0 mfn ! 2 dba ! 830 fex ! 8 pos ! 830 fin ! 128 aud !
830 psi !  2 num ! 0 pre !   0 seq ! 830 enx ! EnVocab InNativate

 ( DO -- 3rd person plural THEY-form of auxiliary verb; 9nov2012 )
  131 t ! 68 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ D
  132 t ! 79 pho ! 0 beg !   0 ctu ! 830 audpsi ! AudMem \ O
830 nen !  0 mfn ! 3 dba ! 830 fex ! 8 pos ! 830 fin ! 131 aud !
830 psi !  2 num ! 0 pre !   0 seq ! 830 enx ! EnVocab InNativate

 ( DOING -- high word-frequency verb participle; 9nov2102 )
  134 t ! 68 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ D
  135 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  136 t ! 73 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ I
  137 t ! 78 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ N
  138 t ! 71 pho ! 0 beg !   0 ctu ! 183 audpsi ! AudMem \ G
183 nen !  0 mfn ! 0 dba ! 183 fex ! 1 pos ! 183 fin ! 134 aud !
183 psi !  0 num ! 0 pre !   0 seq ! 183 enx ! EnVocab InNativate

 ( ELSE -- adverb for machine reasoning logic; 9nov2012 )
  140 t ! 69 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ E
  141 t ! 76 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ L
  142 t ! 83 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ S
  143 t ! 69 pho ! 0 beg !   0 ctu ! 266 audpsi ! AudMem \ E
266 nen !  0 mfn ! 0 dba ! 266 fex ! 2 pos ! 266 fin ! 140 aud !
266 psi !  0 num ! 0 pre !   0 seq ! 266 enx ! EnVocab InNativate

 ( FOR -- preposition for EnPrep module; 9nov2012 )
  145 t ! 70 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ F
  146 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  147 t ! 82 pho ! 0 beg !   0 ctu ! 640 audpsi ! AudMem \ R
640 nen !  0 mfn ! 0 dba ! 640 fex ! 6 pos ! 640 fin ! 145 aud !
640 psi !  0 num ! 0 pre !   0 seq ! 640 enx ! EnVocab InNativate

 ( FRIEND -- for coding assignment of ad-hoc gender tags )
  149 t ! 70 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ F
  150 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
  151 t ! 73 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ I
  152 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  153 t ! 78 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ N
  154 t ! 68 pho ! 0 beg !   0 ctu ! 517 audpsi ! AudMem \ D
517 nen !  0 mfn ! 0 dba ! 517 fex ! 5 pos ! 517 fin ! 149 aud !
517 psi !  1 num ! 0 pre !   0 seq ! 517 enx ! EnVocab InNativate

 ( GIRL -- always feminine noun for use with gender flags )
  156 t ! 71 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ G
  157 t ! 73 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ I
  158 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
  159 t ! 76 pho ! 0 beg !   0 ctu ! 510 audpsi ! AudMem \ L
510 nen !  2 mfn ! 0 dba ! 510 fex ! 5 pos ! 510 fin ! 156 aud !
510 psi !  1 num ! 0 pre !   0 seq ! 510 enx ! EnVocab InNativate

 ( GOD -- masculine noun important for philosophy of AI )
  161 t ! 71 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ G
  162 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  163 t ! 68 pho ! 0 beg !   0 ctu ! 533 audpsi ! AudMem \ D
533 nen !  1 mfn ! 0 dba ! 533 fex ! 5 pos ! 533 fin ! 161 aud !
533 psi !  1 num ! 0 pre !   0 seq ! 533 enx ! EnVocab InNativate

( GOOD -- adjective for EnAdjective module; 9nov2012 )
  165 t ! 71 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ G
  166 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  167 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  168 t ! 68 pho ! 0 beg !   0 ctu ! 140 audpsi ! AudMem \ D
140 nen !  0 mfn ! 0 dba ! 140 fex ! 1 pos ! 140 fin ! 165 aud !
140 psi !  0 num ! 0 pre !   0 seq ! 140 enx ! EnVocab InNativate

( HAVE -- irregular high-word-frequency verb; 9nov2012 )
  170 t ! 72 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ H
  171 t ! 65 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ A
  172 t ! 86 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ V
  173 t ! 69 pho ! 0 beg !   0 ctu ! 810 audpsi ! AudMem \ E
810 nen !  0 mfn ! 0 dba ! 810 fex ! 8 pos ! 810 fin ! 170 aud !
810 psi !  0 num ! 0 pre !  0 seq ! 810 enx ! EnVocab InNativate

( HAS -- high-word-frequency irregular verb form; 9nov2012 )
  175 t ! 72 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ H
  176 t ! 65 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ A
  177 t ! 83 pho ! 0 beg !   0 ctu ! 810 audpsi ! AudMem \ S
810 nen !  0 mfn ! 3 dba ! 810 fex ! 8 pos ! 810 fin ! 175 aud !
810 psi !  1 num ! 0 pre !   0 seq ! 810 enx ! EnVocab InNativate

( HE -- nominative form of high-word-frequency pronoun; 9nov2012 )
  179 t ! 72 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ H
  180 t ! 69 pho ! 0 beg !   0 ctu ! 713 audpsi ! AudMem \ E
713 nen !  1 mfn ! 1 dba ! 713 fex ! 7 pos ! 713 fin ! 179 aud !
713 psi !  1 num ! 0 pre !   0 seq ! 713 enx ! EnVocab InNativate

( HIS -- genitive form of personal pronoun; 9nov2012 )
  182 t ! 72 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ H
  183 t ! 73 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ I
  184 t ! 83 pho ! 0 beg !   0 ctu ! 113 audpsi ! AudMem \ S
113 nen !  1 mfn ! 2 dba ! 113 fex ! 1 pos ! 113 fin ! 182 aud !
113 psi !  1 num ! 0 pre !   0 seq ! 113 enx ! EnVocab InNativate

( HIM -- dative indirect-object form of personal pronoun )
  186 t ! 72 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ H
  187 t ! 73 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ I
  188 t ! 77 pho ! 0 beg !   0 ctu ! 713 audpsi ! AudMem \ M
713 nen !  1 mfn ! 3 dba ! 713 fex ! 7 pos ! 713 fin ! 186 aud !
713 psi !  1 num ! 0 pre !   0 seq ! 713 enx ! EnVocab InNativate

( HIM -- accusative direct-object form of personal pronoun )
  190 t ! 72 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ H
  191 t ! 73 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ I
  192 t ! 77 pho ! 0 beg !   0 ctu ! 713 audpsi ! AudMem \ M
713 nen !  1 mfn ! 4 dba ! 713 fex ! 7 pos ! 713 fin ! 190 aud !
713 psi !  1 num ! 0 pre !   0 seq ! 713 enx ! EnVocab InNativate

( HELLO -- interjection for human-computer interaction; 9nov2012 )
  194 t ! 72 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ H
  195 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  196 t ! 76 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ L
  197 t ! 76 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ L
  198 t ! 79 pho ! 0 beg !   0 ctu ! 450 audpsi ! AudMem \ O
450 nen !  0 mfn ! 0 dba ! 450 fex ! 4 pos ! 450 fin ! 194 aud !
450 psi !  0 num ! 0 pre !   0 seq ! 450 enx ! EnVocab InNativate

( HERE -- adverb for discussion of physical location; 9nov2012 )
  200 t ! 72 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ H
  201 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  202 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
  203 t ! 69 pho ! 0 beg !   0 ctu ! 201 audpsi ! AudMem \ E
201 nen !  0 mfn ! 0 dba ! 201 fex ! 2 pos ! 201 fin ! 200 aud !
201 psi !  0 num ! 0 pre !   0 seq ! 201 enx ! EnVocab InNativate

( HOW -- adverb for EnAdverb module; 10nov2012 )
  205 t ! 72 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ H
  206 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  207 t ! 87 pho ! 0 beg !   0 ctu ! 209 audpsi ! AudMem \ W
209 nen !  0 mfn ! 0 dba ! 209 fex ! 2 pos ! 209 fin ! 205 aud !
209 psi !  0 num ! 0 pre !   0 seq ! 209 enx ! EnVocab InNativate

( I -- nominative subject-form of personal pronoun; 10nov2012 )
  209 t ! 73 pho ! 1 beg !   0 ctu ! 701 audpsi ! AudMem \ I
701 nen !  0 mfn ! 1 dba ! 701 fex ! 7 pos ! 707 fin  ! 209 aud !
701 psi !  1 num ! 0 pre !   0 seq ! 701 enx ! EnVocab InNativate

( MINE -- genitive form of personal pronoun; 10nov2012 )
  211 t ! 77 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ M
  212 t ! 73 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ I
  213 t ! 78 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ N
  214 t ! 69 pho ! 0 beg !   0 ctu ! 701 audpsi ! AudMem \ E
701 nen !  0 mfn ! 2 dba ! 701 fex ! 7 pos ! 707 fin ! 211 aud !
701 psi !  1 num ! 0 pre !   0 seq ! 701 enx ! EnVocab InNativate

( ME -- dative indirect-object form of pers. pronoun; 10nov2012 )
  216 t ! 77 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ M
  217 t ! 69 pho ! 0 beg !   0 ctu ! 701 audpsi ! AudMem \ E
701 nen !  0 mfn ! 3 dba ! 701 fex ! 7 pos ! 707 fin ! 216 aud !
701 psi !  1 num ! 0 pre !   0 seq ! 701 enx ! EnVocab InNativate

( ME -- accusative direct-obj. form of pers. pronoun; 10nov2012 )
  219 t ! 77 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ M
  220 t ! 69 pho ! 0 beg !   0 ctu ! 701 audpsi ! AudMem \ E
701 nen !  0 mfn ! 4 dba ! 701 fex ! 7 pos ! 707 fin ! 219 aud !
701 psi !  1 num ! 0 pre !   0 seq ! 701 enx ! EnVocab InNativate

( IF -- for machine reasoning logic; 10nov2012 )
  222 t ! 73 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ I
  223 t ! 70 pho ! 0 beg !   0 ctu ! 390 audpsi ! AudMem \ F
390 nen !  0 mfn ! 0 dba ! 390 fex ! 3 pos ! 390 fin ! 222 aud !
390 psi !  0 num ! 0 pre !   0 seq ! 390 enx ! EnVocab InNativate

( IN -- preposition for EnPrep module; 10nov2012 )
  225 t ! 73 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ I
  226 t ! 78 pho ! 0 beg !   0 ctu ! 639 audpsi ! AudMem \ N
639 nen !  0 mfn ! 0 dba ! 639 fex ! 6 pos ! 639 fin ! 225 aud !
639 psi !  0 num ! 0 pre !   0 seq ! 639 enx ! EnVocab InNativate

( IT -- nominative subject-form of personal pronoun; 10nov2012 )
  228 t ! 73 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ I
  229 t ! 84 pho ! 0 beg !   0 ctu ! 725 audpsi ! AudMem \ T
725 nen !  3 mfn ! 1 dba ! 725 fex ! 7 pos ! 725 fin ! 228 aud !
725 psi !  1 num ! 0 pre !   0 seq ! 725 enx ! EnVocab InNativate

( ITS -- genitive form of personal pronoun; 10nov2012
  231 t ! 73 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ I
  232 t ! 84 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ T
  233 t ! 83 pho ! 0 beg !   0 ctu ! 725 audpsi ! AudMem \ S
725 nen !  3 mfn ! 2 dba ! 725 fex ! 7 pos ! 725 fin ! 231 aud !
725 psi !  1 num ! 0 pre !   0 seq ! 725 enx ! EnVocab InNativate

( IT -- dative indirect-object form of pers. pronoun; 10nov2012 )
  235 t ! 73 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ I
  236 t ! 84 pho ! 0 beg !   0 ctu ! 725 audpsi ! AudMem \ T
725 nen !  3 mfn ! 3 dba ! 725 fex ! 7 pos ! 725 fin ! 235 aud !
725 psi !  1 num ! 0 pre !   0 seq ! 725 enx ! EnVocab InNativate

( IT -- accusative direct-obj. form of pers. pronoun; 10nov2012 )
  238 t ! 73 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ I
  239 t ! 84 pho ! 0 beg !   0 ctu ! 725 audpsi ! AudMem \ T
725 nen !  3 mfn ! 4 dba ! 725 fex ! 7 pos ! 725 fin ! 238 aud !
725 psi !  1 num ! 0 pre !   0 seq ! 725 enx ! EnVocab InNativate

( KNOW -- germane to artificial intelligence; 10nov2012 )
  241 t ! 75 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ K
  242 t ! 78 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ N
  243 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  244 t ! 87 pho ! 0 beg !   0 ctu ! 850 audpsi ! AudMem \ W
850 nen !  0 mfn ! 0 dba ! 850 fex ! 8 pos ! 850 fin ! 241 aud !
850 psi !  0 num ! 0 pre !   0 seq ! 850 enx ! EnVocab InNativate

( MAN -- always masculine noun for use with gender flags )
  246 t ! 77 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ M
  247 t ! 65 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ A
  248 t ! 78 pho ! 0 beg !   0 ctu ! 543 audpsi ! AudMem \ N
543 nen !  1 mfn ! 1 dba ! 543 fex ! 5 pos ! 543 fin ! 246 aud !
543 psi !  1 num ! 0 pre !   0 seq ! 543 enx ! EnVocab InNativate

( MEN -- irregular plural for retrieval by parameters 10nov2012 )
  250 t ! 77 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ M
  251 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  252 t ! 78 pho ! 0 beg !   0 ctu ! 543 audpsi ! AudMem \ N
543 nen !  1 mfn ! 1 dba ! 543 fex ! 5 pos ! 543 fin ! 250 aud !
543 psi !  2 num ! 0 pre !   0 seq ! 543 enx ! EnVocab InNativate

( MAYBE -- adverb response alternative to YES or NO; 10nov2012 )
  254 t ! 77 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ M
  255 t ! 65 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ A
  256 t ! 89 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ Y
  257 t ! 66 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ B
  258 t ! 69 pho ! 0 beg !   0 ctu ! 270 audpsi ! AudMem \ E
270 nen !  0 mfn ! 0 dba ! 270 fex ! 2 pos ! 270 fin ! 254 aud !
270 psi !  0 num ! 0 pre !   0 seq ! 270 enx ! EnVocab InNativate

( MEDIA -- always plural noun in correction of modern usage )
  260 t ! 77 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ M
  261 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  262 t ! 68 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ D
  263 t ! 73 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ I
  264 t ! 65 pho ! 0 beg !   0 ctu ! 584 audpsi ! AudMem \ A
584 nen !  0 mfn ! 0 dba ! 584 fex ! 5 pos ! 584 fin ! 260 aud !
584 psi !  2 num ! 0 pre !   0 seq ! 584 enx ! EnVocab InNativate

( MY -- adjective for personal pronoun "I"; 10nov2012 )
  266 t ! 77 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ M
  267 t ! 89 pho ! 0 beg !   0 ctu ! 181 audpsi ! AudMem \ Y
181 nen !  0 mfn ! 0 dba ! 181 fex ! 1 pos ! 182 fin ! 266 aud !
181 psi !  0 num ! 0 pre !   0 seq ! 181 enx ! EnVocab InNativate

( NO -- interjection for human-computer interaction; 10nov2012 )
  269 t ! 78 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ N
  270 t ! 79 pho ! 0 beg !   0 ctu ! 404 audpsi ! AudMem \ O
404 nen !  0 mfn ! 0 dba ! 404 fex ! 4 pos ! 404 fin ! 269 aud !
404 psi !  0 num ! 0 pre !   0 seq ! 404 enx ! EnVocab InNativate

( NOT -- adverb for machine reasoning logic; 10nov2012 )
  272 t ! 78 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ N
  273 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  274 t ! 84 pho ! 0 beg !   0 ctu ! 250 audpsi ! AudMem \ T
250 nen !  0 mfn ! 0 dba ! 250 fex ! 2 pos ! 250 fin ! 272 aud !
250 psi !  0 num ! 0 pre !   0 seq ! 250 enx ! EnVocab InNativate

 ( NOTHING --  VisRecog default for what the AI Mind sees )
  276 t ! 78 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ N
  277 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  278 t ! 84 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ T
  279 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  280 t ! 73 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ I
  281 t ! 78 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ N
  282 t ! 71 pho ! 0 beg !   0 ctu ! 760 audpsi ! AudMem \ G
760 nen !  0 mfn ! 0 dba ! 760 fex ! 7 pos ! 760 fin ! 276 aud !
760 psi !  1 num ! 0 pre !   0 seq ! 760 enx ! EnVocab InNativate

( OF -- preposition for EnPrep module )
  284 t ! 79 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ O
  285 t ! 70 pho ! 0 beg !   0 ctu ! 604 audpsi ! AudMem \ F
604 nen !  0 mfn ! 0 dba ! 604 fex ! 6 pos ! 604 fin ! 284 aud !
604 psi !  0 num ! 0 pre !   0 seq ! 604 enx ! EnVocab InNativate

( OR -- conjunction for machine reasoning logic; 10nov2012 )
  287 t ! 79 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ O
  288 t ! 82 pho ! 0 beg !   0 ctu ! 324 audpsi ! AudMem \ R
324 nen !  0 mfn ! 0 dba ! 324 fex ! 3 pos ! 324 fin ! 287 aud !
324 psi !  0 num ! 0 pre !   0 seq ! 324 enx ! EnVocab InNativate

( OUR -- adjective for personal pronoun "WE"; 10nov2012 )
  290 t ! 79 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ O
  291 t ! 85 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ U
  292 t ! 82 pho ! 0 beg !   0 ctu ! 186 audpsi ! AudMem \ R
186 nen !  0 mfn ! 0 dba ! 186 fex ! 1 pos ! 182 fin ! 290 aud !
186 psi !  0 num ! 0 pre !   0 seq ! 186 enx ! EnVocab InNativate

( PEOPLE -- establish as plural for EnParser )
  294 t ! 80 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ P
  295 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  296 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  297 t ! 80 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ P
  298 t ! 76 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ L
  299 t ! 69 pho ! 0 beg !   0 ctu ! 587 audpsi ! AudMem \ E
587 nen !  0 mfn ! 0 dba ! 587 fex ! 5 pos ! 587 fin ! 294 aud !
587 psi !  2 num ! 0 pre !   0 seq ! 587 enx ! EnVocab InNativate

( PERSON -- for ad-hoc gender tags and robot philosophy )
  301 t ! 80 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ P
  302 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  303 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
  304 t ! 83 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ S
  305 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  306 t ! 78 pho ! 0 beg !   0 ctu ! 537 audpsi ! AudMem \ N
537 nen !  0 mfn ! 0 dba ! 537 fex ! 5 pos ! 537 fin ! 301 aud !
537 psi !  1 num ! 0 pre !   0 seq ! 537 enx ! EnVocab InNativate

( PLEASE -- interjection for human-computer interaction )
  308 t ! 80 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ P
  309 t ! 76 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ L
  310 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  311 t ! 65 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ A
  312 t ! 83 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ S
  313 t ! 69 pho ! 0 beg !   0 ctu ! 410 audpsi ! AudMem \ E
410 nen !  0 mfn ! 0 dba ! 410 fex ! 4 pos ! 410 fin ! 308 aud !
410 psi !  0 num ! 0 pre !   0 seq ! 410 enx ! EnVocab InNativate

( SEE -- lets VisRecog dynamically report non-KB direct objects )
  315 t ! 83 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ S
  316 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  317 t ! 69 pho ! 0 beg !   0 ctu ! 820 audpsi ! AudMem \ E
820 nen !  0 mfn ! 0 dba ! 820 fex ! 8 pos ! 820 fin ! 315 aud !
820 psi !  0 num ! 0 pre !   0 seq ! 820 enx ! EnVocab InNativate

( SHE -- nominative subject-form of personal pronoun; 10nov2012 )
  319 t ! 83 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ S
  320 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  321 t ! 69 pho ! 0 beg !   0 ctu ! 719 audpsi ! AudMem \ E
719 nen !  2 mfn ! 1 dba ! 719 fex ! 7 pos ! 719 fin ! 319 aud !
719 psi !  1 num ! 0 pre !   0 seq ! 719 enx ! EnVocab InNativate

( HERS -- genitive form of personal pronoun; 10nov2012 )
  323 t ! 72 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ H
  324 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  325 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
  326 t ! 83 pho ! 0 beg !   0 ctu ! 719 audpsi ! AudMem \ S
719 nen !  2 mfn ! 2 dba ! 719 fex ! 7 pos ! 719 fin ! 323 aud !
719 psi !  1 num ! 0 pre !   0 seq ! 719 enx ! EnVocab InNativate

( HER -- dative indirect-object form of pers. pron. 9nov2012 )
  328 t ! 72 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ H
  329 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  330 t ! 82 pho ! 0 beg !   0 ctu ! 719 audpsi ! AudMem \ R
719 nen !  2 mfn ! 3 dba ! 719 fex ! 7 pos ! 719 fin ! 328 aud !
719 psi !  1 num ! 0 pre !   0 seq ! 719 enx ! EnVocab InNativate

( HER -- accusative direct-object form of pers. pron. 9nov2012 )
  332 t ! 72 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ H
  333 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  334 t ! 82 pho ! 0 beg !   0 ctu ! 719 audpsi ! AudMem \ R
719 nen !  2 mfn ! 4 dba ! 719 fex ! 7 pos ! 719 fin ! 332 aud !
719 psi !  1 num ! 0 pre !   0 seq ! 719 enx ! EnVocab InNativate

( SOME -- adjective for machine reasoning logic; 10nov2012 )
  336 t ! 83 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ S
  337 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  338 t ! 77 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ M
  339 t ! 69 pho ! 0 beg !   0 ctu ! 123 audpsi ! AudMem \ E
123 nen !  0 mfn ! 0 dba ! 123 fex ! 1 pos ! 123 fin ! 336 aud !
123 psi !  0 num ! 0 pre !   0 seq ! 123 enx ! EnVocab InNativate

( THAT -- high word-frequency pronoun; 10nov2012 )
  341 t ! 84 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ T
  342 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  343 t ! 65 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ A
  344 t ! 84 pho ! 0 beg !   0 ctu ! 745 audpsi ! AudMem \ T
745 nen !  0 mfn ! 0 dba ! 745 fex ! 7 pos ! 745 fin ! 341 aud !
745 psi !  1 num ! 0 pre !   0 seq ! 745 enx ! EnVocab InNativate

( THE -- EnArticle highest-frequency English word; 10nov2012 )
  346 t ! 84 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ T
  347 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  348 t ! 69 pho ! 0 beg !   0 ctu ! 117 audpsi ! AudMem \ E
117 nen !  0 mfn ! 0 dba ! 117 fex ! 1 pos ! 117 fin ! 346 aud !
117 psi !  0 num ! 0 pre !   0 seq ! 117 enx ! EnVocab InNativate

( THEIR --  adjective for personal pronoun "THEY"; 10nov2012 )
  350 t ! 84 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ T
  351 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  352 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  353 t ! 73 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ I
  354 t ! 82 pho ! 0 beg !   0 ctu ! 188 audpsi ! AudMem \ R
188 nen !  0 mfn ! 0 dba ! 188 fex ! 1 pos ! 188 fin ! 350 aud !
188 psi !  0 num ! 0 pre !   0 seq ! 188 enx ! EnVocab InNativate

( THEN -- adverb for machine reasoning logic; 10nov2012 )
  356 t ! 84 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ T
  357 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  358 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  359 t ! 78 pho ! 0 beg !   0 ctu ! 213 audpsi ! AudMem \ N
213 nen !  0 mfn ! 0 dba ! 213 fex ! 2 pos ! 213 fin ! 356 aud !
213 psi !  0 num ! 0 pre !   0 seq ! 213 enx ! EnVocab InNativate

( THERE -- adv. for discussion of physical location; 10nov2012 )
  361 t ! 84 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ T
  362 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  363 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  364 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
  365 t ! 69 pho ! 0 beg !   0 ctu ! 205 audpsi ! AudMem \ E
205 nen !  0 mfn ! 0 dba ! 205 fex ! 2 pos ! 205 fin ! 361 aud !
205 psi !  0 num ! 0 pre !   0 seq ! 205 enx ! EnVocab InNativate

( THEY -- nominative subject-form of pers. pronoun; 10nov2012 )
  367 t ! 84 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ T
  368 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  369 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  370 t ! 89 pho ! 0 beg !   0 ctu ! 743 audpsi ! AudMem \ Y
743 nen !  0 mfn ! 1 dba ! 743 fex ! 7 pos ! 743 fin ! 367 aud !
743 psi !  2 num ! 0 pre !   0 seq ! 743 enx ! EnVocab InNativate

(  THEIRS -- genitive form of personal pronoun; 10nov2012 )
  372 t ! 84 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ T
  373 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  374 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  375 t ! 73 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ I
  376 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
  377 t ! 83 pho ! 0 beg !   0 ctu ! 743 audpsi ! AudMem \ S
743 nen !  0 mfn ! 2 dba ! 743 fex ! 7 pos ! 743 fin ! 372 aud !
743 psi !  2 num ! 0 pre !   0 seq ! 743 enx ! EnVocab InNativate

( THEM -- dative indirect-object form of pers. pron. 10nov2012 )
  379 t ! 84 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ T
  380 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  381 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  382 t ! 77 pho ! 0 beg !   0 ctu ! 743 audpsi ! AudMem \ M
743 nen !  0 mfn ! 3 dba ! 743 fex ! 7 pos ! 743 fin ! 379 aud !
743 psi !  2 num ! 0 pre !   0 seq ! 743 enx ! EnVocab InNativate

( THEM --  acc. direct-object form of pers. pron. 10nov2012 )
  384 t ! 84 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ T
  385 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  386 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  387 t ! 77 pho ! 0 beg !   0 ctu ! 743 audpsi ! AudMem \ M
743 nen !  0 mfn ! 4 dba ! 743 fex ! 7 pos ! 743 fin ! 384 aud !
743 psi !  2 num ! 0 pre !   0 seq ! 743 enx ! EnVocab InNativate

( THINK -- germane to artificial intelligence )
  389 t ! 84 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ T
  390 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  391 t ! 73 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ I
  392 t ! 78 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ N
  393 t ! 75 pho ! 0 beg !   0 ctu ! 840 audpsi ! AudMem \ K
840 nen !  0 mfn ! 0 dba ! 840 fex ! 8 pos ! 840 fin ! 389 aud !
840 psi !  0 num ! 0 pre !   0 seq ! 840 enx ! EnVocab InNativate

( WE --  nominative subject-form of personal pronoun; 10nov2012 )
  395 t ! 87 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ W
  396 t ! 69 pho ! 0 beg !   0 ctu ! 731 audpsi ! AudMem \ E
731 nen !  0 mfn ! 1 dba ! 731 fex ! 7 pos ! 737 fin ! 395 aud !
731 psi !  2 num ! 0 pre !   0 seq ! 731 enx ! EnVocab InNativate

( OURS -- genitive form of personal pronoun; 10nov2012 )
  398 t ! 79 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ O
  399 t ! 85 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ U
  400 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
  401 t ! 83 pho ! 0 beg !   0 ctu ! 731 audpsi ! AudMem \ S
731 nen !  0 mfn ! 2 dba ! 731 fex ! 7 pos ! 737 fin ! 398 aud !
731 psi !  2 num ! 0 pre !   0 seq ! 731 enx ! EnVocab InNativate

( US -- dative indirect-object form of pers. pron. 10nov2012 )
  403 t ! 85 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ U
  404 t ! 83 pho ! 0 beg !   0 ctu ! 731 audpsi ! AudMem \ S
731 nen !  0 mfn ! 3 dba ! 731 fex ! 7 pos ! 737 fin ! 403 aud !
731 psi !  2 num ! 0 pre !   0 seq ! 731 enx ! EnVocab InNativate

( US -- accusative direct-object form of pers. pron. 10nov2012 )
  406 t ! 85 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ U
  407 t ! 83 pho ! 0 beg !   0 ctu ! 731 audpsi ! AudMem \ S
731 nen !  0 mfn ! 4 dba ! 731 fex ! 7 pos ! 737 fin ! 406 aud !
731 psi !  2 num ! 0 pre !   0 seq ! 731 enx ! EnVocab InNativate

( WHAT -- nominative pronoun for SelfReferentialThought )
  409 t ! 87 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ W
  410 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  411 t ! 65 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ A
  412 t ! 84 pho ! 0 beg !   0 ctu ! 781 audpsi ! AudMem \ T
781 nen !  3 mfn ! 1 dba ! 781 fex ! 7 pos ! 781 fin ! 409 aud !
781 psi !  1 num ! 0 pre !   0 seq ! 781 enx ! EnVocab InNativate

( WHAT -- accusative pronoun for SelfReferentialThought )
  414 t ! 87 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ W
  415 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  416 t ! 65 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ A
  417 t ! 84 pho ! 0 beg !   0 ctu ! 781 audpsi ! AudMem \ T
781 nen !  3 mfn ! 4 dba ! 781 fex ! 7 pos ! 781 fin ! 414 aud !
781 psi !  1 num ! 0 pre !   0 seq ! 781 enx ! EnVocab InNativate

( WHEN -- adverb for SelfReferentialThought; 10nov2012 )
  419 t ! 87 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ W
  420 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  421 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  422 t ! 78 pho ! 0 beg !   0 ctu ! 263 audpsi ! AudMem \ N
263 nen !  0 mfn ! 0 dba ! 263 fex ! 2 pos ! 263 fin ! 419 aud !
263 psi !  0 num ! 0 pre !   0 seq ! 263 enx ! EnVocab InNativate

( WHERE -- adverb for SelfReferentialThought; 10nov2012 )
  424 t ! 87 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ W
  425 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  426 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  427 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
  428 t ! 69 pho ! 0 beg !   0 ctu ! 245 audpsi ! AudMem \ E
245 nen !  0 mfn ! 0 dba ! 245 fex ! 2 pos ! 245 fin ! 424 aud !
245 psi !  0 num ! 0 pre !   0 seq ! 245 enx ! EnVocab InNativate

( WHO -- nominative subject-form of interrogative pronoun )
  430 t ! 87 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ W
  431 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  432 t ! 79 pho ! 0 beg !   0 ctu ! 791 audpsi ! AudMem \ O
791 nen !  0 mfn ! 1 dba ! 791 fex ! 7 pos ! 791 fin ! 430 aud !
791 psi !  1 num ! 0 pre !   0 seq ! 791 enx ! EnVocab InNativate

( WHOSE -- genitive form of interrogative pronoun; 11nov2012 )
  434 t ! 87 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ W
  435 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  436 t ! 83 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  437 t ! 83 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ S
  438 t ! 69 pho ! 0 beg !   0 ctu ! 794 audpsi ! AudMem \ E
794 nen !  0 mfn ! 2 dba ! 794 fex ! 7 pos ! 794 fin ! 434 aud !
794 psi !  1 num ! 0 pre !   0 seq ! 794 enx ! EnVocab InNativate

( WHOM -- dative indirect-object form of interrogative pronoun )
  440 t ! 87 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ W
  441 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  442 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  443 t ! 77 pho ! 0 beg !   0 ctu ! 794 audpsi ! AudMem \ M
794 nen !  0 mfn ! 3 dba ! 794 fex ! 7 pos ! 794 fin ! 440 aud !
794 psi !  1 num ! 0 pre !   0 seq ! 794 enx ! EnVocab InNativate

( WHOM -- accusative direct-obj. form of interrogative pronoun )
  445 t ! 87 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ W
  446 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  447 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  448 t ! 77 pho ! 0 beg !   0 ctu ! 794 audpsi ! AudMem \ M
794 nen !  0 mfn ! 4 dba ! 794 fex ! 7 pos ! 794 fin ! 445 aud !
794 psi !  1 num ! 0 pre !   0 seq ! 794 enx ! EnVocab InNativate

( WHY -- conjunction or adverb for machine reasoning logic )
  450 t ! 87 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ W
  451 t ! 72 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ H
  452 t ! 89 pho ! 0 beg !   0 ctu ! 370 audpsi ! AudMem \ Y
370 nen !  0 mfn ! 0 dba ! 370 fex ! 3 pos ! 370 fin ! 450 aud !
370 psi !  0 num ! 0 pre !   0 seq ! 370 enx ! EnVocab InNativate

( WITH -- preposition for use with  EnPrep module; 10nov2012 )
  454 t ! 87 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ W
  455 t ! 73 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ I
  456 t ! 84 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ T
  457 t ! 72 pho ! 0 beg !   0 ctu ! 680 audpsi ! AudMem \ H
680 nen !  0 mfn ! 0 dba ! 680 fex ! 6 pos ! 680 fin ! 454 aud !
680 psi !  0 num ! 0 pre !   0 seq ! 680 enx ! EnVocab InNativate

( WOMAN -- always feminine noun for use with gender flags )
  459 t ! 87 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ W
  460 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  461 t ! 77 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ M
  462 t ! 65 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ A
  463 t ! 78 pho ! 0 beg !   0 ctu ! 515 audpsi ! AudMem \ N
515 nen !  2 mfn ! 0 dba ! 515 fex ! 5 pos ! 515 fin ! 459 aud !
515 psi !  1 num ! 0 pre !   0 seq ! 515 enx ! EnVocab InNativate

( WOMEN -- irregular plural for retrieval by parameters 10nov2012 )
  465 t ! 87 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ W
  466 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  467 t ! 77 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ M
  468 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  469 t ! 78 pho ! 0 beg !   0 ctu ! 515 audpsi ! AudMem \ N
515 nen !  2 mfn ! 0 dba ! 515 fex ! 5 pos ! 515 fin ! 465 aud !
515 psi !  2 num ! 0 pre !   0 seq ! 515 enx ! EnVocab InNativate

( YES -- interjection for human-computer interaction; 10nov2012 )
  471 t ! 89 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ Y
  472 t ! 69 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ E
  473 t ! 83 pho ! 0 beg !   0 ctu ! 432 audpsi ! AudMem \ S
432 nen !  0 mfn ! 0 dba ! 432 fex ! 4 pos ! 432 fin ! 471 aud !
432 psi !  0 num ! 0 pre !   0 seq ! 432 enx ! EnVocab InNativate

( YOU -- nominative singular of personal pronoun; 10nov2012 )
  475 t ! 89 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ Y
  476 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  477 t ! 85 pho ! 0 beg !   0 ctu ! 707 audpsi ! AudMem \ U
707 nen !  0 mfn ! 1 dba ! 707 fex ! 7 pos ! 701 fin ! 475 aud !
707 psi !  1 num ! 0 pre !   0 seq ! 707 enx ! EnVocab InNativate

( YOURS -- genitive singular of personal pronoun; 10nov2012 )
  479 t ! 89 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ Y
  480 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  481 t ! 85 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ U
  482 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
  483 t ! 83 pho ! 0 beg !   0 ctu ! 707 audpsi ! AudMem \ S
707 nen !  0 mfn ! 2 dba ! 707 fex ! 5 pos ! 701 fin ! 479 aud !
707 psi !  1 num ! 0 pre !   0 seq ! 707 enx ! EnVocab InNativate

( YOU -- dative singular of personal pronoun; 10nov2012 )
  485 t ! 89 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ Y
  486 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  487 t ! 85 pho ! 0 beg !   0 ctu ! 707 audpsi ! AudMem \ U
707 nen !  0 mfn ! 3 dba ! 707 fex ! 7 pos ! 701 fin ! 485 aud !
707 psi !  1 num ! 0 pre !   0 seq ! 707 enx ! EnVocab InNativate

( YOU -- accusatie singular of personal pronoun; 10nov2012 )
  489 t ! 89 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ Y
  490 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  491 t ! 85 pho ! 0 beg !   0 ctu ! 707 audpsi ! AudMem \ U
707 nen !  0 mfn ! 4 dba ! 707 fex ! 7 pos ! 701 fin ! 489 aud !
707 psi !  1 num ! 0 pre !   0 seq ! 707 enx ! EnVocab InNativate

( YOU -- nominative plural of personal pronoun; 10nov2012 )
  493 t ! 89 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ Y
  494 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  495 t ! 85 pho ! 0 beg !   0 ctu ! 737 audpsi ! AudMem \ U
737 nen !  0 mfn ! 1 dba ! 737 fex ! 7 pos ! 731 fin ! 493 aud !
737 psi !  2 num ! 0 pre !   0 seq ! 737 enx ! EnVocab InNativate

( YOURS -- genitive plural of personal pronoun; 10nov2012 )
  497 t ! 89 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ Y
  498 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  499 t ! 85 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ U
  500 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
  501 t ! 83 pho ! 0 beg !   0 ctu ! 737 audpsi ! AudMem \ S
737 nen !  0 mfn ! 2 dba ! 737 fex ! 5 pos ! 731 fin ! 497 aud !
737 psi !  2 num ! 0 pre !   0 seq ! 737 enx ! EnVocab InNativate

( YOU -- dative plural of personal pronoun; 10nov2012 )
  503 t ! 89 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ Y
  504 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  505 t ! 85 pho ! 0 beg !   0 ctu ! 737 audpsi ! AudMem \ U
737 nen !  0 mfn ! 3 dba ! 737 fex ! 7 pos ! 731 fin ! 503 aud !
737 psi !  2 num ! 0 pre !   0 seq ! 737 enx ! EnVocab InNativate

( YOU -- accusatie plural of personal pronoun; 10nov2012 )
  507 t ! 89 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ Y
  508 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  509 t ! 85 pho ! 0 beg !   0 ctu ! 737 audpsi ! AudMem \ U
737 nen !  0 mfn ! 4 dba ! 737 fex ! 7 pos ! 731 fin ! 507 aud !
737 psi !  2 num ! 0 pre !   0 seq ! 737 enx ! EnVocab InNativate

( YOUR -- adjective for personal pronoun "YOU"; 10nov2012 )
  511 t ! 89 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ Y
  512 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  513 t ! 85 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ U
  514 t ! 82 pho ! 0 beg !   0 ctu ! 182 audpsi ! AudMem \ R
182 nen !  0 mfn ! 0 dba ! 182 fex ! 1 pos ! 181 fin ! 511 aud !
182 psi !  0 num ! 0 pre !   0 seq ! 182 enx ! EnVocab InNativate

( YOU -- innate response to who-am-i query; 10nov2012 )
  516 t ! 89 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ Y
  517 t ! 79 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ O
  518 t ! 85 pho ! 0 beg !   0 ctu ! 707 audpsi ! AudMem \ U
707 nen !  0 mfn ! 1 dba ! 707 fex ! 7 pos ! 701 fin ! 516 aud !
707 psi !  1 num ! 0 pre ! 388 tqv ! 800 seq ! 707 enx ! EnVocab InNativate

( ARE -- essential intransitive verb -- 800 with parameters )
  520 t ! 65 pho ! 1 beg !   1 ctu !   0 audpsi ! AudMem \ A
  521 t ! 82 pho ! 0 beg !   1 ctu !   0 audpsi ! AudMem \ R
  522 t ! 69 pho ! 0 beg !   0 ctu ! 800 audpsi ! AudMem \ E
800 nen !  0 mfn ! 2 dba ! 800 fex ! 8 pos ! 800 fin ! 520 aud !
800 psi !  1 num ! 707 pre ! 528 tqv ! 588 seq ! 800 enx ! EnVocab InNativate

( MAGIC -- all-purpose noun not preceded by article; 10nov2012 )
  524 t ! 77 pho !   1 beg !   1 ctu !   0 audpsi ! AudMem \ M
  525 t ! 65 pho !   0 beg !   1 ctu !   0 audpsi ! AudMem \ A
  526 t ! 71 pho !   0 beg !   1 ctu !   0 audpsi ! AudMem \ G
  527 t ! 73 pho !   0 beg !   1 ctu !   0 audpsi ! AudMem \ I
  528 t ! 67 pho !   0 beg !   0 ctu ! 588 audpsi ! AudMem \ C
588 nen !  0 mfn !   1 dba ! 588 fex ! 5 pos ! 588 fin ! 524 aud !
588 psi !  1 num ! 800 pre !  0 tqv !  0 seq ! 588 enx ! EnVocab InNativate

( I -- for SelfReferentialThought )
  530 t ! 73 pho ! 1 beg !   0 ctu ! 701 audpsi ! AudMem \ I
701 nen !  0 mfn ! 1 dba ! 701 fex !  7 pos ! 707 fin  ! 530 aud !
701 psi !  1 num ! 0 pre ! 533 tqv ! 800 seq ! 701 enx ! EnVocab InNativate

( AM -- for SelfReferentialThought )
  532 t ! 65 pho ! 1 beg ! 1 ctu !   0 audpsi ! AudMem \ A
  533 t ! 77 pho ! 0 beg ! 0 ctu ! 800 audpsi ! AudMem \ M
800 nen !  1 num ! 1 dba ! 0 mfn ! 800 fex ! 8 pos ! 800 fin ! 532 aud !
800 psi ! 701 pre ! 539 tqv ! 501 seq ! 800 enx ! EnVocab InNativate

( ANDRU -- for SelfReferentialThought )
  535 t ! 65 pho !   1 beg !  1 ctu !   0 audpsi ! AudMem \ A
  536 t ! 78 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ N
  537 t ! 68 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ D
  538 t ! 82 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ R
  539 t ! 85 pho !   0 beg !  0 ctu ! 501 audpsi ! AudMem \ U
501 nen ! 1 mfn ! 1 dba ! 501 fex !  5 pos ! 501 fin ! 535 aud !
501 psi ! 1 num ! 800 pre !  0 tqv !  0 seq ! 501 enx ! EnVocab InNativate

( I -- innate KB-item for testing inhibition of idea-pairs )
  541 t ! 73 pho ! 1 beg !   0 ctu ! 701 audpsi ! AudMem \ I
701 nen !  0 mfn ! 1 dba ! 701 fex !  7 pos ! 707 fin  ! 541 aud !
701 psi ! 1 num ! 0 pre ! 544 tqv ! 800 seq ! 701 enx ! EnVocab InNativate

( AM -- for SelfReferentialThought )
  543 t ! 65 pho ! 1 beg !  1 ctu !   0 audpsi ! AudMem \ A
  544 t ! 77 pho ! 0 beg !  0 ctu ! 800 audpsi ! AudMem \ M
800 nen !  0 mfn ! 1 dba ! 800 fex ! 8 pos ! 800 fin ! 543 aud !
800 psi !  1 num ! 701 pre ! 552 tqv ! 571 seq ! 800 enx ! EnVocab InNativate

( A -- for EnArticle module )
  546 t ! 65 pho ! 1 beg !  0 ctu ! 101 audpsi ! AudMem \ A
101 nen !  0 mfn ! 0 dba !  101 fex !   1 pos !  101 fin ! 546 aud !
101 psi !  1 num ! 0 pre !  571 seq !  101 enx ! EnVocab InNativate

( ROBOT -- important for target user base )
  548 t ! 82 pho !   1 beg !  1 ctu !  0 audpsi ! AudMem \ R
  549 t ! 79 pho !   0 beg !  1 ctu !  0 audpsi ! AudMem \ O
  550 t ! 66 pho !   0 beg !  1 ctu !  0 audpsi ! AudMem \ B
  551 t ! 79 pho !   0 beg !  1 ctu !  0 audpsi ! AudMem \ O
  552 t ! 84 pho !   0 beg !  0 ctu ! 571 audpsi ! AudMem \ T
571 nen ! 3 mfn ! 1 dba !  571 fex !  5 pos ! 571 fin ! 548 aud !
571 psi ! 1 num 1 ! 800 pre ! 0 tqv ! 0 seq ! 571 enx ! EnVocab InNativate

( I -- innate KB-item for testing inhibition of idea-pairs )
  554 t ! 73 pho !   1 beg !  0 ctu ! 701 audpsi ! AudMem \ I
701 nen ! 0 mfn ! 1 dba ! 701 fex !  7 pos ! 707 fin  ! 554 aud !
701 psi ! 1 num ! 0 pre ! 423 tqv ! 58 seq ! 701 enx ! EnVocab InNativate

( AM -- for SelfReferentialThought; 10nov2012 )
  556 t ! 65 pho !   1 beg !  1 ctu !  0 audpsi ! AudMem \ A
  557 t ! 77 pho !   0 beg !  0 ctu ! 800 audpsi ! AudMem \ M
800 nen ! 0 mfn ! 1 dba ! 800 fex !  8 pos ! 800 fin ! 556 aud !
800 psi ! 1 num ! 701 pre ! 566 tqv ! 537 seq ! 800 enx ! EnVocab InNativate

( A -- for EnArticle module )
  559 t ! 65 pho !   1 beg !  0 ctu !  101 audpsi ! AudMem \ A
101 nen !  0 mfn ! 0 dba !  101 fex !   1 pos !  101 fin ! 559 aud !
101 psi !  1 num ! 0 pre !  537 seq !  101 enx ! EnVocab InNativate

( PERSON -- for ad-hoc gender tags and robot philosophy )
  561 t ! 80 pho !   1 beg !  1 ctu !   0 audpsi ! AudMem \ P
  562 t ! 69 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ E
  563 t ! 82 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ R
  564 t ! 83 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ S
  565 t ! 79 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ O
  566 t ! 78 pho !   0 beg !  0 ctu ! 537 audpsi ! AudMem \ N
537 nen ! 0 mfn ! 1 dba ! 537 fex !  5 pos ! 537 fin ! 561 aud !
537 psi ! 1 num ! 800 pre ! 0 tqv ! 0 seq ! 537 enx ! EnVocab InNativate

( I -- for SelfReferentialThought )
  568 t ! 73 pho !   1 beg !  0 ctu ! 701 audpsi ! AudMem \ I
701 nen !  0 mfn ! 1 dba ! 701 fex !  7 pos ! 707 fin ! 568 aud !
701 psi !  1 num 1 0 pre ! 573 tqv ! 895 seq ! 701 enx ! EnVocab InNativate

( HELP -- socially significant common verb )
  570 t ! 72 pho !  1 beg !  1 ctu !   0 audpsi ! AudMem \ H
  571 t ! 69 pho !  0 beg !  1 ctu !   0 audpsi ! AudMem \ E
  572 t ! 76 pho !  0 beg !  1 ctu !   0 audpsi ! AudMem \ L
  573 t ! 80 pho !  0 beg !  0 ctu ! 895 audpsi ! AudMem \ P
895 nen ! 0 mfn ! 1 dba ! 895 fex !  8 pos ! 895 fin ! 570 aud !
895 psi ! 1 num ! 701 pre ! 578 tqv ! 528 seq ! 895 enx ! EnVocab InNativate

( KIDS -- noun lends itself to educational purposes )
  575 t ! 75 pho ! 1 beg !  1 ctu !   0 audpsi ! AudMem \ K
  576 t ! 73 pho ! 0 beg !  1 ctu !   0 audpsi ! AudMem \ I
  577 t ! 68 pho ! 0 beg !  1 ctu !   0 audpsi ! AudMem \ D
  578 t ! 83 pho ! 0 beg !  0 ctu ! 528 audpsi ! AudMem \ S
528 nen !  2 num ! 4 dba ! 0 mfn ! 528 fex !  5 pos ! 528 fin ! 575 aud !
528 psi ! 895 pre ! 0 tqv ! 0 seq ! 528 enx ! EnVocab InNativate

( KIDS -- noun lends itself to educational purposes )
  580 t ! 75 pho !   1 beg !  1 ctu !   0 audpsi ! AudMem \ K
  581 t ! 73 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ I
  582 t ! 68 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ D
  583 t ! 83 pho !   0 beg !  0 ctu ! 528 audpsi ! AudMem \ S
528 nen !  0 mfn ! 1 dba !  528 fex !  5 pos ! 528 fin ! 580 aud !
528 psi ! 2 num ! 0 pre ! 588 tqv ! 835 seq ! 528 enx ! EnVocab InStantiate

( MAKE -- common verb of high word-frequency )
  585 t ! 77 pho !   1 beg !  1 ctu !   0 audpsi ! AudMem \ M
  586 t ! 65 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ A
  587 t ! 75 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ K
  588 t ! 69 pho !   0 beg !  0 ctu ! 835 audpsi ! AudMem \ E
835 nen !  2 num !   0 mfn !  835 fex !  8 pos ! 835 fin ! 585 aud !
835 psi ! 72 pre ! 595 tqv ! 571 seq ! 835 enx ! EnVocab InNativate

( ROBOTS -- important for target user base )
  590 t ! 82 pho !   1 beg !  1 ctu !   0 audpsi ! AudMem \ R
  591 t ! 79 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ O
  592 t ! 66 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ B
  593 t ! 79 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ O
  594 t ! 84 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ T
  595 t ! 83 pho !   0 beg !  0 ctu ! 571 audpsi ! AudMem \ S
571 nen ! 3 mfn ! 4 dba ! 571 fex !  5 pos ! 571 fin ! 590 aud !
571 psi ! 2 num ! 835 pre !   0 tqv ! 0 seq ! 571 enx ! EnVocab InNativate

( ROBOTS -- important for target user base )
  597 t ! 82 pho !   1 beg !  1 ctu !   0 audpsi ! AudMem \ R
  598 t ! 79 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ O
  599 t ! 66 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ B
  600 t ! 79 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ O
  601 t ! 84 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ T
  602 t ! 83 pho !   0 beg !  0 ctu ! 571 audpsi ! AudMem \ S
571 nen ! 3 mfn ! 1 dba ! 571 fex !  5 pos ! 571 fin ! 597 aud !
571 psi ! 2 num ! 0 pre ! 473 tqv ! 849 seq ! 571 enx ! EnVocab InNativate

( NEED -- common verb used for describing goals )
  604 t ! 78 pho !   1 beg !  1 ctu !   0 audpsi ! AudMem \ N
  605 t ! 69 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ E
  606 t ! 69 pho !   0 beg !  1 ctu !   0 audpsi ! AudMem \ E
  607 t ! 68 pho !   0 beg !  0 ctu ! 849 audpsi ! AudMem \ D
849 nen !  2 num !   0 mfn !  849 fex !  8 pos ! 849 fin ! 604 aud !
849 psi ! 571 pre ! 610 tqv ! 701 seq ! 849 enx ! EnVocab InNativate

( ME -- for SelfReferentialThought )
  609 t ! 77 pho ! 1 beg !  1 ctu !   0 audpsi ! AudMem \ M
  610 t ! 69 pho ! 0 beg !  0 ctu ! 701 audpsi ! AudMem \ E
701 nen ! 0 mfn ! 4 dba !  701 fex ! 7 pos ! 707 fin ! 609 aud !
701 psi ! 1 num ! 849 pre ! 0 tqv ! 0 seq ! 701 enx ! EnVocab InNativate
( Declaration of "vault" must reflect final EnBoot "t".)
  1 t +!
    t @  vault !
    t @  tov !
  1 t +!
    t @ nlt !  ( nlt may be basis for DAMP functions )
  528 urpsi ! \ As if "KIDS" were the cresting concept.
  900 nen !  \ segregate parts of speech by century; 9nov2012
  5 bias !
  0 lurk !   \ prepare to auto-start thinking; 19sep2010
  0 num !
  0 mfn !  \ Prevent carry-over.
  0 mfnflag !  \ Prevent carry-over; 23aug2010
  0 nwc !
  0 pho !
  0 pre !  0 seq !
  0 putnum !  \ prevent carry-over;  4nov2011
; ( http://code.google.com/p/mindforth/wiki/EnBoot )


:  KbTraversal ( reactivate KB concepts )
  35 pov !
  kbtv @ 4 > IF  1 kbtv !  THEN
\ CR ." Knowledge base traversal with kbtv at " kbtv @ .
  CR ." Time = " t @ . 8 EMIT  \ as in Wotan AI; 28dec2012
  ." ; ReJuvenate count = " rjc @ . 8 EMIT  \ 28dec2012
  ." ; activating "  \ as in Wotan German AI 28dec2012
\ ." KbTraversal activates " \ 28dec2012
  kbtv @ 1 = IF
     1 kbyn !   \ for AskUser Y/N query subject; 24jun2011
    707 nacpsi ! \ 707=YOU noun-activation psi; 10nov2012
    707 qusub !  \ in case a query will be made; 10nov2012
    707 subjpsi !  \ a test to help WhoBe; 10nov2012
     1 subjnum !  \ for correct be-verb; 12oct2011
     2 prsn !     \ for correct be-verb; 12oct2011
  \ ." activating concept of YOU" CR \ for who-query; 7aug2010
    34 EMIT ." YOU" 34 EMIT ."  as a concept." CR  \ 28dec2012
    62 nounval !
    NounAct
    0 nacpsi !
  THEN
  kbtv @ 2 = IF  \ for use in ThInk module; 14oct2011
     2 kbyn !   \ for AskUser Y/N query subject; 24jun2011
  \ ." activating concept of ROBOTS" CR  ( 7aug2010 )
    34 EMIT ." ROBOTS" 34 EMIT ."  as a concept." CR \ 28dec2012
    571 subjpsi ! \ external tagging as subject; 14oct2011
    571 qusub !  \ in case a query will be made; 10nov2012
    0 nacpsi !
  THEN
  kbtv @ 3 = IF
     3 kbyn !   \ for AskUser Y/N query subject; 24jun2011
    701 nacpsi !  \ 701=I noun-activation psi; 10nov2012
  \ ." activating concept of I" CR     ( 7aug2010 )
    34 EMIT ." I" 34 EMIT ."  as a concept." CR \ 28dec2012
    701 qusub !  \ in case a query will be made; 10nov2012
    701 subjpsi ! \ external tagging as subject; 10nov2012
    NounAct
    0 nacpsi !
  THEN
  kbtv @ 4 = IF
     4 kbyn !   \ for AskUser Y/N query subject; 24jun2011
   533 nacpsi ! \ 533=GOD noun-activation psi; 10nov2012
  \ ." activating concept of GOD" CR   ( 7aug2010 )
    34 EMIT ." GOD" 34 EMIT ."  as a concept." CR \ 28dec2012
    533 qusub !  \ in case a query will be made; 10nov2012
    533 subjpsi ! \ external tagging as subject; 10nov2012
    62 nounval !
    NounAct
    0 nacpsi !
  THEN  ( http://www.quartus.net )
  42 pov !
; ( http://code.google.com/p/mindforth/wiki/KbTraversal )


:  ReJuvenate ( recycle oldest memory spaces )
  fyi @ 2 = IF
    CLS
  THEN
  0 edge !
  CR 1 rjc +!
  ." Please wait as memories migrate in ReJuvenate cycle #"
  rjc @ . CR
  t @ 2 +  coda @ vault @ +  DO
    I  jrt !
    jrt @  coda @ -  jrt !
    edge @ 1 = IF
      I 0 psi{ @  jrt @  0 psi{ !  0 I 0 psi{ !
      I 1 psi{ @  jrt @  1 psi{ !  0 I 1 psi{ !
      I 2 psi{ @  jrt @  2 psi{ !  0 I 2 psi{ !
      I 3 psi{ @  jrt @  3 psi{ !  0 I 3 psi{ !
      I 4 psi{ @  jrt @  4 psi{ !  0 I 4 psi{ !
      I 5 psi{ @  jrt @  5 psi{ !  0 I 5 psi{ !
    \ Next line adjusts tqv by minus-coda; 14aug2012
      I 6 psi{ @ coda @ -  jrt @  6 psi{ !  0 I 6 psi{ !
      I 7 psi{ @  jrt @  7 psi{ !  0 I 7 psi{ !
      I 8 psi{ @  jrt @  8 psi{ !  0 I 8 psi{ !
    THEN
    edge @  1 =  IF
      en8 @  1 <  IF  0 en8 !  THEN  \ 10nov2012
      I 0 en{ @  jrt @  0 en{ !  0 I 0 en{ !
      I 1 en{ @  jrt @  1 en{ !  0 I 1 en{ !
      I 2 en{ @  jrt @  2 en{ !  0 I 2 en{ !
      I 3 en{ @  jrt @  3 en{ !  0 I 3 en{ !
      I 4 en{ @  jrt @  4 en{ !  0 I 4 en{ !
      I 5 en{ @  jrt @  5 en{ !  0 I 5 en{ !
      I 6 en{ @  jrt @  6 en{ !  0 I 6 en{ !
      I 7 en{ @  jrt @  7 en{ !  0 I 7 en{ !  \ 29dec2012
      I 8 en{ @  en8 !                        \ 10nov2012
          en8 @  vault @ < IF
          en8 @  jrt @  8 en{ !  0 I 8 en{ !  THEN
          en8 @  coda @  vault @ +  > IF      \ 10nov2012
          en8 @  coda @ -  jrt @ 8 en{ !      \ 10nov2012
          THEN               0 I 8 en{ !      \ 10nov2012
    THEN
    edge @  1 = IF
      I 0 aud{ @  jrt @  0 aud{ !
      I 1 aud{ @  jrt @  1 aud{ !
      I 2 aud{ @  jrt @  2 aud{ !
      I 3 aud{ @  jrt @  3 aud{ !
      I 4 aud{ @  jrt @  4 aud{ !
      I 5 aud{ @  jrt @  5 aud{ !
        fyi @ 1 > IF
                  jrt @  0 aud{ @ EMIT
        THEN
    THEN
    edge @ 0 = IF
     32 jrt @ 0 aud{ !
      0 jrt @ 1 aud{ !
            I 2 aud{ @ 123 = IF  1 edge !  THEN
      0 jrt @ 2 aud{ !
      0 jrt @ 3 aud{ !
      0 jrt @ 4 aud{ !
      0 jrt @ 5 aud{ !
      0 jrt @ 0 en{ !
      0 jrt @ 1 en{ !
      0 jrt @ 2 en{ !
      0 jrt @ 3 en{ !
      0 jrt @ 4 en{ !
      0 jrt @ 5 en{ !
      0 jrt @ 6 en{ !
      0 jrt @ 7 en{ !
      0 jrt @ 8 en{ !  \ with dba; 10nov2012      
      0 jrt @ 0 psi{ !
      0 jrt @ 1 psi{ !
      0 jrt @ 2 psi{ !
      0 jrt @ 3 psi{ !
      0 jrt @ 4 psi{ !
      0 jrt @ 5 psi{ !
      0 jrt @ 6 psi{ !
      0 jrt @ 7 psi{ !
      0 jrt @ 8 psi{ !  \ for "tqv"; 12oct2011   
    THEN
  LOOP
  jrt @  t !
  cns @    t @  DO
   32  I 0  aud{ !
    0  I 1  aud{ !
    0  I 2  aud{ !
    0  I 3  aud{ !
    0  I 4  aud{ !
    0  I 5  aud{ !
    0  I 0   en{ !
    0  I 1   en{ !
    0  I 2   en{ !
    0  I 3   en{ !
    0  I 4   en{ !
    0  I 5   en{ !
    0  I 6   en{ !
    0  I 7   en{ !
    0  I 8   en{ !  \ with "dba"; 10nov2012
    0  I 0  psi{ !
    0  I 1  psi{ !
    0  I 2  psi{ !
    0  I 3  psi{ !
    0  I 4  psi{ !
    0  I 5  psi{ !
    0  I 6  psi{ !
    0  I 7  psi{ !
    0  I 8  psi{ !  \ with new "enx"; 12oct2011   
  LOOP
  t @ 32 - tov !  \ 12jan2010 Avoid truncating thoughts.
  CR CR ." End of ReJuvenate #" rjc @ .
  ." in the AI Mind display for science museum exhibits."
  CR ." Tab key cycles through Normal, Transcript, "
   ." Tutorial, Diagnostic display-modes. "  CR
  1 kbtv +!
  kbtv @ 0 > IF
    CR ." For lack of human input, "
    ." ReJuvenate calls KbTraversal" CR
    KbTraversal
  THEN  ( http://ronware.org/reva )
  rsvp @ rjc @ - rsvp !
  rsvp @ 2 < IF 2 rsvp ! THEN  \ 23dec2009 Maintain speed.
; ( http://code.google.com/p/mindforth/wiki/ReJuvenate )


:  SpeechAct ( output of a word as text or sound )
  aud @ 0 = IF 1 aud ! THEN \ default to ERROR; 21jul2011
  fyi @ 2 = IF CR THEN
  0 audstop !   ( Initially false value of flag )
  0 pho !       ( Lest pho already be at 32 )
  aud @ onset !  ( onset of a word is its recall-vector )
  aud @ t2s !
  40  1  DO
    t2s @  0  aud{ @ pho !
    pho @ 32 = NOT IF
      pho @ EMIT  ( say or display "pho" )
      pho @ lastpho !
    THEN   \ End of test for pho=32 space-bar; 30aug2010 
    pho @ 32 = IF  \ but instead of a blank space; 30aug2010
      lastpho @ 83 = NOT IF \ not after "S"; 30aug2010
        flex1 @ 0 > IF  \ using shorter variable; 11sep2011
          flex1 @ pho !  \ append inflection; 11sep2011
          0 flex1 !  \ reset for safety; 11sep2011
        THEN  ( http://aimind-i.com )
        1 spacegap !
        0 vpos !
      THEN  \ End of test for previous "S"; 30aug2010
      pho @ EMIT  ( say or display "pho" )
      1 audstop !
    THEN  \ end of test for 32=space; 30aug2010
    35 pov !  ( internal point-of-view "#" like mindgrid )
    AudInput  ( for reentry of thought back into a mind )
    audstop @ 1 = IF
      spacegap @ 1 = IF
        32 pho !
        1 audrun ! \ resetting at end of internal word.
        AudInput
        0 spacegap !
      THEN  ( http://www.speechapi.com )
      LEAVE
    THEN  ( http://aigroup.narod.ru )
    t2s @  1+  t2s !
    t2s @  4 aud{ @ 0 = IF 32 pho ! THEN ( If end of word )
    match @ 1 = IF
      0 match !
      LEAVE
    THEN
  LOOP
  0 aud !  \ Avoid unwarranted carry-over of value; 11sep2011
  0 match !
  0 obstat !
; ( http://code.google.com/p/mindforth/wiki/SpeechAct )


:  SayYes ( to utter "YES" in response )
  midway @  t @  DO
    I       0 en{ @ 432 = IF  \ 3-digit; 10nov2012
      I     8 en{ @  aud !  \ with dba; 10nov2012
      LEAVE
    THEN  ( http://aimind-i.com )
  -1 +LOOP
  SpeechAct
  0 kbquiz !
  0 yesorno !
; ( http://code.google.com/p/mindforth )


:  EnArticle ( select "a" or "the" before a noun )
  indefmust @ 1 = IF  \ if required to say "A(N)"; 20oct2011
    midway @  t @  DO  \ search backwards in time; 20oct2011
      I       0 en{ @  101 = IF  \ 101=A found?  8nov2012
        I     8 en{ @  aud !  \ save auditory recall-vector
        LEAVE  \ one instance is enough; 20oct2011
      THEN  \ end of test for "101=A" engram; 8nov2012
    -1 +LOOP  \ end of backwards loop; 20oct2011
    SpeechAct  \ pronounce the requred article; 20oct2011
    0 indefmust !  \ reset for safety; 20oct2011
    EXIT  \ abandon rest of EnArticle; 20oct2011
  THEN  \ end of test for a required "A(N); 20oct2011
  nphrpos @ 7 = NOT IF
    nphrnum @  1 = IF
      motjuste @ ghost @ = IF  \
        0 indefartcon !  \ do not say "A"; 15oct2011
        1 defartcon !    \ say "THE"; 15oct2011
      THEN  \
      motjuste @ ghost @ = NOT IF
        subjnum @ 1 = IF  \ if singular subject; 13sep2011
          verbpsi @ 800 = IF  \ AM or IS; 10nov0212
            1 indefartcon !  \ indefinite article; 13sep2011
          THEN  \ end of test for "AM" or "IS"; 13sep2011
        THEN  \ 13sep2011
        indefartcon @  1 = IF  \ from WHAT-query; 16apr2011
          0 defartcon !  \ avoid "A THE"; 6oct2011
          anset @ 0 = IF ( If no vowel is next )
            midway @  t @  DO
              I       0 en{ @ 101 = IF  \ 101=A? 8nov2012
                I     8 en{ @  aud !  \ 10nov2012
                LEAVE
              THEN
            -1 +LOOP
          THEN  ( End of test for absence of a vowel )
          anset @ 0 > IF  ( If anset-flag is positive )
            midway @  t @  DO
              I       0 en{ @ 102 = IF  \ 102=AN? 8nov2012
                I     8 en{ @  aud !  \ 10nov2012
                LEAVE
              THEN
            -1 +LOOP
          THEN  ( End of test for a vowel coming next )
          1 numflag ! \ With "A" assume singular number.
          SpeechAct
          0 indefartcon !  \ Reset; 16apr2011
        THEN  \ End of test for positive indefartcon; 16apr2011
        0 indefartcon !  \ Reset for safety; 6oct2011
      THEN
      motjuste @ ghost @ = IF
       defartcon @  1 = IF  \ from WH0-query; 16apr2011
        midway @  t @  DO
          I       0 en{ @ 117 = IF  \ If 117=THE found; 10nov2012
            I     8 en{ @  aud !  \ with dba; 10nov2012
            LEAVE
          THEN
        -1 +LOOP
        SpeechAct
        0 defartcon !  \ Reset; 16apr2011
       THEN  \ End of test for positive defartcon; 16apr2011
      THEN
    THEN
  THEN
  dirobj @ 1 = IF
    motjuste @ ghost !
  THEN   ( http://thebeez.home.xs4all.nl/4tH )
  0 whoflag !  \ call EnArticle only once; 15oct2011
; ( http://code.google.com/p/mindforth/wiki/EnArticle )


:  EnAdjective ( insert an adjective into a sentence )
  adjcon @ 1 = IF  \ activation spreads to an adjective?
    ( find and speak the most active adjective; 16sep2011 )
  THEN  ( http://www.colorforth.com )
; ( http://code.google.com/p/mindforth )


:  AuxVerb ( auxiliary Verb )
\ CR ." AuxV: subjnum prsn = "  \ 29dec2012
\ subjnum @ .  prsn @ .   \ 29dec2012
  subjnum @ 1 =  prsn @ 3 = AND IF  \ 19jul211
    midway @  t @  DO
      I       0 en{ @ 830 = IF  \ 830=DO; 10nov2012
        I     2 en{ @ 1 = IF  \ singular? 10nov2012
          I   4 en{ @ 3 = IF  \ 3rd person? 10nov2012
            I   8 en{ @  aud !  \ 10nov2012
            LEAVE
          THEN  \ end of test for third person; 10nov2012
        THEN  \ end ofbtest for num=1 singular; 10nov2012
      THEN  \ end of test for 830=DO; 10nov2012
    -1 +LOOP
    SpeechAct  \ Say word starting at "aud" value; 20jul2011
    830 urpsi !   \ 10nov2012
    51 caller !
    PsiDamp
    0 urpsi !  \ reset for safety; 29dec2012
    0 caller !
  ELSE  \ all other cases except 3rd prsn sing; 25jun2011
    midway @  t @  DO  \ may need parameters! 10nov2012
      I       0 en{ @  830 = IF  \ 830=DO; 10nov2012
        I     4 en{ @  0 = IF  \ 0=dba infinitive 29dec2012
          I   8 en{ @ 0 > IF  \ non-zer? 29dec2012
            I 8 en{ @  aud !  \ 10nov2012
            LEAVE
          THEN  \ end of test for non-zero aud; 29dec2012
        THEN  \ end of test to accept infinitive; 29dec2012
      THEN
    -1 +LOOP
    SpeechAct
    fyi @ 2 > IF CR
      ."   from AuxVerb after speaking of DO, "
      ." psiDamping concept #830 DO"
    THEN
    830 urpsi !  \ 830=DO; 10nov2012
    51 caller !
    PsiDamp
    0 urpsi !  \ reset for safety; 29dec2012
    0 caller !
  THEN  \ end of test for both sing & 3rd prsn; 25jun2011
; ( http://code.google.com/p/mindforth/wiki/AuxVerb )


:  WhatAuxSVerb ( What DO Subjects Verb; 13jun2011 )
  midway @  t @  DO
    I       0 en{ @ 781 = IF  \ 781=WHAT  10nov2012
      I     8 en{ @  aud !   \ 10nov2012
      LEAVE
    THEN
  -1 +LOOP
  SpeechAct  \ Say word starting at "aud" value; 20jul2011
  781 urpsi !  \ 781=WHAT; 10nov2012
  PsiDamp
  AuxVerb  \ Say DOES or DO depending on num(ber) 20jul2011
  0 motjuste !
  midway @  t @  DO
    I       0 en{ @  topic @ = IF  \ 13jun2011
      I     8 en{ @ aud !  \ 10nov2012
      LEAVE
    THEN  ( http://sourceforge.net/projects/calforth )
  -1 +LOOP
  topic @ urpsi !  \ 14aug2011
  PsiDamp
  SpeechAct
  verbpsi @ 0 = IF 830 verbpsi ! THEN \ 830=DO DeFault 10nov2012
  verbpsi @ unk !  \ use a short "unk"; 28aug2011
  verbpsi @ 800 = IF  \ 800 cover AM IS ARE BE; 10nov2012
    830 verbpsi !  \ replace be-verbs with 830=DO; 10nov2012
  THEN \ end of default switching be-verb to 830=DO; 10nov2012
  midway @  t @  DO
    I       0 en{ @  verbpsi @ = IF  \ 13jun2011
      I     2 en{ @  2 = IF  \ as if infinitive; 13jun2011
        I     8 en{ @  aud !   \ 10nov2012
        LEAVE
      THEN  \ End of test for plural as if infinitive
    THEN
  -1 +LOOP
  aud @ 0 = IF  \ if no plural accept singular 14aug2011
    midway @  t @  DO  \ search English vocab; 14aug2011
      I       0 en{ @  verbpsi @ = IF  \ 14aug2011
        I   8 en{ @  aud !  \ for SpeechAct; 10nov2012
        LEAVE  \ one engram is enough; 14aug2011
      THEN  \ end of test for verbpsi; 14aug2011
    -1 +LOOP   \ end of backwards search loop; 14aug2011
  THEN  \ end of test for no engram found; 14aug2011
( http://www.intelligent-systems.com.ar/intsyst/proposedBrain.htm )
  SpeechAct
  verbpsi @ urpsi !  \ 13jun2011
  PsiDamp
; ( http://code.google.com/p/mindforth )


:  WhatAuxSDo ( What DO Subjects DO )
  midway @  t @  DO
    I       0 en{ @ 781 = IF  \ 781=WHAT; 10nov2012
      I     8 en{ @  aud !  \ 10nov2012
      LEAVE
    THEN
  -1 +LOOP
  SpeechAct
  781 urpsi !  \ 781=WHAT for PsiDamp; 10nov2012
  42 caller !
  PsiDamp
  0 caller !
  AuxVerb   \ to include DO or DOES; 14aug2011
  subjnum @ 1 = IF   \ for singular subject; 14oct2011
    topic @ motjuste !  \ test; 14oct2011
    0 ghost !  \ test; 14oct2011
    1 nphrnum !  \ required for "A"' 14oct2011
    1 indefartcon !  \ to say "A"; 14oct2011
    EnArticle  \ 14oct2011
  THEN  \ end of test for singular subject; 14oct2011
  midway @  t @  DO
    I       0 en{ @  topic @ = IF
      I     2 en{ @  subjnum @ = IF  \ agreement? 14oct2011
        I   8 en{ @ aud !  \ 10nov2012
        LEAVE  \ only after finding match; 14oct2011
      THEN  \ end of grammatical-number test; 14oct2011
    THEN
  -1 +LOOP
  topic @ urpsi !   \ 14aug2011
  42 caller !
  PsiDamp
  SpeechAct
  midway @  t @  DO
    I       0 en{ @ 830 = IF  \ 830=DO; 10nov2012
      I     4 en{ @   0 = IF  \ dba=0 infinitive; 25dec2012
        I   8 en{ @  aud !  \ 10nov2012
        LEAVE
      THEN  \ end of tist for infinitive dba=0; 25dec2012
    THEN
  -1 +LOOP
  SpeechAct
  fyi @ 2 > IF CR
    ."   from whatAuxSDo after speaking of DO, "
    ." psiDamping concept #59 DO"
  THEN
  830 urpsi !  \ 830=DO for PsiDamp; 10nov2012
  42 caller !
  PsiDamp
  0 caller !
; ( http://code.google.com/p/mindforth/wiki/WhatAuxSDo )


:  WhoBe  ( for asking WHO IS-AM-ARE; 9aug2010 )
  1 moot !  \ prevent associative tagging inside query; 24oct2011
  0 tqv !  \ prevent spurious carry-over values;  1aug2012
  topic @ 0 > IF topic @ qusub ! THEN  \ review; 30jul2011
  midway @  t @  DO  \ Say the word "WHO"; 19aug2010
    I       0 en{ @ 791 = IF  ( 791=WHO; 10nov2012 )
      I     8 en{ @  aud !  \ 10nov2012
      LEAVE
    THEN
  -1 +LOOP
  SpeechAct
  8766 caller !  \ ASCII 87=W 66=B; test; 26sep2010
  55 urpsi !  \ Designate concept to be psi-damped; 19aug2010
  PsiDamp
  0 caller !  \ reset after use; 26sep2010
  qusub @ 701 = IF 1 prsn ! THEN \ 1st person "I" 10nov2012
  qusub @ 731 = IF 1 prsn ! THEN \ 1st person WE  10nov2012
  qusub @ 707 = IF 2 prsn ! THEN \ 2nd person YOU 10nov2012
  qusub @ 737 = IF 2 prsn ! THEN \ 2nd person YOU 10nov2012
  qusub @ 713 = IF 3 prsn ! THEN \ 3rd person HE  10nov2012
  qusub @ 719 = IF 3 prsn ! THEN \ 3rd person SHE 10nov2012
  qusub @ 725 = IF 3 prsn ! THEN \ 3rd person IT  10nov2012
  qusub @ 743 = IF 3 prsn ! THEN \ 3rd person THEY 10nov2012
  prsn @ 3 = IF  \ only for 3rd person; 1sep2010
    midway @  t @  DO  \ Say "IS" after "WHO"; 19aug2010
      I       0 en{ @ 800 = IF  ( 800=BE; 10nov2012 )
        I     2 en{ @ 1 = IF  ( singular? 10nov2012 )
          I   4 en{ @ 3 = IF  ( 3rd person? 10nov2012 )
            I     8 en{ @  aud !  \ 10nov2012
            LEAVE
          THEN  \ end of test for 3rd person "IS" 10nov2012
        THEN  \ end of test for singular; 10nov2012
      THEN  \ end of test for be-verb; 10nov2012
    -1 +LOOP
    SpeechAct   \ to say "IS"; 17aug2010
    0 mfn !  \ test; remove; 25aug2010
    0 mfnflag ! \ Reset after use; 19aug2010
  THEN  \ end of test for prsn=1; 1sep2010
  qusub @ 701 = IF  ( I; 10nov2012 )
    1 prsn !  \ first person; 1sep2010
    1 nphrnum !  \ singular; 1sep2010
    midway @  t @  DO
      I       0 en{ @ 800 = IF   ( 800=BE; 10nov2012 )
        I     2 en{ @ 1 = IF   ( singular? 10nov2012 )
          I   4 en{ @ 1 = IF   ( 1st person? 10nov2012 )
            I     8 en{ @  aud !  \ 10nov2012
            LEAVE
          THEN  \ end ofb test for first person; 10nov2012
        THEN  \ end of test for singular 800=BE; 10nov2012
      THEN  \ end of test for be-verb; 10nov2012
    -1 +LOOP
    SpeechAct   \ to say "AM"; 17oct2011
  THEN    \ 9aug2010
  qusub @ 701 = IF  \ treat ME like 701=I; 10nov2012
    midway @  t @  DO
      I       0 en{ @ 800 = IF   ( 800=BE; 10nov2012 )
        I     2 en{ @ 1 = IF   ( singular? 10nov2012 )
          I   4 en{ @ 1 = IF   ( 1st person? 10nov2012 )
            I     8 en{ @  aud !  \ 10nov2012
            LEAVE
          THEN  \ end of test for first person; 10nov2012
        THEN  \ end of test for singular; 10nov2012
      THEN   \ end of test for be-verb; 10nov2012
    -1 +LOOP
    SpeechAct  \ moved inside the IF-clause; 10aug2010
  THEN    \ 9aug2010
  qusub @ 707 = IF  ( 707=YOU; 10nov2012 )
    2 prsn !  \ second person; 1sep2010
    midway @  t @  DO
      I       0 en{ @ 800 = IF  ( 800=BE; 10nov2012 )
        I     2 en{ @ 1 = IF  ( singular? 10nov2012 )
          I   4 en{ @ 2 = IF  ( 2nd person? 10nov2012 )
            I     8 en{ @  aud !  \ 10nov2012
            LEAVE
          THEN  \ end of test for 2nd person; 10nov2012
        THEN  \ end of test for singular; 10nov2012
      THEN  \ end of test for be-verb; 10nov2012
    -1 +LOOP
    SpeechAct   \ to say "ARE"; 10aug2010
  THEN    \ 9aug2010
  qusub @ 713 = IF  ( 713=HE; 10nov2012 )
    3 prsn !  \ third person; 1sep2010
    1 nphrnum !  \ singular; 1sep2010
    midway @  t @  DO
      I       0 en{ @ 800 = IF  ( 800=BE; 10nov2012 )
        I     2 en{ @ 1 = IF  ( singular? 10nov2012 )
          I   4 en{ @ 3 = IF  ( 3rd person? 10nov2012 )
            I 8 en{ @  aud !  \ 10nov2012
            LEAVE
          THEN  \ enmd of test for 3rd person; 10nov2012
        THEN  \ end of test for singular; 10nov2012
      THEN  \ end of test for be-verb; 10nov2012
    -1 +LOOP
  THEN  ( http://minforth.net.ms )
  midway @  t @  DO  \ search for who-query subject; 23aug2010
    I       0 en{ @  qusub @ = IF  \ if qusub found; 3oct2010
      I     8 en{ @  aud !  \ recall-tag; 10nov2012
      LEAVE   \ one exemplar is enough; 23aug2010
    THEN   \ end of test for subject; 23aug2010
  -1 +LOOP  \ end of search-loop; 23aug2010
  SpeechAct  \ speak (WHO IS) qusub query-subject; 3oct2010
  0 moot !  \ end of not tagging query-concepts; 24oct2011
; ( http://code.google.com/p/mindforth )


:  WhatBe ( what AM/IS/ARE Subjects ) \ 10oct2011
  1 moot !  \ prevent storage of spurious ideas; 24oct2011
  0 tqv !  \ prevent spurious carry-over values;  1aug2012
  qusub @ 0 = IF  \ for a new word like "energy"; 8aug2012
    subjnum @ 0 = IF  \ in absence of num(ber) data; 8aug2012
      3 prsn !  \ to say "IS"; 8aug2012
    THEN  \ end of test for "qusub"; 8aug2012
  THEN  \ end of test for "subjnum"; 8aug2012
  topic @ qusub ! \ THEN  \ 2nd choice; 10oct2011
  qusub @ 701 = IF 1 prsn ! THEN  \ 1st person "I"; 10nov2012
  qusub @ 707 = IF 2 prsn ! THEN  \ 2nd person YOU; 10nov2012
  midway @  t @  DO
    I       0 en{ @ 781 = IF  \ 781=WHAT;  10nov2012
      I     8 en{ @  aud !  \ 10nov2012
      LEAVE
    THEN
  -1 +LOOP
  SpeechAct
  fyi @ 2 > IF CR
    ."   from WhatBe after speaking of WHAT, "  \ 25feb2011
    ." psiDamping concept #781"
  THEN
  8773 caller !  \ ASCII 87=W 73=I; test; 26sep2010
  781 urpsi !  \ 781=WHAT for PsiDamp; 10nov2012
  PsiDamp
  0 caller !
  subjnum @ 2 <  topicnum @ 2 < OR IF  \ not plural? 4nov2011
    prsn @ 1 = IF  \ 1st person singular; 21aug2011
      midway @  t @  DO   \ 21aug2011
        I       0 en{ @ 800 = IF  \ 800=BE; 10nov2012
          I     2 en{ @ 1 = IF  \ singular?; 10nov2012
            I   4 en{ @ 1 = IF  \ 1st person?; 10nov2012
              I     8 en{ @  aud !  \ 10nov2012
              1 topicnum !  \ If "AM" prevent "ARE"; 26jul2012
              LEAVE  \ 21aug2011
            THEN  \ end of test for first person; 10nov2012
          THEN  \ end of test for singular; 10nov2012
        THEN     \ 21aug2011
      -1 +LOOP   \ 21aug2011
      SpeechAct  \ 21aug2011
    THEN  \ end of test for first person singular; 21aug2011
    prsn @ 3 = IF  \ 3rd person singular; 19sep2010
      midway @  t @  DO
        I       0 en{ @ 800 = IF  \ 800=BE; 10nov2012
          I     2 en{ @ 1 = IF    \ singular? 10nov2012
            I   4 en{ @ 3 = IF    \ 3rd pers? 26dec2012
              I     8 en{ @  aud !  \ 10nov2012
              1 topicnum !  \ If "IS" prevent "ARE" 21jul2012
              1 indefmust !  \ to say "IS A"; 20oct2011
              LEAVE
            THEN  \ end of test for 3rd person; 10nov2012
          THEN  \ end of test for singualr; 10nov2012
        THEN  ( http://isforth.com )
      -1 +LOOP
      SpeechAct
      fyi @ 2 > IF CR
      ."   from WhatBe after speaking of IS, " \ 25feb2011
      ." psiDamping concept #800"
      THEN
      8773 caller !  \ ASCII 87=W 73=I; test; 26sep2010
      800 urpsi !  \ 10nov2012
      PsiDamp
      0 caller !
      0 motjuste !
    THEN  \ end of test for 3rd person singular; 19sep2010
  THEN
  topicnum @ 2 =  prsn @ 2 =  OR IF  \ test; 19sep2010
    midway @  t @  DO
      I       0 en{ @ 800 = IF  \ 800=BE; 10nov2012
        I     2 en{ @ 2 = IF  \ plural? 10nov2012
          I     8 en{ @  aud !  \ 10nov2012
          LEAVE
        THEN  \ end of test for plural "ARE"; 10nov2012
      THEN  \ end of test for be-verb
    -1 +LOOP
    SpeechAct
    fyi @ 2 > IF CR
      ."   from WhatBe after speaking of ARE, " \ 25feb2011
      ." psiDamping concept #800"
    THEN
    8773 caller !  \ ASCII 87=W 73=I; test; 26sep2010
    800 urpsi !  \ 10nov2012
    PsiDamp
    0 caller !  \ test; 26sep2010
    0 motjuste !
    0 subjpsi !  \ reset for safety' 17oct2011
    0 topicnum !
  THEN
  topicnum @ 2 = NOT IF  \ if singular; 21jun2011
    prsn @ 3 = IF  \ 3rd person singular; 21jun2011
      topicnum @ 1 = IF  \ not zero; 4nov2011
        EnArticle  \ chance for "A" or "THE"; 21jun2011
      THEN  \ end of test for 1=singular; 4nov2011
    THEN   \ end of test for 3rd person; 21jun2011
  THEN   \ end of test for singular; 21jun2011
  midway @  t @  DO
    I       0 en{ @  qusub @ = IF  \ 10oct2011
      I     4 en{ @  1 = IF  \ nominative?  1jan2013
        I   8 en{ @ aud !  \ 10nov2012
        LEAVE
      THEN  \ end of test for dba=1 nominative; 1jan2013
    THEN
  -1 +LOOP
  motjuste @ urpsi !
  8773 caller !  \ ASCII 87=W 73=I; test; 26sep2010
  PsiDamp
  0 caller !  \ test; 26sep2010
  aud @ 0 > IF  \ avoid #zero ERROR; \ 19sep2010
    SpeechAct
  THEN  \ end of test to avoid ERROR; 19sep2010
  0 cogpsi !  \ let another new word call WhatBe; 17oct2011
  0 indefmust !  \ reset for safety; 20oct2011
  0 moot !  \ resume associative tagging; 24oct2011
  0 qusub !  \ zero out for safety; 10oct2011
  0 subjpsi !  \ reset for safety; 17oct2011
  0 topic !  \ reset for safety; 18oct2011
  0 whoflag !  \ Prevent EnArticle; 6oct2011
; ( http://code.google.com/p/mindforth )


:  AskUser  ( outputs questions of a speculative nature )
  35 pov !  \ #35=internal; *42=external; 29dec2012
  ynverb @ 0 = IF  \ only ask y/n question once; 24jun2011
   quverb @ ynverb !  \ isolate at start; 24jun2022
 \ nphrnum @ 2 = IF  \ if plural trigger; test; 24jun2011
 \ nphrnum @ 2 = IF  \ Commenting out for InFerence; 1jan2013
     AuxVerb       \ to say DO or DOES; 24jun2011
   \ midway @  t @  DO  \ search English vocab; 24jun2011
     midway @  inft @  DO  \ skip silent inference; 27dec2012
       I       0 en{ @  qusub @ = IF  ( kbtv )
         I     8 en{ @  aud !  \ 10nov2012
         LEAVE
       THEN
     -1 +LOOP
     tkbv @ tqv !  \ qusub needs a tqv to quverb 29dec2012
     SpeechAct   \ to say the subject; 24jun2011
     t @ tkbn !  \ if engram is to be changed; 2jul2011
     quverb @  t @ 7 psi{ !  \ insert as seq; 29dec2012
     qusub @ nacpsi !  \ transfer activand; 25jun2011
     62 nounval !  \ prime NounAct; 24jun2011
     NounAct  \ activate the query subject; 24jun2011
     midway @  t @  DO  \ search English vocab; 24jun2011
       I       0 en{ @  ynverb @ = IF  ( yes-or-no verb )
         I     2 en{ @  2 = IF  \ as if infinitive; 24jun2011
           I   8 en{ @  aud ! \ fetch recall-vector 10nov2012
           LEAVE  \ one engram is enough; 24jun2011
         THEN  \ end of test for plural as if infinitive
       THEN
     -1 +LOOP
     aud @ 0 = IF  \ if no plural accept singular 24jun2011
       midway @  t @  DO  \ search English vocab; 24jun2011
         I       0 en{ @  ynverb @ = IF  ( yes-or-no verb )
           I     2 en{ @  1 = IF  \ second choice; 24jun2011
             I   8 en{ @  aud !  \ fetch recall-vector
             LEAVE  \ one engram is enough; 24jun2011
           THEN  \ end of test for plural as if infinitive
         THEN
       -1 +LOOP
     THEN  \ end of test for no engram found; 24jun2011
     aud @ 0 = IF  \ if neither plural nor singular; 25aug2011
       midway @  t @  DO  \ search English vocab; 25aug2011
         I       0 en{ @  ynverb @ = IF  ( yes-or-no verb )
           I   8 en{ @  aud !  \ fetch recall-vector
           LEAVE  \ one engram is enough; 25aug2011
         THEN  \ end of test for any form at all; 25aug2011
       -1 +LOOP
     THEN  \ end of third test for no engram found; 25aug2011
     ynverb @ nacpsi !  \ transfer activand; 25jun2011
     62 verbval !  \ prime VerbAct;  2jul2011
     VerbAct  \ activate the query verb; 25jun2011
     SpeechAct   \ to say yes-or-no verb; 24jun2011
     t @ 1 - tkbv !  \ if engram is to be changed; 2jul2011
     tkbv @    tkbn @  6 psi{ !  \ noun's tqv; 29dec2012
     quverb @  tkbn @  7 psi{ !  \ noun's seq; 29dec2012
     quobj @   tkbv @  7 psi{ !  \ verb's seq; 29dec2012
     quobj @ 0 =  quobj @ 586 = OR IF  \ nothing or ERROR
       711 quobj !  \ 711=ANYTHING by default; 10nov2012
     THEN  \ end of test for a query-object; 20jul2011
   \ midway @  t @  DO  \ search English vocab; 24jun2011
     midway @  inft @  DO  \ skip silent inference; 27dec2012
       I       0 en{ @  quobj @ = IF  ( query-object? )
         I     8 en{ @  aud !  \ 10nov2012
         LEAVE
       THEN
     -1 +LOOP
     aud @ 2 < IF  \ if zero or ERROR; 25aug2011
       midway @  t @  DO  \ search English vocab; 25aug2011
         I       0 en{ @  711 @ = IF  \ 711=ANYTHING; 10nov2012
           I     8 en{ @  aud !  \ 10nov2012
           LEAVE   \ 25aug2011
         THEN      \ 25aug2011
       -1 +LOOP    \ 25aug2011
     THEN          \ 25aug2011
     SpeechAct   \ to say query-object; 24jun2011
     t @  tkbv @  6 psi{ !  \ insert quverb's tqv; 29dec2012
 \ THEN  \  end of test for a plural nphrnum; 24jun2011
 \ THEN  \  Commenting out; soon remove as obsolete; 1jan2013
   0 yncon !  \ because question has been asked;  2jul2011
   1 kbcon !  \ because waiting for answer;  2jul2011
   0 ynverb !  \ zero out; prevent repeat of query 24jun2011
  THEN  \ end of test for a positive ynverb; 24jun2011
   5 bias !  \ Restore expectation of noun; 24jun2011
; ( http://code.google.com/p/mindforth/wiki/AskUser )


:  EnPronoun  \ For use with what-do-X-do queries.
  num @ 1 = IF  \ If antecedent num(ber) is singular.
    mfn @ 1 = IF  \ if masculine singular; 13apr2010
      midway @  t @  DO  \ Look backwards for 49=HE.
        I       0 en{ @  713 = IF  \ If 713=HE is found,
         713 motjuste !  \ "nen" concept #713 for "he".
          I     8 en{ @  aud !  \ Recall-vector for "he".
          LEAVE  \ Use the most recent engram of "he".
        THEN  \ End of search for 713=HE; 10-nov2012.
      -1 +LOOP  \ End of loop finding pronoun "he".
      SpeechAct \ Speak or display the pronoun "he".
    THEN  \ end of test for masculine gender-flag.
    mfn @ 2 = IF  \ if feminine singular.
      midway @  t @  DO  \ Look backwards for 80=SHE
        I       0 en{ @ 719 = IF  \ If 719=SHE is found,
         719 motjuste !  \ "nen" concept #719 for "she".
          I     8 en{ @  aud !  \ Recall-vector for "she".
          LEAVE  \ Use the most recent engram of "she".
        THEN  \ End of search for #719 "she".
      -1 +LOOP  \ End of loop finding pronoun "she"
      SpeechAct \ Speak or display the pronoun "she"
    THEN  \ end of test for feminine gender-flag.
    mfn @ 3 = IF  \ if neuter singular; 13apr2010
      midway @  t @  DO  \ Look backwards for 725=IT.
        I       0 en{ @ 725 = IF  \ If 725=IT is found,
         725 motjuste !  \ "nen" concept #725 for "it".
          I     8 en{ @  aud !  \ Recall-vector for "it".
          LEAVE  \ Use the most recent engram of "it".
        THEN  \ End of search for 725=IT; 10nov2012
      -1 +LOOP  \ End of loop finding pronoun "it".
      SpeechAct \ Speak or display the pronoun "it".
    THEN  \ end of test for neuter gender-flag.
    0 numsubj !  \ safety measure; 13apr2010
  THEN  \ End of test for singular num(ber)
  num @ 2 = IF  \ 30dec2009 If num(ber) of antecedent is plural
    ( code further conditions for "WE" or "YOU" )
    midway @  t @  DO  \ Look backwards for 743=THEY.
      I       0 en{ @ 743 = IF  \ If 743=THEY is found,
       743 motjuste !  \ "nen" concept #743 for "they".
        I     8 en{ @  aud !  \ Recall-vector for "they".
        LEAVE  \ Use the most recent engram of "they".
      THEN  \ End of search for 743=THEY; 10nov2012.
    -1 +LOOP  \ End of loop finding pronoun "they".
    SpeechAct \ Speak or display the pronoun "they".
  THEN  \ 30dec2009 End of test for plural num(ber)
; ( http://code.google.com/p/mindforth/wiki/EnPronoun )


:  NounPhrase ( select part of a thought )
  0 audjuste !  \ prevent carry-over; 20oct2011
  verblock @ 0 > IF  \ positive verblock? 20oct2011
    verblock @ 6 psi{ @ nounlock !  \ test; 20oct2011
  THEN  \ end of test for a positive verblock; 20oct2011
  66 caller !  \ here and further down; 12oct2010
  objold @ urpsi !  \ here and further down; 12oct2010
  0 caller !  \ reset after use; 12oct2010
  0 urpsi !  \ reset for safety; 12oct2010
  EnReify ( move abstract Psi concepts to EnVocab reality )
  0 act !
  0 aud !
 -64 defact !  \ for default comparisons with "50=I"; 9oct2011
  0 kibosh !  \ for de-activating non-selectees; 17aug2011
  0 motjuste !
  0 nphrnum !  \ prevent carry-overs; 11oct2011
  0 num !   \ without prejudice; 29aug2010
  0 prsn !  \ without prejudice; 29aug2010
  0 putnum !  \ prevent carry-over from previous; 4nov2011
  0 recnum !  \ prevent carry-over from previous; 4nov2011
  0 tpeg !  \ reset for safety; 28sep2011
  nounlock @ 0 > IF  \ already a nounlock? 19oct2011
    nounlock @ 2 en{ @  scn !  \ subject-concept-number 17jul2012
    nounlock @ 8 en{ @  audjuste !  \ tentatively; 10nov2012
  THEN  \ end of test for a positive nounlock; 19oct2011
  5 opt !
  35 pov !
  1 subjectflag !  ( 3dec2009 A default until countermanded )
  dirobj @ 1 = IF 0 subjectflag ! THEN  ( 3dec2009 anti-default )
  predflag @ 1 = IF 0 subjectflag ! THEN ( anti-default 8oct2010 )
  0 psi !
  midway @  t @  DO
    I 5 psi{ @ 5 =  I 5 psi{ @ 7 = OR IF  \ POS; 12aug2011
      I   0 en{ @ 65 = IF I 8 en{ @ audme ! THEN  \ 10nov2012
      subjectflag @ 1 = IF  \  test; change; 26aug2011
        I 1 psi{ @  act @ >  I 6 psi{ 0 > AND IF  \ 6oct2011
          I 7 psi{ @  0 > IF  \ Testing for seq-concept; 12oct2011
            I  tsels ! \ retain time of subject; 11sep2011
            I  tseln ! \ retain time of motjuste; 11sep2011
            I 0 psi{ @  motjuste !  \ 12aug2011
            I 2 psi{ @  nphrnum !  \ NounPhrase num(ber); 6oct2011
            I 2 psi{ @  subjnum !  \ 11oct2011
            I 2 psi{ @  snu ! !  \ verb-select parameter 21dec2012
          THEN  \ reinstating for subjects; 3oct2011
          ( insert NPhr diagnostic code here; 11sep2011 )
          I 2 psi{ @ subjnum !   \ verbs in general; 12aug2011
          motjuste @ subjold !   \ keep oldsubject ready; 8oct
          I 2 psi{ @  putnum !   \ putative num for verb; 12aug2011
          I 5 psi{ @  nphrpos !  \ NounPhrase part-of-speech
          I   1 psi{ @  act @ > I 7 psi{ @ 0 > AND IF  \ 12oct2011
            I           tpeg !  \ peg the time-slice; 28sep2011
            I 7 psi{ @  svo2 !  \ hold seq; test; 12oct2011
            I 6 psi{ @  verblock ! \ tqv of seq-concept; 12oct2011
            midway @ t @  DO  \ from Wotan German AI; 21dec2012
              I       0 en{ @ motjuste @ = IF  \ same concept?
               I      8 en{ @ 0 > IF  \ skip non-rv; 21dec2012
              \ I     2 en{ @  snu @ = IF  \ same subj. number?
                \ I   4 en{ @ 1 = IF \ nom. for subj? 21dec2012
                    I 8 en{ @  audjuste ! \ avoid spurious
                  \ I 8 en{ @  0 > IF  \ positive recall-vector?
                  \   1 8 en{ @ audjuste ! \ recall-vector 21dec
                  \ THEN  \ end of test for positive rv 21dec2012
                \ THEN  \ end of dba-test for nominative
              \ THEN  \ end of subject-number test; 21dec2012
               THEN \ end of skipping InFerence non-rb 21dec2012
              THEN  \ end of search of English lexicon 21dec2012
            -1  +LOOP  \ end of English lexicon search 21dec2012
          \ I 8 en{ @  audjuste ! \ avoid the spurious; 10nov2012
            motjuste @ 701 = IF  \ guarantee "I"; 10nov2012
              midway @  t @  DO  \ search backwards; 25oct2011
                I   0 en{ @ 701 = IF  \ "701=I" 20dec2012
                  I 8 en{ @  audjuste !  \ recall-vector
                  LEAVE  \ one I-engram is enough; 25oct2011
                THEN  \ end of test for "701=I"; 10nov2012
              -1 +LOOP  \ end of "701=I" search loop; 10nov2012
            THEN  \ end of test for "701=I"; 10nov2012
            motjuste @ 707 = IF  \ guarantee "YOU"; 10nov2012
              midway @  t @  DO  \ search backwards; 25oct2011
                I   0 en{ @  707 = IF  \ "707=YOU"; 10nov2012
                  I 8 en{ @  audjuste !  \ recall-vector
                  LEAVE  \ one YOU-engram is enough; 20dec2012
                THEN  \ end of test for "707=YOU"; 10nov2012
              -1 +LOOP  \ end of 707=YOU search loop; 10nov2012
            THEN  \ end of test for "707=YOU"; 10nov2012
            I 1 psi{ @  act ! \ after passing seq-check; 28aug2011
          THEN  \ reinstating to prevent false motjuste; 6oct2011
        THEN  \ end of test for a higher activation; 26aug2011
      THEN  \ end of test for 1=subjectflag; test; 26aug2011
      subjectflag @ 0 = IF  \ i.e., dir.obj or pred.nom; 15oct2011
       nounlock @ 0 > IF
         nounlock @  0 psi{ @ motjuste !  \ nounlock psi; 22dec2012
       ELSE
        I  1 psi{ @  act @ > IF  \ if higher; 12aug2011
          I          tseln ! \ retain time of motjuste;  8may2011
          I  0 psi{ @  motjuste !  \ 26aug2011
          ( insert NPhr diagnostic code here;  9sep2011 )
          nounlock @ 0 > IF  \ if positive nounlock exists; 8oct2011
            I  nounlock @ = IF  \ upon reaching engram; 8oct2011
               I 0 psi{ @ motjuste !  \ grab nounlock psi; 8oct2011
               I 2 psi{ @  nphrnum !  \ NounPhrase num(ber) 11oct2011
               I 2 en{ @  pcn !  \ predicate concept number 16jul2012
             \ I 8 en{ @  audjuste !  \ 10nov2012
               midway @ t @  DO  \ look for recall-vector; 22dec2012
                 I 0 en{ @ motjuste @ = IF  \ same concept? 22dec2012
                   I   8 en{ @ 0 > IF  \ positive rv? 22dec2012
                     I 8 en{ @  audjuste ! \ 22dec2012
                   THEN  \ end of test for recall-vector; 22dec2012
                 THEN  \ end of test for concept; 22dec2012
               -1  +LOOP  \ end of English lexicon search; 22dec2012
               LEAVE  \ prevent usurpation of pre-ordained seq 8oct2011
            THEN  \ end of test for Index = nounlock; 8oct2011
          THEN  \ end of test for positive nounlock; 8oct2011
        \ I 0 psi{ @  subjpsi !  \ Commenting out; 20dec2012
          I 2 psi{ @  nphrnum !  \ NounPhrase num(ber); 12aug2011
          I 2 psi{ @  putnum !   \ putative num for verb; 12aug2011
          I 5 psi{ @  nphrpos !  \ NounPhrase part-of-speech
          dirobj @ 1 = IF
            motjuste @ objold ! \ a test ICW slosh-over; 12oct2010
          THEN   ( http://christophe.lavarenne.free.fr/ff )
          I   1 psi{ @  act @ > IF  \ 26aug2011
            I 1 psi{ @  act !  \ 12aug2011
          THEN  \ 26aug2011
        THEN  \ end of test for a higher activation; 26aug2011
       THEN  \ end of test for positive nounlock; 22dec2012
      THEN  \ end of test for 0=subjectflag; test; 26aug2011
    THEN  \ end of test for a noun or pronoun; 26aug2011
  -1 +LOOP \ End of search for most active "motjuste"; 20dec2012
  subjectflag @ 1 = IF motjuste @ subjpsi ! THEN  \ 20dec2012
  nounlock @ 0 > IF  \ 22dec2012
    midway @ t @  DO  \ from Wotan German AI; 22dec2012
      I       0 en{ @ motjuste @ = IF  \ same concept?
        I     8 en{ @ 0 > IF  \ skip non-rv; 22dec2012
          I   8 en{ @  audjuste ! \ 22dec2012
          LEAVE  \ if correct parameters; 22dec2012
        THEN  \ emd of test for positive en8; 22dec2012
      THEN  \ end of test for match with motjuste; 22dec2102
    -1  +LOOP  \ end of English lexicon search 22dec2012
  THEN  \ end of test for positive nounlock; 22dec2012
  midway @  t @  DO  \ search backwards; 12aug2011; 12sep2011
    I       0 en{ @  motjuste @ = IF  \ 12aug2011
      predflag @ 1 = IF  \ only for predicate nominatives;
       nounlock @ 0 = IF  \ in absence of nounlock; 19oct2011
        I   2 en{ @  subjnum @ = IF  \ agreement? 19sep2011
          I 8 en{ @  audjuste !  \ recall-vector; 10nov2012
          LEAVE  \ one auditory engram is enough; 12aug2011
        THEN ( http://practicalai.org )
       THEN  \ end of test for absence of nounlock; 19oct2011
      ELSE  \ for normal direct objects; 19sep2011
       verblock @ 0 = IF  \ if no verblock; test; 19oct2011
        I   8 en{ @  audjuste !  \ direct object; 10nov2012
        LEAVE  \ one auditory engram is enough; 19sep2011
       THEN  \ end of test for absence of nounlock; 19oct2011
      THEN  \ end of test for predicate nominative; 19sep2011
    THEN  \ end of test for match with motjuste; 12aug2011
  -1 +LOOP  \ end of backwards search loop; 12aug2011
 nounlock @ 0 = IF  \ if no nounlock override; 8oct2011
  act @ 20 < IF  \ if no subject of thought is found; 21aug2011
   subjectflag @ 1 = IF  \ default to "I" only as subject 17oct2011
    701 motjuste !  \ 701=I default concept of AI Mind; 10nov2012
    midway @  t @  DO  \
      I 0 psi{ @ 701 =  I 7 psi{ @ 0 > AND IF  \ 10nov2012
        I 1 psi{ @  defact @ > IF  \ if higher act found; 9oct2011
          I  tsels ! \ retain time of subject; 9oct2011
          I  tseln ! \ retain time of motjuste; 9oct2011
          I 6 psi{ @  verblock ! \ lock onto valid verb; 12oct2011
          I 1 psi{ @  defact ! \ dynamic metric; 9oct2011
        THEN  \ end of test for higher-act ego-concept; 9oct2011
      THEN  \ end of search for least-inhibited "50=I"; 9oct2011
    -1 +LOOP  \ End of loop finding "50=I"; 9oct2011
    701 subjpsi !   \ for use elsewhere; 10nov2012
    701 topic !     \ for question-asking modules; 10nov2012
     1 nphrnum !   \ for EnArticle and VerbPhrase; 6oct2011
     7 nphrpos !   \ prevent article "A" with "I"; 6oct2011
     1 subjnum !   \ for use elsewhere; 16aug2011
     1 prsn !      \ for use elsewhere; 16aug2011
    midway @  t @  DO  \ Use parameters to find "I";  11nov2012
      I       0 en{ @  701 = IF  \ If 701=I is found; 10nov2012
        I     4 en{ @  1 = IF  \ parameter dba=1?     11nov2012
          I     8 en{ @  audjuste !  \ recall-vector; 10nov2012
          LEAVE  \ Use the most recent engram of "I"; 16aug2011
        THEN  \ end of search for nominative "I"; 11nov2012
      THEN  \ End of search for 701=I; 10nov2012
    -1 +LOOP  \ End of parameter-based search-loop; 11nov2012
   THEN  \ end of test for "I" to become subj. not obj. 17oct2011
  THEN  \ end of test for low activation warranting a default
 THEN  \ end of test for absence of pre-ordained nounlock; 8oct2011
  nounlock @ 0 > IF   \  if positive; test; 16aug2012
    motjuste @ 701 = IF  \ if 701=I is indicated; 10nov2012
      midway @  t @  DO  \ Look backwards for 65=ME; 16aug2012
        I       0 en{ @  65 = IF  \ If #65 "ME" found; 16aug2012
          I     8 en{ @  audjuste !  \ "ME" engram 10nov2012
          LEAVE  \ Use most recent engram of "ME"; 16aug2012
        THEN  \ End of search for #65 "ME"; 16aug2012
      -1 +LOOP  \ End of loop finding word "ME"; 16aug2012
    THEN  \ end of special override for 65=ME; 16aug2012
    motjuste @ 707 = IF  \ if 707=YOU is needed; 10nov2012
      midway @  t @  DO  \ Look backwards for 56=YOU; 16aug2012
        I       0 en{ @  56 = IF  \ If #56 "YOU" found; 16aug2012
          I     8 en{ @  audjuste !  \ "YOU" engram 10nov2012
          LEAVE  \ Use most recent engram of "YOU"; 16aug2012
        THEN  \ End of search for #56 "YOU"; 16aug2012
      -1 +LOOP  \ End of loop finding word "YOU"; 16aug2012
    THEN  \ end of special override for 56=YOU; 16aug2012
  THEN  \  end of test for a positive nounlock; 16aug2012
  dirobj @ 1 = IF  \ When seeking direct object; 13jun2011
   nounlock @ 0 = IF  \ if no nounlock override; 8oct2011
    act @  20 < IF  \ If activation too low; 13jun2011
      WhatAuxSVerb  \ ask question for lack of dirobj 30jul2011
      EXIT  \ Abandon rest of NounPhrase; 13jun2011
    THEN  \ End of test for sufficient activation; 13jun2011
   THEN  \ end of test for a nounlock in play; 8oct2011
  THEN  \ End of test for direct object; 13jun2011
  \ The following code for the irregular English noun "child"
  \ serves as example code for the many German or Russian
  \ irregular nouns that a "DeKi" or "PyYm" AI must deal with.
  motjuste @ 112 = IF  \ irregular "112=CHILD"; 10nov2011
    nphrnum @ 2 < IF  \ if singular is needed; 10nov2011
      midway @  t @  DO  \ search backwards; 10nov2011
        I       0 en{ @  525 = IF  \ 525=CHILD; 11nov2012
          I     8 en{ @  audjuste !  \ for SpeechAct; 10nov2011
          LEAVE  \ one engram is enough; 10nov2011
        THEN  \ end of test for CHILD-engram; 10nov2011
      -1 +LOOP  \ end of search of En(glish) lexicon
    THEN  \ end of test for singular 525=CHILD; 11nov2012
    nphrnum @ 2 = IF  \ 10nov2011
      midway @  t @  DO  \ search backwards; 10nov2011
        I       0 en{ @  526 = IF  \ 526=CHILDREN; 11nov2012
          I     8 en{ @  audjuste !  \ for SpeechAct; 10nov2011
          LEAVE  \ one engram is enough; 10nov2011
        THEN  \ end of test for CHILDREN-engram; 10nov2011
      -1 +LOOP  \ end of search of En(glish) lexicon
    THEN  \ end of test for plural 526=CHILDREN; 11nov2012
  THEN  \ end of special handling of irregular 525=CHILD;
  motjuste @ 701 = IF  \ if 701=I selected; 10nov2012
    1 prsn !  \ first person; 29aug2010
    1 num !   \ singular; 29aug2010
    1 nphrnum !  \ singular; 30aug2010
  THEN  \ end of test for 50=I; 29aug2010
  EnDamp
  motjuste @  hipsi !
  0 anset !   ( Insert "AN" article before vowels. )
  \ MindForth may start treating "AN" as inflected "A"; 13sep2011
  aud @  0  aud{ @ 65 = IF 65 anset ! THEN  ( if vowel A )
  aud @  0  aud{ @ 69 = IF 69 anset ! THEN  ( if vowel E )
  aud @  0  aud{ @ 73 = IF 73 anset ! THEN  ( if vowel I )
  aud @  0  aud{ @ 79 = IF 79 anset ! THEN  ( if vowel O )
  aud @  0  aud{ @ 85 = IF 85 anset ! THEN  ( if vowel U )
  \ Following code covers also "audjuste"; 21oct2011
  audjuste @  0  aud{ @ 65 = IF 65 anset ! THEN  ( if A )
  audjuste @  0  aud{ @ 69 = IF 69 anset ! THEN  ( if E )
  audjuste @  0  aud{ @ 73 = IF 73 anset ! THEN  ( if I )
  audjuste @  0  aud{ @ 79 = IF 79 anset ! THEN  ( if O )
  audjuste @  0  aud{ @ 85 = IF 85 anset ! THEN  ( if U )
  whoflag @ 0 = IF  \ If not answering a who-is query; 23jul2010
  \ EnArticle    \ Give a chance, not an order; 23jul2010
    nphrnum @ 1 = IF  \ not default zero; 4nov2011
    \ EnArticle  \ for true singular; 4nov2011
    THEN  \ end of test for 1=singular; 4nov2011
    0 whoflag !  \ Here instead of at InStantiate; 23jul2010
  THEN  \ End of test for zero whoflag; 23jul2010
  whoflag @ 1 = IF  \ If answering a who-is query; 26aug2011
    EnArticle  \ answer with Is-a etc.; 26aug2011
    0 whoflag  \ zero out after use; 26aug2011
  THEN  \ end of whoflag test; 26aug2011
  num @ 1 = IF  \ If num(ber is singular; 10ap2010
    EnPronoun   \ Prepare to substitute he she it; 10apr2010
  THEN   \ End of test of num(ber); 10apr2010
  motjuste @ 701 = NOT IF  \ if not 701=I; 10nov2012
    motjuste @ 707 = NOT IF  \ not 707=you; 10nov2012
      motjuste @ 731 = NOT IF  \ 731=WE; 10nov2012
        3 prsn !  \ not I YOU WE; 29aug2010
      THEN  \ end of test for 731=WE; 10nov2012
    THEN  \ end of test for 707=YOU; 10nov2012
  THEN  \ end of test for "not I" 29aug2010
  motjuste @ nacpsi !
  ( could use "subjectflag" for test below; 18oct2010 )
  dirobj @ 0 = IF  \ only let subjects call NounAct; 17oct2010
    NounAct
  THEN  \ end of test originating in JavaScript AI; 17oct2010
  0 nacpsi !
  0 nounval !
  66 caller !  \ test; 26sep2010
  motjuste @ urpsi !  \ test; 17oct2010
  PsiDamp  \ to prevent interference; 17oct2010
  0 caller !  \ reset after use; 26sep2010
  0 urpsi !  \ reset for safety; 24sep2010
  66 caller !  \ test; 12oct2010
  objold @ urpsi !  \ test; 12oct2010
  0 caller !  \ reset after use; 12oct2010
  0 urpsi !  \ reset for safety; 12oct2010
   -8 tsels @  1 psi{ ! \ Let subjects re-surface; 12oct2011
  predflag @ 1 = dirobj @ 1 = OR IF  \ test; 29may2011
    -16 tseln @  1 psi{ ! \ test; 12oct2011
  THEN  \ only inhibit predicate nominatives; 11sep2010
  predflag @ 1 = IF  \ helps for Is-a; 15sep2010
    EnArticle  \ say "A" or "THE"; 15sep2010
  THEN  \ end of test; 15sep2010
  audjuste @ aud !
  aud @ 0 > IF  \ avoid ERROR; 19sep2010
    SpeechAct  \ Display or speak the selected noun-phrase.
    0 anset !  \ Reset for safety; 21oct2011
  THEN   \ end of test for 0=aud ERROR; 19sep2010
  predflag @ 1 = dirobj @ 1 = OR IF  \ both; 23jun2011
    -32 t @ 1 -  1 psi{ ! \ inhibit new noun-node; 27sep2010
    -32 t @      1 psi{ ! \ AI is now robust enough; 5aug2011
  THEN  \ only inhibit predicate nominatives; 12sep2010
  -16 t @ 1 -    1 psi{ !  \ Even shallower; 12oct2011
  -16 t @        1 psi{ !  \ Even shallower; 12oct2011
  32 EMIT
  fyi @ 2 > IF CR
  ."   from NounPhrase "
  THEN
  motjuste @ topic !
  instnum @  topicnum !
  dirobj @ 1 = predflag @ 1 = OR IF  \ if set; 24sep2010
    66 caller !  \ test; 26seo2010
    motjuste @ urpsi !  \ prepare to psi-damp motjuste; 24sep
    PsiDamp  \ knock down activation of non-subject; 24sep2010
    0 caller !  \ test; 26sep2010
    0 urpsi !  \ reset for safety; 24sep2010
  THEN \ end of test for a non-subject (pro)noun; 24sep2010
  0 act !
  0 aftjux !  \ reset for safety; 27jul2011
  0 anset !   \ reset for safety; 21oct2011
  0 jux !     \ reset for safety; 27jul2011
  0 nounlock ! \ after causing selection of VPhr seq-noun 8oct2011 
  0 prejux !  \ reset for safety; 27jul2011
  0 psi  !
  0 psi3 !    \ reset for safety  27jul2011
; ( http://code.google.com/p/mindforth/wiki/NounPhrase )


:  ConJoin
  questype @  370 =  IF  \ 370=WHY; 10nov2012
    344    conj !  \ 344=BECAUSE; 10nov2012
  ELSE  302 conj !  \ 302=AND; 10nov2012
  THEN  ( http://www.taygeta.com/forth.html )
  midway @  t @  DO
    I       0 en{ @  conj @ = IF
      conj @  motjuste !
      I     8 en{ @  aud !  \ 10nov2012
      LEAVE
    THEN
  -1 +LOOP
  SpeechAct
  0 questype !
; ( http://code.google.com/p/mindforth/wiki/ConJoin )


:  VerbGen  ( stub of verb-generation module; 15nov2012 )
   \ VerbGen uses "audbase" as a starting point in auditory
   \ memory for the transfer of a left-justified verb first
   \ into AudBuffer and then as a right-justified word into
   \ OutBuffer so that inflectional endings ("-S": "-ING")
   \ may be added to or subtracted from the word in memory.
   \ http://www.scn.org/~mentifex/Dushka.html is Russian AI
   \ with major use of VerbGen, which will also be used in
   \ http://www.scn.org/~mentifex/DeKi.txt German Wotan AI.
;  \ End of stub of VerbGen module for verb-generation.


\ The VerbPhrase module aims for the following entelechy goals.
\ [ ] If no predicate nominative is known, detour into a question.
\ [ ] If no transitive verb is most active, default to verb of being.
\ [ ] If no direct object is found, detour into asking a question.
\ 7dec2009 If no verb is found for a noun, defer to SelfRef NOT-KNOW.
\ [ ] If a transitive verb is most active, try to find direct object.
\ [X] Find whatever verb is most active after a noun-phrase.
\ Verb-selection shifts from en{ array to psi{ array on 12aug2011.
:  VerbPhrase ( supervise verb syntax )
  verblock @ 0 > IF  \ positive verbloc? 20oct2011
    verblock @ 6 psi{ @ nounlock !  \ test; 20oct2011
  THEN  \ end of test for a positive verblock; 20oct2011
  0 subjectflag !  \ for only absolute SpreadAct; test; 4aug2011
  EnReify
  0 act !
  0 aud !
  0 kibosh !  \ for de-activating non-selectees; 17aug2011
  0 motjuste !
  verblock @ 0 > IF  \ already a verblock? 20oct2011
    verblock @ 0 en{ @ verbpsi ! \ lexical verbpsi 13nov2012
    verblock @ 8 en{ @ audbase ! \ VerbGen parameter 13nov2012
    subjpsi @ 701 = subjpsi @ 731 = OR IF 1 prsn ! THEN \ I or WE
    subjpsi @ 707 = subjpsi @ 737 = OR IF 2 prsn ! THEN \ YOU
    subjpsi @ 713 = subjpsi @ 719 = OR IF 3 prsn ! THEN \ HE; SHE
    subjpsi @ 725 = subjpsi @ 743 = OR IF 3 prsn ! THEN \ IT THEY
    prsn @ dba !  \ from DeKi; parameter for VerbGen; 21dec2012
  \ verblock @ 8 en{ @  vphraud !  \ tentatively; 10nov2012
    0 vphraud !  \ until a known verb is found; 22dec2012
    midway @ t  @ DO  \ from Wotan AI; search lexicon; 22dec2012
      I     0 en{ @  verbpsi @ = IF \ 1: same psi? 22dec2012
          I 8 en{ @ 0 > IF  \ skip InF lacking aud; 22dec2012
            I 8 en{ @  vphraud !  \ tentatively; 22dec2012
          THEN  \ end of check for positive rv; 22dec2012
      THEN  \ end of parameter test; 22dec2012
    -1 +LOOP  \ end of loop searching lexicon; 22dec2012
  THEN  \ end of test for a positive verblock; 20oct2011
  8 opt !
  0 psi !
  0 vphract !  \ for validity of threshold-tests; 15aug2011
\ 0 vphraud !  \ prevent spurious carry-overs; 3oct2011
\ 0 vphraud !  \ commenting out as a test; 22dec2012
  adverbact 32 > IF
    ( EnAdverb )
  THEN  ( http://theforthsource.com )
  fyi @ 1 > IF CR
 ."   VerbPhrase preview with slosh-over indicated by + --"
    CR
    ."   Disparate verb-node activations slosh "  \ 7nov2010
    ." over onto candidate objects."  CR  ."    " \ 7nov2010
  THEN
 verblock @ 0 = IF  \ prevent false negations; 20oct2011
  midway @ t  @ DO  \ Search backwards through psi concepts.
    I     5 psi{ @  8 = IF  \  if 8=pos verb; 12aug2011
      I   1 psi{ @  act @ > IF  ( if psi1 is higher 12aug2011 )
        I          tselv ! \ retain time of winning verb; 8may2011
        tselv @  kibosh @  < IF  \ if different 17aug2011
        \ ."  KIBOSH = " kibosh @ .  \ 17aug2011
          0 kibosh @ 1 psi{ !  \ deactivate also-ran; 17aug2011
        THEN  \ end of comparison; 17aug2011
        I         kibosh ! \ time of predecessor cand 17aug2011
        I 0 psi{ @ motjuste !  ( store psi-tag of verb 12aug2011 )
        I 3 psi{ @ negjux !    ( record any 250=NOT; 21dec2012 )
        ( insert diagnostic code here; 7sep2011 )
        verblock @ 0 > IF  \ if positive verblock exists; 8oct2011
          I  verblock @ = IF  \ upon reaching engram; 8oct2011
            I          tselv ! \ time of sel. of verb; 30jul2012
            I 0 psi{ @ motjuste !  \ grab verblock psi; 8oct2011
            64 act !  \ to pass threshold-test; 20oct2011
            I 3 psi{ @ negjux !  \ for negation of verb; 9oct2011
            I 8 en{ @  vphraud !  \ for SpeechAct; 10nov2012
            I 6 psi{ @ nounlock !  \ after verb grab seq; 12oct2011
            LEAVE  \ prevent usurpation of pre-ordained seq; 7oct2011
          THEN  \ end of test for Index = verblock;  8oct2011
        THEN  \ end of test for positive verblock; 8oct2011
        I 1 psi{ @ 0 > IF  \ positive activation; 12aug2011
          I 3 psi{ @ psi3 !  ( Check for negation; 25jun2011 )
         verblock @ 0 = IF  \ test; 20oct2011
          I 3 psi{ @ negjux !  ( be-verb negation;  9oct2011 )
         THEN  \ end of avoidance of false negation; 20oct2011
          I 6 psi{ @ tqv !  \ underailable qtv; 12oct2011
        THEN  \ end of test for positive activation; 27jul2011
        I 5 psi{ @ predpos ! ( Grab winning part of speech 12aug2011 )
        I  8 en{ @ vphraud ! ( auditory recall-vector 10nov2012 )
        I 1 psi{ @  act !  ( to test for a higher psi1 12aug2011 )
      THEN  ( http://win32forth.sourceforge.net )
    THEN  \ end of test for opt=8 verbs; 8sep2011
  -1 +LOOP  \ end of loop cycling back through psi concepts
 THEN  \ end of verblock-test to prevent false negations; 20oct2011
  verblock @ 0 > IF  \ if positive verblock exists; 20oct2011
    verblock @ 0 psi{ @ motjuste !  \ verblock override; 21oct2011
    verblock @ 3 psi{ @ negjux !  \ capture any 250=NOT; 21dec2012
  vphraud @ 0 = IF  \ prevent override of selection 22dec2012
    verblock @ 8 en{ @ vphraud !  \ auditory recall-v; 10nov2012
  THEN  \ end of test to prevenmt override; 22dec2012
    64 act !  \ prevent rejection of selection; 20oct2011
  THEN  \ end of test for positive verblock; 20oct2011
  tqv @  0 psi{ @  svo3 !  \ test; 29sep2011
\ 128  tqv @  1 psi{ !  \ accentuate tqv-seq; 29sep2011
  tqv @ 0 > IF 128 tqv @ 1 psi{ ! THEN  \ test; 24jan2012
  act @ vphract !  \ for threshold comparisons; 21jun2011
  act @ verbval !
  0 psi !
  fyi @ 2 > IF
    CR ."  VerbPhrase: motjuste = " motjuste @ .
    ." going into SPEECH."
    CR ."  VerbPhrase: aud = " aud @ .
    ." going into SPEECH."
  THEN
  motjuste @ 0 = IF
    nphrnum @ 1 = IF  \ 21jun2011
      mfnflag @ 0 > IF  \ if masc. or fem.; 30jul2011
        fyi @ 2 = IF ."   VPhr calls WhoBe" THEN \ 4jul2012
        WhoBe  \ ask WHO not WHAT; 30jul2011
        0 mfnflag !  \ reset after use; 30jul2011
        EXIT  \ abandon rest of VerbPhrase
      THEN  \ end of test for positive mfnflag; 30jul2011
      fyi @ 2 = IF ."   VPhr calls WhatBe" THEN \ 6jul2012
      WhatBe  \ for a what-is question; test; 21jun2011
      EXIT  \ abandon rest of VerbPhrase;  2jul2011
    THEN  \ 21jun2011
    nphrnum @ 2 = IF  \  2jul2011
      fyi @ 2 = IF ."   VPhr calls WhatAuxSDo" THEN \ 6jul2012
      WhatAuxSDo  \ what do Subjects do? 2jul2011
      1 yncon !  \ after input ask yes-or-no question
      EXIT  \ abandon rest of VerbPhrase;  2jul2011
    THEN  \ end of test for plural noun; 2jul2011
  THEN
  motjuste @ 0 > IF
    vphract @ 20 < IF  \ a test ICW WhoBe; 21jun2011
      nphrnum @ 1 = IF  \ 21jun2011
        mfnflag @ 0 > IF  \ if masc. or fem.; 30jul2011
          fyi @ 2 = IF ."   VerbPhr calls WhoBe" THEN \ 4jul2012
          WhoBe  \ ask WHO not WHAT; 30jul2011
          0 mfnflag !  \ reset after use; 30jul2011
          EXIT  \ abandon rest of VerbPhrase
        THEN  \ end of test for positive mfnflag; 30jul2011
        fyi @ 2 = IF ."   VerbPhr calls WhatBe" THEN \ 6jul2012
        WhatBe  \ for a what-is question; test; 21jun2011
        EXIT  \ abandon rest of VerbPhrase; 30jul2011
      THEN  \ 21jun2011
      nphrnum @ 2 = IF  \  2jul2011
        fyi @ 2 = IF ."   VPhr calls WASD" THEN \ 6jul2012
        WhatAuxSDo  \ what do Subjects do? 2jul2011
        1 yncon !  \ after input ask yes-or-no question
        EXIT  \ abandon rest of VerbPhrase;  2jul2011
      ELSE  \ if "nphrnum" neither 1 nor 2; 15aug2011
        EXIT  \ to avoid a spurious thought; 15aug2011
      THEN  \ end of test for plural noun; 2jul2011
    THEN   \ End of test of vphract; 21jun2011
    psi3 @ 250 =  negjux @ 250 = OR IF  \ 10nov2012
     motjuste @ 800 = NOT IF  \ 10nov2012
      AuxVerb   \ to say "DO" or "DOES" 25jun2011
      midway @  t @  DO   \ Search En(glish) array; 25jun2011
      \ I       0 en{ @  12 = IF  \ Look for "NOT"; 25jun2011
        I       0 en{ @ 250 = IF  \ Look for "NOT"; 29dec2012
          I     8 en{ @  aud ! \ Auditory start-tag 10nov2012
          LEAVE   \ One instance of NOT suffices; 25jun2011
        THEN   \ End of lexical test for 250=NOT; 19dec2012
      -1 +LOOP  \ End of loop searching for 250=NOT; 29dec2012
      SpeechAct  \ Say the word "NOT"; 25jun2011
      0 psi3 !  \ reset for safety; 27jul2011
     THEN  \ end of test to not say do w. be-verbs; 28jul2011
    THEN  \ end of test for psi3 jux negation; 25jun2011
    motjuste @ 800 =  NOT IF  \ if not a be-verb; 10nov2012
      nphrnum @ 1 = IF  \ 14aug2011
        prsn @ 3 = IF  \ Only for third person;  8may2011
          83 flex1 !  \ for flex1,2,3 (-S; -ING); 11sep2011
          1 vpos !  \ 14aug2011
        THEN \ End of test for 3rd person (sing) 8may2011
      THEN  \ end of test fof singular; 14aug2011
    THEN  \ end of test for not a be-verb; 14aug2011
    motjuste @  hipsi !
    motjuste @ 830 = IF  \ irregular 830=DO; 10nov2012
      subjnum @ 1 =  prsn @ 3 = AND IF  \ 5oct2011
        midway @  t @  DO  \ search backwards; 5oct2011
          I       0 en{ @ 830 = IF  \ 830=DO; 10nov2012
            I     2 en{ @ 1 = IF  \ singular? 10nov2012
              I   4 en{ @ 3 = IF  \ 3rd pers? 10nov2012
                I     8 en{ @  vphraud !  \ 10nov2012
                LEAVE  \ one engram is enough; 5oct2011
              THEN  \ end of test for third person 10nov2012
            THEN  \ end of test for singular; 10nov2012
          THEN  \ end of test for 830=DO; 10nov2012
        -1 +LOOP  \ end of search of En(glish) lexicon
      THEN  \  end of test for 3rd person singular; 5oct2011
    THEN  \ end of special handling of 59=DO; 5oct2011
    \ The following code for the irregular English verb
    \ "to have" serves as example code for the many German
    \ irregular verbs that a polyglot AI must deal with.
    motjuste @ 810 = IF  \ irregular 810=HAVE; 10nov2012
      subjnum @ 1 =  prsn @ 3 = AND IF  \ 13aug2011
        midway @  t @  DO  \ search backwards; 13aug2011
          I       0 en{ @ 810 = IF  \ 810=HAVE 10nov2012
            I     2 en{ @ 1 = IF  \ singular? 10nov2012
              I   4 en{ @ 3 = IF  \ 3rd pers? 10nov2012
                I     8 en{ @  vphraud !  \ 10nov2012
                LEAVE  \ one engram is enough; 13aug2011
              THEN  \ end of test for 3rd person; 10nov2012
            THEN  \ end of test for singular; 10nov2012
          THEN  \ end of test for HAS-engram; 13aug2011
        -1 +LOOP  \ end of search of En(glish) lexicon
      THEN  \  end of test for 3rd person singular; 13aug2011
    THEN  \ end of special handling of 70=HAVE; 13aug2011
    motjuste @ 800 = IF  \ present-tense be-verb? 10nov2012
      1 predflag !  \ for sake of NounPhrase; 26aug2011
      subjnum @ 1 = IF  \ singular subject number; 16aug2011
        prsn @ 1 = IF   \ first person; 16aug2011
          midway @  t @  DO  \ search En-lexicon; 16aug2011
            I       0 en{ @  57 = IF  \ 57=AM; 16aug2011
              I     8 en{ @  vphraud !  \ engram; 10nov2012
              LEAVE  \ one engram is enough; 16aug2011
            THEN  \ end of test for 57=AM; 16aug2011
          -1 +LOOP  \ end of loop; 16aug2011
        THEN  \ end of test for first person; 16aug2011
        prsn @ 2 = IF   \ singular or plural; 16aug2011
          midway @  t @  DO  \ search En-lexicon; 16aug2011
            I       0 en{ @  67 = IF  \ 67=ARE; 16aug2011
              I     8 en{ @  vphraud !  \ engram; 10nov2012
              LEAVE  \ one engram is enough; 16aug2011
            THEN  \ end of test for 67=ARE; 16aug2011
          -1 +LOOP  \ end of loop; 16aug2011
        THEN  \ end of test for second person; 16aug2011
        prsn @ 3 = IF  \ third person; 16aug2011
          midway @  t @  DO  \ search En-lexicon; 16aug2011
            I       0 en{ @  66 = IF  \ 66=IS; 16aug2011
              I     8 en{ @  vphraud !  \ engram; 10nov2012
              LEAVE  \ one engram is enough; 16aug2011
            THEN  \ end of test for 66=IS; 16aug2011
          -1 +LOOP  \ end of loop; 16aug2011
        THEN  \ end of test for third person; 16aug2011
      THEN  \ end of test for singular; 16aug2011
      subjnum @ 2 = IF  \ if plural subject; 16aug2011
        midway @  t @  DO  \ search En-lexicon; 16aug2011
          I       0 en{ @  67 = IF  \ 67=ARE; 16aug2011
            I     8 en{ @  vphraud !  \ engram; 10nov2012
            LEAVE  \ one engram is enough; 16aug2011
          THEN  \ end of test for 67=ARE; 16aug2011
        -1 +LOOP  \ end of loop; 16aug2011
      THEN  \ end of test for plural number; 16aug2011
    THEN  \ end of two-step be-verb substitution; 16aug2011
    motjuste @ 800 = IF  \  800=BE; 10nov2012
      subjpsi @ 701 = IF  \ 701=I; 10nov2012
        midway @  t @  DO  \ search En(glish) array; 21aug2011
          I       0 en{ @ 800 = IF  \ 800=BE; 10nov2012
           800 motjuste !  ( Set verbform to "BE" 10nov2012 )
           800 urpsi !  ( parameter for PsiDamp 10nov2012 )
            I     2 en{ @ 1 = IF  \ singular? 10nov2012
              I   4 en{ @ 1 = IF  \ 1st pers? 10nov2012
                I     8 en{ @  vphraud ! \ SpeechAct 10nov2012
                LEAVE  \ recent "AM" is enough 12aug2011
              THEN  \ end of test for first person; 10nov2012
            THEN  \ end of test for singular; 10nov2012
          THEN  \ end of two-step test to say "AM"; 12aug2011
        -1 +LOOP  \ end of backwards loop; 12aug2011
      THEN  \ end of test for "50=I" subject-psi; 12aug2011
      subjpsi @ 707 = IF  ( 707=YOU; 10nov2012 )
        midway @  t @  DO               \ 8aug2011
          I    0 en{ @ 800 = IF    \ 800=BE 10nov2012
            I  2 en{ @ 1 = IF    \ singular? 10nov2012
             I 4 en{ @ 2 = IF    \ 2nd pers? 10nov2012
                I  8 en{ @  vphraud !  \ 10nov2012
                LEAVE                     \ 8aug2011
             THEN  \ end of test for 2nd person; 10nov2012
            THEN  \ end of test for singular; 10nov2012
          THEN   \ end of test for 800=BE: 10nov2012
        -1 +LOOP                      \ 8aug2011
      THEN  \ 8aug2011
    THEN  \  end of test for 58=BE; 13aug2011
    motjuste @ 800 = IF  \ 800=BE; 10nov2012
      subjpsi @ 701 = IF  \ 701=I; 10nov2012
        midway @  t @  DO  \ search En(glish) array; 11aug2011
          I       0 en{ @ 800 = IF  \ 800=BE; 10nov2012
           800 motjuste !  ( Set verbform to "BE" 10nov2012 )
            I     2 en{ @ 1 = IF  \ singular? 10nov2012
              I   4 en{ @ 1 = IF  \ 1st pers? 10nov2012
                I     8 en{ @  vphraud ! \ SpeechAct 10nov2012
                LEAVE  \ finding recent "AM" is enough 11aug2011
              THEN  \ end of test for first person; 10nov2012
            THEN  \ end of test for singular; 10nov2012
          THEN  \ end of test for be-verb; 10nov2012
        -1 +LOOP  \ end of backwards loop; 11aug2011
      THEN  \ end of test for "50=I" subject-psi; 11aug2011
    THEN  \ end of test for be-verb 67=ARE; 11aug2011
    motjuste @ 58 = IF  \ shift from BE; 27aug2010
      num @ 1 = IF  \ singular; 27aug2010
        prsn @ 1 = IF  \ if first person; 29aug2010
          midway @  t @  DO  \ search backwards in time
            I       0 en{ @  57 = IF \ recent 57=AM; 12sep2010
              I     8 en{ @  aud !  \ get recall-vector
              LEAVE  \ after finding recent "AM"; 29aug2010
            THEN     \ end of test for 67=AM; 29aug2010
          -1 +LOOP \ end of retrieval loop for "AM"; 29aug2010
          0 prsn !  \ reset after use; 29aug2010
        THEN  \ end of test for 1st person sing; 29aug2010
        prsn @ 3 = IF  \ if third person; 12sep2010
          midway @  t @  DO  \ search backwards in time
            I       0 en{ @  66 = IF \ most recent instance
              66 motjuste ! ( 66=IS; 27aug2010 )
              I     8 en{ @  aud !  \ get recall-vector
              LEAVE  \ after finding recent "IS"; 28aug2010
            THEN     \ end of test for 66=IS; 27aug2010
          -1 +LOOP \ end of retrieval loop for "IS"; 27aug2010
        THEN  \ end of test for 3rd person sing; 12sep2010
      THEN  \ end of test for singular; 27aug2010
      ( following code covers undeclared plurals; 27aug2010 )
      num @ 1 = NOT IF  \ other than singular; 27aug2010
        midway @  t @  DO  \ search backwards in time
          I       0 en{ @  67 = IF  \ most recent instance
            67 motjuste ! ( 67=ARE; 27aug2010 )
            I     8 en{ @  aud !  \ get recall-vector
            LEAVE  \ after finding recent "ARE"; 27aug2010
          THEN     \ end of test for 67=ARE; 27aug2010
        -1 +LOOP \ end of retrieval loop for "ARE"; 27aug2010
      THEN  \ end of test for not singular; 27aug2010
    THEN  \ end of test for 58=BE; 27aug2010
    0 subjectflag !  \ for SpreadAct slosh-over; 18oct2010
    motjuste @ vacpsi !  \ prepare to deglobalize; 27sep2010
    motjuste @ verbpsi !  \ for WhatAuxSVerb; 13jun2011
    VerbAct
    0 vacpsi !  \ reset for safety; 27sep2010
    nphrnum @ 2 = NOT IF  \ if not plural; test; 30aug2010
      1 nphrnum !  \ default to singular; test; 30aug2010
    THEN  \ end of test for plural nphrnum; 30aug2010
    motjuste @ 800 = NOT IF  \ 10nov2012
      prsn @ 3 = IF  \ 3rd person? 29aug2010
        nphrnum @ 1 = IF  \ test; 30aug2010
      \ 83 flex1 !  \ xfer "S" to SpeechAct; 11sep2011
      \ 83 flex1 !  \ VerbGen should be used instead 29dec2012
        THEN  \ end of test for singular nphrnum; 30aug2010
      THEN  \ end of test for 3rd person; 29aug2010
    THEN  \ end of test for not a be-verb; 29jul2012
    vphraud @ aud !  \ transfer just before call; 25jun2011
    SpeechAct  ( main call from VerbPhrase to SpeechAct )
      VerbClear  \ deactivate before inhibiting; 17aug2011
      -32 t @ 1 -  1 psi{ ! \ inhibit new verb-node; 3sep2011
      -32 t @      1 psi{ ! \ inhibit new verb-node; 3sep2011
      0 flex1 !  \ reset for safety; 11sep2011
      0 vphraud !  \ reset for safety; 25jun2011
      0 vpos !
    motjuste @ 800 = IF  \ 10nov2012
      negjux @ 250 = IF  \ 250=NOT; 10nov2012
        midway @  t @  DO   \ Search En(glish) array; 27jul2011
          I       0 en{ @  250 = IF  \ Look for "NOT  10nov2012
            I     8 en{ @  aud ! \ Auditory start-tag 10nov2012
            LEAVE   \ One instance of NOT suffices; 27jul2011
          THEN   \ End of lexical test for 12=NOT; 27jul2011
        -1 +LOOP  \ End of loop searching for 250=NOT 10nov2012
      \ 7 EMIT  \ audible report of saying NOT; test; 28aug2011
        SpeechAct  \ Say the word "NOT"; 27jul2011
        0 aftjux !  \ reset for safety; 27jul2011
        0 negjux !  \ reset for safety;  9oct2011
        0 prejux !  \ reset for safety; 27jul2011
        0 jux !     \ reset for safety; 27jul2011
        0 psi3 !    \ reset for safety; 27jul2011
      THEN \ end of test for negated be-verb; 27jul2011
    THEN  \ end of test for be-verb; 27jul2011
  THEN  \ end of test for positive motjuste; 29aug2010
  10 act !
  motjuste @  urpsi !
  62 caller !
  PsiDamp  \ Necessary for chain of thought; 24oct2010
  0 caller !
  EnDamp
  \ Following lines inhibit old KB verb-node; 13jun2011
  -32 tselv @ 1 psi{ ! \ Shallow inhibition; 3sep2011
  0 tselv ! \ Reset tselv after use; 13jun2011
  32 EMIT
  1 dirobj !
  subjpsi @ 701 = IF  \ only for subject 701=I; 10nov2012
    motjuste @ 820 = IF  \ only for verb 820=SEE; 10nov2012
      svo3 @ 0 = IF  \ if SEE has no direct object; 22sep2011
        VisRecog  \ a challenge for robot AI coders 22sep2011
        SpeechAct  \ say default from VisRecog; 22sep2011
        EXIT  \ abandon rest of VerbPhrase; 22sep2011
      THEN  \ end of test for direct object; 22sep2011
    THEN  \ end of test for "820=SEE"; 10nov2012
  THEN  ( http://code.google.com/p/robotbridgeware )
  motjuste @ 800 = IF 1 predflag ! THEN \ 800=BE; 10nov2012
  ( EnAdjective -- a possibility here; 24aug2011 )
  NounPhrase
  0 predflag !  \ reset for safety; 12sep2010
  motjuste @ 0 > IF motjuste @ dopsi ! THEN
  0 dirobj !
  0 negjux !  \ reset for safety; 9oct2011
  0 numflag !  \  3dec2009 Whether used here or in BeVerb.
  0 predflag !  \ Reset for safety; 26aug2011
  0 psi3 !  \ reset for safety; 27jul2011
  0 svo3 !  \ use once per thought; 9sep2011
  0 tqv !  \ reset for safety; 29sep2011
  0 verblock ! \ after causing selection of NPhr seq-verb; 8oct2011
; ( http://code.google.com/p/mindforth/wiki/VerbPhrase )


:  InFerence ( create silent triples for machine reasoning )
  1 moot !  \ prevent interference; test; 20dec2012
\ CR ." InFer: subjnom prednom = "  \ test;  1jan2012
\ subjnom @ .  prednom @ .  CR    \ test;  1jan2013
  midway @  t @  DO  \ search IdeaPlex to infer facts; 18dec2012
   prednom @  0 >  IF  \ positive predicate nominative? 1jan2012
    I 0 psi{ @  prednom @ = IF  \ KB data? 18dec2012
      I 4 en{ @ 1 = IF  \ nominative? 18dec2012
        seqverb @ 0 = IF  \ only once; 18dec2012
          I 6 psi{ @  seqtqv !   \ transfer; 18dec2012
          I 7 psi{ @  seqverb !  \ transfer; 18dec2012
          I 7 psi{ @  quverb !  \ for AskUser; 27dec2012
          0 ynverb !  \ for one AskUser question; 27dec2012
        \ 2 nphrnum !  \ test; remove; 27dec2012
        \ 2 nphrnum !  \ Commenting out as obsolete;  1jan2013
          seqverb @ seq !  \ test; 18dec2012
        THEN  \ end of test for not-yet-declared; 18dec2012
      \ CR ." InFer: t psi seqverb = "  \ test; 27dec2012
      \ I . prednom @ . seqverb @ .  \ 18dec2012; 27dec2012
      \ LEAVE  \ at first make only one inference; 18dec2012
      ELSE  \ no nominative prednom?  1jan2012
        CR ." No inference can be made."  \ test; 1jan2013
      THEN  \ end of test for nominative; 18dec2012
    THEN  \ end of test for finding prednom facts; 18dec2012
   THEN  \ end of test for positive predicate nominative 1jan2012
  -1 +LOOP   \ end of backwards loop; 18dec2012
\ CR ." InFer: subjnom prednom seqverb = "  \ test; 2jan2012
\ subjnom @ . prednom @ . seqverb @ .  \ test; 2jan2013
  seqverb @  0 > IF  \ verb available for inference?  2jan2013
    t @ inft ! \ for AskUser to find auditory engrams 25dec2012
    1 t +!  \ increment time "t" by one for a gap; 18dec2012
    1 t +!  \ increment time to create an inference; 18dec2012
    subjnom @  t @  0 psi{ !  \ subj of inference; 18dec2012
         48  t @  1 psi{ !  \ activation of inf. 20dec2012
          2  t @  2 psi{ !  \ num(ber) test; replace; 20dec2012
          5  t @  5 psi{ !  \ pos=5 noun; 18dec2012
     t @ 1 +   t @  6 psi{ !  \ psi6=tqv; 18dec2012
    seqverb @      seq !   \ prevent override? test 20dec2012
    seqverb @  t @  7 psi{ !  \ seq is the verb; 18dec2012
    subjnom @  t @  8 psi{ !  \ enx; 18dec2012
    subjnom @  t @  0 en{ !   \ for .en report; 21dec2012
          2  t @  2 en{ !   \ default num(ber) 21dec2012
          1  t @  4 en{ !   \ default nominative; 20dec2012
        \ 5  t @  6 en{ !   \ default 5=pos noun; 20dec2012
          0  t @  8 en{ !   \ pseudo-recall-tag; 21dec2012
    1 t +!  \ increment t for storage of verb; 18dec2012
    seqverb @  t @  0 psi{ !  \ verb of inference; 18dec2012
    seqverb @  t @ 1 -  7 psi{ !  \ retroactive seq? 20dec2012
    subjnom @  t @  4 psi{ !  \ pre of verb; 18dec2012
            8  t @  5 psi{ !  \ pos=8 verb; 18dec2012
     t @ 1 +   t @  6 psi{ !  \ psi6=tqv; 20dec2012
          seqtqv @  7 psi{ @  t @  7 psi{ !  \ seq 18dec2012
          seqtqv @  7 psi{ @  dobseq !  \ test; 22dec2012
    seqverb @  t @  8 psi{ !  \ enx; 18dec2012
    seqverb @  t @  0 en{ !   \ so verb can be found; 22dec2012
    1 t +!  \ increment t to store direct object; 18dec2012
    seqtqv @  7 psi{ @  t @  0 psi{ !  \ dir. obj 18dec2012
     40  t @  1 psi{ !  \ activation of direct object 22dec2012
    seqtqv @  7 psi{ @  t @  8 psi{ !  \ enx 18dec2012
    dobseq @   t @  0 en{ !   \ so noun can be found; 22dec2012
    dobseq @  quobj !  \ for AskUser; 27dec2012
    1 t +!  \ increment time "t" for an ending gap; 18dec2012
    1 yncon ! \ for AskUser to ask yes-or-no question 26dec2012
    subjnom @ qusub !  \ transfer to AskUser; 26dec2012
  THEN  \ end of test for a verb to be part of inference 2jan2013
  0 becon !  \ reset after use; 18dec2012
  0 dobseq !   \ reset after use; 22dec2012
  0 moot !     \ reset after use; 20dec2012
  0 prednom !  \ reset after use; 18dec2012
  0 seqtqv !   \ reset after use; 18dec2012
  0 seqverb !  \ reset after use; 18dec2012
  0 subjnom !  \ reset after use; 18dec2012
\ QUIT  \ test; remove; 18dec2012
\ Task: Make InFerence work also with pronouns and antecedents;
\ Task: Make InFerence work with ideas negated by "NOT".
;  ( http://code.google.com/p/mindforth/wiki/InFerence )


:  DeCog ( Deutsch Cognition -- thinking in DeKi German AI )
  CR ." Achtung! German input flips thinking into German."
( HauptWort  \ Call a German NounPhrase module; 20jul2011 )
( ZeitWort   \ Call a German VerbPhrase module; 20jul2011 )
; ( http://code.google.com/p/mindforth )


:  EnCog ( English Cognition -- thinking in English )
  0 moot !  \ may have been set in previous thought; 24oct2011
  0 morphpsi !
  0 psi !
  0 sublen !
  t @ tov !
  becon @ 1 = IF  \ if flag set in OldCOncept; 18dec2012
    InFerence  \ call the passively reflective module; 18dec2012
  THEN  \ end of test for input of a be-verb statement; 18dec2012
  yncon @ 1 = IF  \ if flag set in VerbPhrase; 2jul2011
    AskUser  \ for a yes-or-no question; 2jul2011
    EXIT  \ abandon rest of EnCog;  2jul2011
  THEN  ( http://www.mpeforth.com )
  yesorno @ 0 > IF
    SayYes
    CR
    EXIT
  THEN 
  400 rsvp !   \ Give user time to respond. 23aug2010
  inert @ 10 > IF  \ if no input start thinking; 17oct2011
    cogpsi @ 0 > IF  \  17oct2011
      cogpsi @ topic !  \ for query-subject; 17oct2011
      cognum @ topicnum !  \ to select "IS" or "ARE"; 22oct2011
      fyi @ 2 = IF ."   EnCog calls WhatBe" THEN \ 6jul2012            
      CR WhatBe  \ Ascribe output only to robot; 26jul2012
      0 cognum !  \ reset for safety; 22oct2011
      0 cogpsi !  \ reset for safety; 17oct2011
      EXIT  \ abandon the rest of EnCog; 17oct2011
    THEN  \ 17oct2011
    kbtv @ 1 = IF  \ in cycle of KbTraversal; 17oct2011
    707 topic !   \ 707=YOU as topic of question; 10nov2012
      7 nphrpos !  \ pronoun "YOU" part-of-speech; 21oct2011
      2 prsn !     \ parameter second-person YOU; 17oct2011
      1 subjnum !  \ singular YOU as a parameter; 17oct2011
      IQ @ 1 = IF  \ borrowing IQ as a control; 17oct2011
        fyi @ 2 = IF ."   EnCog calls WhoBe" THEN \ 4jul2012
        CR WhoBe  \ Ascribe output only to robot; 26jul2012
        0 inert !  \ reset to resume counting; 17oct2011
        2 IQ !  \ to ask a different question; 17oct2011
        1000 rsvp !  \ AI waits for an answer; 19oct2011
        EXIT  \ only output one thought per cycle; 17oct2011
      THEN  \ end of re-purposed IQ-test; 17oct2011
      IQ @ 2 = IF  \ to ask a different question; 17oct2011
        fyi @ 2 = IF ."   EnC calls WhatBe" THEN \ 6jul2012
        CR WhatBe  \ Ascribe output only to robot; 26jul2012
        0 inert ! \ reset to resume counting; 17oct2011
        3 IQ !  \ to ask a different question; 17oct2011
        1000 rsvp !  \ AI waits for an answer; 19oct2011
        EXIT  \ only output one thought per cycle; 17oct2011
      THEN  \ end of IQ-test; 17oct2011
      IQ @ 3 = IF  \ to ask a different question; 17oct2011
        fyi @ 2 = IF ."   EnC-kbtv1 calls WASD" THEN \ 6jul2012
        CR WhatAuxSDo  \ Ascribe output only to robot; 26jul2012
        0 inert ! \ reset to resume counting; 17oct2011
        1 IQ !  \ to ask a different question; 17oct2011
        1000 rsvp !  \ AI waits for an answer; 19oct2011
        EXIT  \ only output one thought per cycle; 17oct2011
      THEN  \ end of IQ-test; 17oct2011
    THEN  \ end of #1 test of rotating "kbtv"; 17oct2011
    kbtv @ 2 = IF  \ in rotation of KbTraversal; 17oct2011
      571 topic !  \ let 571=ROBOT be subject; 10nov2012
      5 nphrpos !  \ noun part-of-speech; 17oct2011
      3 prsn !  \ parameter needed for AuxVerb; 17oct2011
      IQ @ 1 = IF  \ borrowing IQ as a control; 17oct2011
        1 indefmust !  \ for "A ROBOT"; 20oct2011
        1 subjnum !  \ for singular "ROBOT"; 17oct2011
        fyi @ 2 = IF ."   EnCog calls WhatBe" THEN \ 6jul2012
        CR WhatBe  \ Ascribe output only to robot; 26jul2012
        0 indefmust !  \ reset for safety; 20oct2011
        0 inert !  \ reset to resume counting; 17oct2011
        2 IQ !  \ to ask a different question; 17oct2011
        1000 rsvp !  \ AI waits for an answer; 19oct2011
        EXIT  \ only output one thought per cycle; 17oct2011
      THEN  \ end of re-purposed IQ-test; 17oct2011
      IQ @ 2 = IF  \ borrowing IQ as a control; 17oct2011
        1 subjnum !  \ for singular "ROBOT"; 17oct2011
        fyi @ 2 = IF ."   EnC-kbtv2 calls WASD" THEN \ 6jul2012
        CR WhatAuxSDo  \ Ascribe output only to robot; 26jul2012
        0 inert !  \ reset to resume counting; 17oct2011
        3 IQ !  \ to ask a different question; 17oct2011
        1000 rsvp !  \ AI waits for an answer; 19oct2011
        EXIT  \ only output one thought per cycle; 17oct2011
      THEN  \ end of re-purposed IQ-test; 17oct2011
      IQ @ 3 = IF  \ borrowing IQ as a control; 17oct2011
        2 subjnum !  \ for plural "ROBOTS"; 17oct2011
        fyi @ 2 = IF ."  EnCog-kbtv2 calls WASD" THEN \ 6jul2012
        CR WhatAuxSDo  \ Ascribe output only to robot; 26jul2012
        0 inert !  \ reset to resume counting; 17oct2011
        1 IQ !  \ to ask a different question; 17oct2011
        1000 rsvp !  \ AI waits for an answer; 19oct2011
        EXIT  \ only output one thought per cycle; 17oct2011
      THEN  \ end of re-purposed IQ-test; 17oct2011
    THEN  \ end of #2 test of rotating "kbtv"; 17oct2011
    kbtv @ 3 = IF  \ in rotation of KbTraversal; 17oct2011
     701 topic !  \ 701=I; 10nov2012
      7 nphrpos !  \ pronoun "I" part-of-speech; 21oct2011
      1 prsn !     \ parameter first-person I; 17oct2011
      1 subjnum !  \ singular I as a parameter; 17oct2011
      IQ @ 1 = IF  \ borrowing IQ as a control; 17oct2011
        fyi @ 2 = IF ."   EnCog calls WhoBe" THEN \ 4jul2012
        CR WhoBe  \ Ascribe output only to robot; 26jul2012
        0 inert !  \ reset to resume counting; 17oct2011
        2 IQ !  \ to ask a different question; 17oct2011
        1000 rsvp !  \ AI waits for an answer; 19oct2011
        EXIT  \ only output one thought per cycle; 17oct2011
      THEN  \ end of re-purposed IQ-test; 17oct2011
      IQ @ 2 = IF  \ to ask a different question; 17oct2011
        fyi @ 2 = IF ."  EnC-kbtv3 calls WhatBe" THEN \ 6jul2012
        CR WhatBe  \ Ascribe output only to robot; 26jul2012
        0 inert ! \ reset to resume counting; 17oct2011
        3 IQ !  \ to ask a different question; 17oct2011
        1000 rsvp !  \ AI waits for an answer; 19oct2011
        EXIT  \ only output one thought per cycle; 17oct2011
      THEN  \ end of IQ-test; 17oct2011
      IQ @ 3 = IF  \ to ask a different question; 17oct2011
        fyi @ 2 = IF ."  EnCog-kbtv3 calls WASD" THEN \ 6jul2012
        CR WhatAuxSDo  \ Ascribe output only to robot; 26jul2012
        0 inert ! \ reset to resume counting; 17oct2011
        1 IQ !  \ to ask a different question; 17oct2011
        1000 rsvp !  \ AI waits for an answer; 19oct2011
        EXIT  \ only output one thought per cycle; 17oct2011
      THEN  \ end of IQ-test; 17oct2011
    THEN  \ end of #3 test of rotating "kbtv"; 17oct2011
    kbtv @ 4 = IF  \ in rotation of KbTraversal; 17oct2011
      533 topic !  \ 533=GOD for AI theology discussion; 10nov2012
      3 prsn !     \ parameter third-person GOD; 17oct2011
      1 subjnum !  \ singular GOD as a parameter; 17oct2011
      IQ @ 1 = IF  \ borrowing IQ as a control; 17oct2011
        fyi @ 2 = IF ."   EnCog calls WhoBe" THEN \ 4jul2012      
        CR WhoBe  \ Ascribe output only to robot; 26jul2012
        0 inert !  \ reset to resume counting; 17oct2011
        2 IQ !  \ to ask a different question; 17oct2011
        1000 rsvp !  \ AI waits for an answer; 19oct2011
        EXIT  \ only output one thought per cycle; 17oct2011
      THEN  \ end of re-purposed IQ-test; 17oct2011
      IQ @ 2 = IF  \ to ask a different question; 17oct2011
        fyi @ 2 = IF ."   EnC-kbtv4 calls WhatBe" THEN \ 6jul2012
        CR WhatBe  \ Ascribe output only to robot; 26jul2012
        0 inert ! \ reset to resume counting; 17oct2011
        3 IQ !  \ to ask a different question; 17oct2011
        1000 rsvp !  \ AI waits for an answer; 19oct2011
        EXIT  \ only output one thought per cycle; 17oct2011
      THEN  \ end of IQ-test; 17oct2011
      IQ @ 3 = IF  \ to ask a different question; 17oct2011
        fyi @ 2 = IF ."   EnC-kbtv4 calls WASD" THEN \ 6jul2012         
        CR WhatAuxSDo  \ Ascribe output only to robot; 26jul2012
        0 inert ! \ reset to resume counting; 17oct2011
        1 IQ !  \ to ask a different question; 17oct2011
        1000 rsvp !  \ AI waits for an answer; 19oct2011
        EXIT  \ only output one thought per cycle; 17oct2011
      THEN  \ end of IQ-test; 17oct2011
    THEN  \ end of #4 test of rotating "kbtv"; 17oct2011
  THEN  \ end of arbitrary delay before initiating thought
  ( exceptional think was above; normal thinking below here )
  CR ." Robot: "
  123  t @  2 aud{ !
  t @ tov !  \ 12jan2010 "{" marks start of thought.
  NounPhrase  \ First of two Chomskyan bifurcations.
  VerbPhrase  \ Second of two Chomskyan bifurcations.
  0 nphrnum ! \ Reset intersyntactic variable; 11oct2011
  0 pcn !  \ Reset for safety; 17jul2012
  0 prednom !  \ reset for InFerence; 27dec2012
  0 prox2 !  \ Reset after use; 7sep2011
  0 prox3 !  \ Reset after use; 7sep2011
  0 proxcon !  \ Reset after use; 7sep2011
  0 putnum !  \ reset for safety;  4nov2011
  0 quo !          \ 5jan2010 Reset after use.
  0 subjnom !  \ reset for InFerence; 27dec2012
  5 bias !
  0 qup !   \ 10jan2010 Must be at zero to be used again.
  PsiDecay  \ Reduce activation after each thought; 4aug2011
; ( http://code.google.com/p/mindforth/wiki/EnCog )


:  ThInk ( calls EnCog to think in English; 20sep2010 )
  0 ordo !
  35 pov !  \ internal ASCII 35=# point-of-view; 16oct2011
  glot @ 1 = IF  \ flag for polyglot AI; 20jul2011
    EnCog  ( think in English; 20jul2011 )
  THEN  ( http://www.aicore.co.uk )
  glot @ 2 = IF  \ upon input of multiple German words;
    DeCog  ( think in Deutsch -- German;  20jul2011 )
  THEN  \ end of test for language-choice in polyglot AI
  fyi @ 1 = IF CR THEN
  0 ordo !
  rjc @ 1 < IF  \ if AI on but not yet ReJuvenated; 19sep2010
    lurk @ greet @ > IF  \ if limit exceeded; 19sep2010
      100 rsvp !  \ slow down the display; 19sep2010
      -1 lurk ! \ reset for safety; 19sep2010
      kbtv @ 4 > IF  1 kbtv !  THEN  \ test; 19sep2010
      1 kbtv +!  \ cycle through values; 19sep2010
      KbTraversal  \ if no input, begin thinking; 19sep2010
    THEN  ( http://www.forth.com )
  THEN  \ end of test of ReJuvenation-count (rjc); 19sep2010
; ( http://code.google.com/p/mindforth/wiki/ThInk )


:  MotorOutput ( stub for autonomous control of robots )
   7 EMIT
 ( MOVE_FORWARD   )
 ( MOVE_BACKWARDS )
 ( STOP_MOTION    )
 ( TURN_LEFT      )
 ( TURN_RIGHT     )
; ( http://code.google.com/p/mindforth/wiki/MotorOutput )


:  TuringTest ( Human-Computer Interaction )
  fyi @ 0 = IF CLS CR CR CR CR CR CR CR
    t @ 476 < IF CR  \ "vault" after SEE and NOTHING; 22sep2011
      ." There is no warranty for MindForth AI for robots."
    ELSE CR
    THEN
  THEN
  fyi @ 1 = NOT IF CR THEN
  ."  "
  fyi @ 1 = NOT IF CR THEN
  fyi @ 0 = IF
    CR
    ." Artificial intelligence alive and thinking since "
    bday @ .
    bmonth @  1 = IF ." January "   THEN
    bmonth @  2 = IF ." February "  THEN
    bmonth @  3 = IF ." March "     THEN
    bmonth @  4 = IF ." April "     THEN
    bmonth @  5 = IF ." May "       THEN
    bmonth @  6 = IF ." June "      THEN
    bmonth @  7 = IF ." July "      THEN
    bmonth @  8 = IF ." August "    THEN
    bmonth @  9 = IF ." September " THEN
    bmonth @ 10 = IF ." October "   THEN
    bmonth @ 11 = IF ." November "  THEN
    bmonth @ 12 = IF ." December "  THEN
    byear @ . 8 EMIT 46 EMIT CR
  THEN
  fyi @ 1 = NOT IF
    ." Time = " t @ . 8 EMIT 46 EMIT
    ." KB-Traversal ID = " kbtv @ .
    8 EMIT 46 EMIT
    ."  IQ = " IQ @ . 8 EMIT 46 EMIT
    ."  Cyc = " rjc @ . ." delay = " rsvp @ . 8 EMIT 46 EMIT
    CR ." ENTER a positive or negative Subj-Verb-Obj "
    ." unpunctuated sentence."
    CR
  THEN
  fyi @ 0 = IF CR
   ." Display-mode is normal. Press Tab for other modes; "
   ." ESC to exit."
    CR
  THEN
  fyi @ 3 = IF CR
    ." Diagnostic messages - ignore during input "
    ." before pressing ENTER."
  THEN
  42 pov !
; ( http://code.google.com/p/mindforth/wiki/TuringTest )


:  SeCurity ( new wiki-page name for SECURITY module )
  fyi @ 2 = IF CR
  ."   SeCurity calls HCI TuringTest module."
  THEN
  TuringTest
  t @ cns @ 64 - > IF
    fyi @ 2 = IF CR
    ."   SeCurity module calls ReJuvenate."
    THEN
    ReJuvenate
  THEN
  t @  cns @ > IF \ Use midway only for larger Minds 13aug2012
    t @ cns @ - midway !  ( for limit on searches; 13aug2012 )
    ELSE  \ If the CNS memory has a small capacity 13aug2012
    1 midway ! \ Avoid any "array boundary problem"; 13aug2012
  THEN \ Future code may let an AI itself set midway 13aug2012
  0 quiet !
; ( http://code.google.com/p/mindforth/wiki/SeCurity )


:  MainLoop  ( changed from ALIFE for wiki doc page )
  TIME&DATE byear ! bmonth ! bday ! bhour ! bminute ! bsec !
  TabulaRasa
  EnBoot
  BEGIN
    SeCurity
    fyi @ 2 = IF CR
    ." MainLoop calls the SensoryInput module." CR
    THEN
    SensoryInput
  ( EmotiOn )
    fyi @ 2 = IF CR CR   \ create gap; 6jul2012
    ." MainLoop calls the ThInk mind-module." CR
    THEN
    ThInk
  ( FreeWill )
  ( MotorOutput )
  AGAIN
; ( http://code.google.com/p/mindforth/wiki/MainLoop )


:  ALIFE  ( Call MainLoop if not called by user. )
  MainLoop
;