My favorites | Sign in
Project Logo
                
Search
for
Updated May 18, 2009 by mentifex
Labels: Featured
ForthMindTextFile  
AI Mind code for loading into W32FOR42_671 release of Win32Forth

Latest mindforth release as a loadable text file

Drag-and-drop code into editor; save C:\Win32For\Mind.F (not as Mind.F.txt).

( 17may09B.F [mf090517.html] -- modification of 10may09A.F Mind.Forth )
( This file may be named "Mind.f" or any "filename.f" you choose. )
( Rename any occurrence of Mind.f.txt as simply Mind.f for Win32Forth. )
( http://www.winzip.com/aboutzip.htm tells about WinZip to auto-install )
( http://prdownloads.sourceforge.net/win32forth/W32FOR42_671.zip?download )
( This file is to be run with Win32Forth by issuing three commands: )
( win32for.exe [ENTER] )
( fload Mind.f [ENTER] )
( MainLoop [ENTER]. )
( To halt the artificial mind, press the ESCAPE key at any time. )
DECIMAL  ( use decimal numbers )
variable act 0 act ! ( InStantiate; Old- & NewConcept; EnReify; etc. )
variable actbase ( 5dec2007 For recognition discrimination in audRecog )
variable adverbact 0 adverbact ! ( 29aug2008 Test for adverb-insertion )
variable aud  ( enVocab; AudInput; SpeechAct: auditory recall-tag )
variable audjuste ( 25aug2008 For nounPhrase motjuste aud to SpeechAct )
variable audme  ( 27sep2008 tag to find "ME" in auditory memory )
variable audpsi  ( 6may2009 de-globalizing the "psi" variable )
variable audrec  ( 6may2009 replacing "psi" in AudRecog )
variable audstop  ( A flag to stop SpeechAct after one word )
variable back ( to replace "bulge" for "pre" items in SpreadAct )
variable bday ( MainLoop of alife; TuringTest HCI -- day of birth )
variable beflag 0 beflag ! ( 23apr2009 for InStantiate )
variable beg  1 beg !  ( AudInput; AudMem: word beginning flag )
variable bhour ( MainLoop of alife; TuringTest HCI -- hour of birth )
variable bias 5 bias ! ( Parser; newConcept: an expected POS )
variable bminute ( MainLoop; TuringTest HCI -- minute of birth )
variable bmonth ( MainLoop; TuringTest HCI -- month of birth )
variable bsecond ( MainLoop; TuringTest HCI -- second of birth )
variable byear ( MainLoop; TuringTest HCI -- year of birth )
variable caller  ( 13jan2008 Debug-identifier of calling module )
variable cns  1024 cns !  ( "central nervous system" array size )
variable coda  128 coda !  ( span of memory to recycle in Rejuvenate )
variable cogpsi  ( 9may2009 cognition psi source-node in SpreadAct )
variable conj  ( from 16aug2002 oldConcept; Conjoin: conjunction )
variable ctu ( continuation-flag for "Aud" array phonemes )
variable decpsi1 ( decremend concept 1 to accelerate de-activation )
variable decpsi2 ( decremend concept 2 for avoiding excess repetition )
variable decpsi3 ( decremend concept 3 to keep track of most recent psi )
variable detour  ( 17dec2007 Abort-flag in case of insufficient knowledge )
variable dirobj  ( flag to indicate seeking of a direct object )
variable dopsi   ( 22jan2008 direct-object-psi for calculating "thotnum" )
variable edge  0 edge !  ( Rejuvenate: edge-of-thought flag )
variable EEG 1 EEG ! ( for EGO safety measure if users neglect the AI )
variable en6 ( 27aug2008 enVocab flag recall-vector "aud" in Rejuvenate )
variable enx ( new-, oldConcept; Instantiate; EnReify: x-fer Psi-En )
variable eot ( end-of-text for use in AudInput )
variable fex ( new-, oldConcept; enVocab: Psi-to-English fiber-out )
variable fin ( new-, oldConcept; enVocab: English-to-Psi fiber-in )
variable firstword ( 13sep2008 So "DO" query triggers kbSearch )
variable fyi 0 fyi ! ( for rotation through display modalities )
variable ghost 0 ghost ! ( 5sep2008 Article switch from "a" to "the" )
variable guspsi  (  6may2009 concept-tag attached to taste-memories )
variable gusrec  (  6may2009 for external recognition by GusRecog )
variable hipsi   ( 14jan2008 "high-psi" tag on wavecrest concept )
( I = Index in loops; does not require a fetch "@" )
variable img  ( visRecog: for future use as "image" )
variable inert  0 inert !  ( .echo; Think; English: EGO-trigger )
variable instnum  ( 1oct2008 "instantiation number for whatIs/Be )
variable IQ 6 IQ ! ( an invitation to code an IQ algorithm )
variable jdex   
variable jolt 0 jolt ! ( 31mar2007 Being replaced with "nounval" )
variable jrt ( "junior time" for memories moved in Rejuvenate )
variable jux  0 jux !  ( Parser; Instantiate: a JUXtaposed word )
variable kbpsi  ( 20jan2008 an interim knowledge-base psi )
variable kbquiz 0 kbquiz !  ( 16sep2008 flag to call kbSearch )
variable kbtv  1 kbtv !  ( 3sep2008 KB-traversal trigger )
variable krt ( Knowledge Representation time "t" for future use )
variable lastword  0 lastword !  ( 2apr2007 For zeroing "seq" tags. )
variable len  ( length, for avoiding non-words in AudInput )
variable lexact  ( 4apr2007 Testing a lexical :act" for Reify )
variable lopsi  ( 14jan2008 "low-psi" tag on just-crested concept )
variable match  ( oldConcept; SpeechAct:  end-of-word flag for control )
variable memoire  ( 17sep2008 Instead of "motjuste" in kbSearch )
variable midway 1 midway ! ( a backwards time-limit for searches )
variable monopsi ( 26jul2002 For use in audRecog module )
variable morphpsi ( 30sep2008 For audRecog recognition of morphemes )
variable motjuste ( best word for selection as part of a thought )
variable nacpsi   ( 9may2009 de-globalized psi for NounAct )
variable nen  0 nen ! ( English lexical concept number )
variable newpsi   ( 12may2009 for singular-nounstem assignments )
variable nlt  0 nlt !  ( not-later-than, for isolating time-points )
variable nounval 0 nounval ! ( For transfer from NounPhrase to MounAct )
variable nphrnum 0 nphrnum ! ( 27aug2008 NounPhrase number for Article )
variable nphrpos 0 nphrpos ! ( 29aug2008 for testing in ENGLISH )
variable num 0 num !  ( 24aug2008 number-flag for the psi array )
variable nwc    ( 15may2009 new-word-count for noun-stem recog )
variable obstat ( 15jan2008 Lets AudInput psi-damp a reentrant word. )
variable oldact ( to show the source of spreading activations )
variable oldpos ( for treating verb part-of-speech as a special case )
variable oldpsi ( 9may2009 used in OldConcept to de-globalize "psi" )
variable olfpsi ( 6may2009 concept-tag attached to smells in memory )
variable olfrec ( 6may2009 for external recognition by OlfRecog )
variable onset 0 onset ! ( of a word stored in auditory memory )
variable opt  ( option, for flushing out a desired part of speech )
variable ordo 0 ordo ! ( 2apr2007 from JSAI; AudInput word-order )
variable penultpho  ( 17may2009   )
variable pho  ( AudListen; AudInput; SpeechAct: phoneme of input/output )
variable pos  ( old- & newConcept; enVocab: part-of-speech )
variable pov  ( point-of-view: 35# for internal; 42* for external )
variable pre  ( previous concept associated with another concept )
variable precand  ( 2apr2007 inviolate "pre" candidate from JSAI )
variable predpos 0 predpos ! ( 29aug2008 part of speech in Predicate )
variable prepho   ( 17may2009  )
variable preset 0 preset !  ( 2apr2007 For setting Instantiate "pre" )
variable presyn  ( 7may2009 synaptic deglobalized "pre" in SpreadAct )
variable prevtag  ( 2apr2007 from JSAI; for use in Instantiate )
variable psi  ( associative tag from auditory engram to Psi mindcore )
variable psi1 ( 30mar2007 verbAct: activation-level at each node of verb )
variable psi6 ( temporary enx for use by verbPhrase in Tutorial mode )
variable psi7 ( 24aug2008 replacement for psi6 displaced by num )
variable psibase ( 5dec2007 With winning actbase, a winning psibase. )
variable questype  ( from 16aug 2002 oldConcept; Conjoin: "question-type" )
variable quiet 1 quiet ! ( AudListen; AudInput: status flag for input )
variable recon 0 recon ! ( Eagerness to seek reconnaissance answers. )
variable redux  ( 27jan2008 For oldest concept to be revived. )
variable reject 0 reject ! ( For orchestration of sentence-generation. )
variable retropsi   ( 15may2009 For AudInput and Audmem noun-stems )
variable residuum 0 residuum ! ( psiDamp -- post-thought activation )
variable rjc  0 rjc ! ( ReJuvenate: counter of rejuvenations over life )
variable rsvp 1000 rsvp ! ( AudInput/AudListen response-time counter )
variable rv ( "recall-vector" for diagnostic display of thought processes )
variable seq  ( subSEQuent concept associated with another concept )
variable seqsyn  ( 7may2009 synaptic deglobalized "seq" in SpreadAct )
variable spike  ( 1aug2005: for potential use in SpreadAct )
variable spt  ( AudMem; AudInput: blank space time )
variable stemgap  ( 30sep2008 For avoiding false audRecog stems )
variable stempsi  ( 14may2009 for singular noun-stem recognition )
variable subj     ( 15sep2005 flag to supercharge subject-nouns )
variable subjpsi  ( 4oct2008 For Predicate to correct beVerb choice )
variable sublen ( 30spe2008 length of audRecog subpsi word-stem )
variable subpsi ( 30sep2008 For audRecog of sub-component stems of words )
variable supsi  ( 22jan2008 subject-psi for calculating "thotnum" )
variable t  0 t ! ( time as incremented during auditory memory storage )
variable t2s    ( auditory text-to-speech index for SpeechAct )
variable tacpsi   ( 6may2009 concept-tag attached to tactile engrams )
variable tacrec   ( 6may2009 for external recognition by TacRecog )
variable thot1    ( 22jan2008 for detecting repetitions )
variable thot2    ( 22jan2008 for detecting repetitions )
variable thot3    ( 22jan2008 for detecting repetitions )
variable thotcyc  ( 22jan2008 for seeking repetition in a cycle )
variable thotnum  ( 22jan2008 A numeric concatenation of psi numbers )
variable topic  ( topic for a question to be asked )
variable topicnum ( 1oct2008 grammatical number of question "topic" )
variable tov 1 tov ! ( TabulaRasa; REIFY; ENGLISH; .echo: time-of-voice )
variable tsday    ( AudListen -- for headers in transcript mode )
variable tshour   ( AudListen )
variable tsminute ( AudListen )
variable tsmonth  ( AudListen )
variable tssecond ( AudListen )
variable tsyear   ( AudListen )
variable tult ( AudInput; AudMem: t penultimate, or time-minus-one )
variable txen ( 4apr2007 Reify: time of transfer to English lexicon )
variable ultpho  ( 17may2009   )
variable unk  ( "unknown" variable for general use )
variable upnext  ( 29jan2008 Flag lets new input de-crest previous. )
variable urpre ( original pre for safeguarding during function-calls )
variable urpsi ( original German:ur psi for use in psiDamp, etc. )
variable vault 202 vault !  ( 29mar2007 adding data from JavaScript AI )
variable vbpsi   ( 22jan2008 verb-psi for calculating "thotnum" )
variable verbinc ( 27apr2007 verb-increment for use in verbAct module )
variable verbval  ( 3apr2007 For transfer from verbPhrase to verbAct. )
variable version 20090515 version !  ( for troubleshooting )
variable vispsi   ( 6may2009 concept-tag attached to images in memory )
variable visrec   ( 6may2009 for external recognition by VisRecog )
variable whatflag  0 whatflag !  ( 23apr2009 for InStantiate )
variable whereflag 0 whereflag ! ( 23apr2009 for InStantiate )
variable whoflag   0 whoflag !   ( 23apr2009 for InStantiate )
variable wordend  ( 13may2009 for singular noun-stem assignments )
variable xthe 0 xthe !  ( 20apr2009 Xfer NPhr motjuste to EnArticle 
queue. )
variable yesorno 0 yesorno ! ( 16sep2008 in conjunction with kbSearch )
variable zone  ( ReActivate; SpreadAct: time-zone for "pre" and "seq" )

:  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 the first cell has the number of rows.)
  CELLS +  ( from number of items to number of bytes in offset )
;  


cns @  8  CHANNEL  psi{  ( Mindcore concept array "psi" )
cns @  7  CHANNEL   en{  ( English lexicon array "en" )
cns @  6  CHANNEL  aud{  ( Auditory memory channel array "aud" )
:  PSI-CLEAR  
  1   t @  1 +  DO  
    0 I 1 psi{ !    
  -1 +LOOP          
;  


:  TabulaRasa  
  0 unk !  
  1 tov !  
  BEGIN  cns @  1  DO
    0 I  unk @  psi{ !
  LOOP
  1  unk +!
  unk @  8  <  WHILE  
  REPEAT
  0 unk !  
  1 tov !  
  BEGIN  cns @  1  DO
    0 I  unk @   en{ !
  LOOP
  1  unk +!
  unk @  6  <  WHILE   
  REPEAT
  0 unk !  
  1 tov !  
  BEGIN  cns @  1  DO
    0 I  unk @  aud{ !
  LOOP
  1  unk +!
  unk @  6  <  WHILE
  REPEAT
  cns @  1  DO
    32   I  0   aud{ !  
  LOOP
;  


:  VerbClear ( remove activation from all verbs ) 
  midway @  t @  DO     
    I     5 psi{ @ 8 = IF  
      0 I 1 psi{ !    
    THEN              
  -1  +LOOP  
;  


:  VerbClip ( lower activation on all verbs ) 
  midway @  t @  DO     
    I     5 psi{ @ 8 = IF   
      I   1 psi{ @ 20 > IF  
     20 I 1 psi{ !    
      THEN            
    THEN              
  -1  +LOOP  
;  


:  PsiDecay ( let conceptual activations dwindle ) 
  fyi @ 2 > IF CR  
  ."       PsiDecay called to reduce all conceptual activations." CR
  THEN
  midway @  t @  DO  
    I  1  psi{ @  1 -        I  1  psi{ !       
    I  1  psi{ @  0 < IF  0  I  1  psi{ ! THEN  
    I  0  psi{ @ 59 = IF  0  I  1  psi{ ! THEN  
    I  0  psi{ @ 54 = IF  0  I  1  psi{ ! THEN  
    I  0  psi{ @  7 = IF  0  I  1  psi{ ! THEN  
    I     0    psi{ @ 57 = IF  
      I   1    psi{ @  8 < IF  
        1 I 1  psi{ !          
      THEN  
    THEN    
    I      0   psi{ @ 66 = IF
      I    1   psi{ @  8 > IF   
         1 I 1  psi{ !          
      THEN  
    THEN    
  -1  +LOOP  
;  


:  PsiDamp ( reduce activation of a concept ) 
  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  
  0 caller !  
  THEN
  midway @  t @  DO     
            I  0  psi{ @ urpsi @ = IF  
 residuum @ I  1  psi{ ! THEN  
  -1 +LOOP                     
  0 residuum !  
  PsiDecay      
;   


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


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


:  .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{ @ . ." "  
      I  7  psi{ @ enx ! enx @ .  
      enx @ 0 > IF
        ." to "
        I unk !
        0 aud !  
        midway @ unk @  DO
          I   0 en{ @  enx @ = IF
            I 6 en{ @  aud  !  
            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 seq enx "  0 unk ! 
  CR ." You may enter .psi .en .aud to view memory engrams, or"
  CR ." MainLoop [ENTER] to erase all memories and restart the Mind."
  CR
;  


:  .en ( show vocabulary in the English lexicon array ) 
  CR ." English lexical fibers"
  CR ." t nen act num fex pos fin aud:"
  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{ @ . ." "  
      I 6 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 fex pos fin aud" CR
  CR ." You may enter .psi .en .aud to view memory engrams, or"
  CR ." MainLoop [ENTER] to erase all memories and restart the Mind."
  CR
;  


:  .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  
  LOOP
  CR ." You may enter .psi .en .aud to view memory engrams, or"
  CR ." MainLoop [ENTER] to erase all memories and restart the Mind."
  CR
;  


: .echo ( show what the robot just said ) 
  ( As on Usenet, user responds _below_ what the AI has said. )
  fyi @ 2 = IF       
  CR ." Tutorial mode is now in effect. Enter input or wait for output."
    EEG @ 0 = IF   
      CR ." Duplicate thought may have been detected."
    THEN
  THEN
  CR  ." Robot: "
    t @ tov @  DO  
      I 0  aud{ @  0 =  IF   
        ."  "                
      ELSE                   
        I   2 aud{ @  42 = NOT IF  
          I 0 aud{ @ EMIT      
        THEN           
      THEN             
    LOOP               
;  


: SpreadAct  ( spreading activation )  
  fyi @ 3 = IF   
    CR ."  sprdAct: caller & seq = " caller @ . seq @ .  
  THEN           
  pre @ 0 > IF   
    zone @ 7 -   zone @  DO
      I 0  psi{ @   presyn @  =  IF  
                1   I  1 psi{ +!  
                    I  1 psi{ @  0 < IF   
                0   I  1 psi{  !          
                    THEN   
        I 1 psi{ @ 63 > IF  
          63 I 1 psi{ !     
        THEN
        I zone  @  6 - > IF LEAVE THEN  
      THEN       
    -1  +LOOP    
  THEN           
  seqsyn @ 0 > IF  
    fyi @ 3 = IF   
      CR ." sprA pos. seq & spike = " seq @ .  spike @ . CR 
    THEN           
    zone @ 9 +   zone @  DO   
      I 0  psi{ @  seqsyn @  =  IF 
    fyi @ 3 = IF   
      CR ." SprA matching seq w. spike = " seq @ .  spike @ . CR
    THEN           
        fyi @ 1 > IF  
          pov @ 35 = IF  
            0 psi7 !         
            fyi @ 3 = IF  
              CR CR ." sprdAct: seq = " seq @ . CR CR  
            THEN   
            midway @ t @ DO  
              I   0  psi{ @ cogpsi @ = IF 
                I 7  psi{ @   psi7 !    
                LEAVE                   
              THEN    
            -1  +LOOP 
            midway @ t @ DO  
              I   0  en{ @    psi7 @ = IF  
                I 6  en{ @  rv ! 
                LEAVE    
              THEN
            -1  +LOOP    
            0 rv !  
            midway @ t @ DO  
              I   0  psi{ @  seqsyn @ = IF  
                I 7  psi{ @   psi7 !    
                LEAVE                   
              THEN       
            -1  +LOOP    
            midway @ t @ DO  
              I   0  en{ @    psi7 @ = IF  
                I 6  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      
        fyi @ 2 > IF  
          pov @ 35 = IF  
            CR
            0 psi7 !         
            midway @ t @ DO  
              I   0  psi{ @   cogpsi @  =  IF  
                I 7  psi{ @   psi7 !    
                LEAVE                   
              THEN       
            -1  +LOOP    
            midway @ t @ DO  
              I   0  en{ @    psi7 @ = IF  
                I 6  en{ @  rv ! 
                LEAVE    
              THEN
            -1  +LOOP    
            rv @ 0 > IF  
              BEGIN
                rv @ 0 aud{ @ EMIT  1 rv +!
                rv @ 0 aud{ @ 32 =  
              UNTIL        
            THEN
            0 rv !  
            ."  #" cogpsi @ . ." act " oldact @ . 
            ." at i " I . ." sprA spike "   
            spike @ . ." to seq #" seq @ .  
            midway @ t @ DO  
              I   0  psi{ @  seqsyn @ = IF  
                I 7  psi{ @   psi7 !    
                LEAVE                   
              THEN       
            -1  +LOOP    
            midway @ t @ DO  
              I   0  en{ @    psi7 @ = IF  
                I 6  en{ @  rv ! 
                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      
        fyi @ 3 = IF  
          ." sprA: spiking seq " spike @ . seq @ .  
        THEN           
        spike   @   I  1 psi{ +!  
        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 1 psi{ @ 63 > IF  
            63 I 1 psi{ !     
          THEN
        I zone  @  6 + > IF
          fyi @ 2 > IF   
            CR ." executing LEAVE at zone = " zone @ .
          THEN           
          LEAVE
        THEN     
      THEN       
    LOOP         
  THEN           
;  


:  NounAct ( re-activate all recent nodes of a concept ) 
  fyi @ 2 > IF CR  
  ."     Calling nounAct (not in AI4U). psi = " psi @ . CR
  THEN
  nacpsi @  0 >  IF  
    fyi @ 2 > IF  
      CR ."       nounAct calls SpreadAct to xfer proportionate "
      ." act. from each node of concept #" psi @ .
    THEN
    midway @   t @  DO
      I 0 psi{ @ nacpsi @ = IF  
      I 1 psi{ @ psi1 !   
  nounval @  0 > IF nounval @ psi1 ! THEN  
     psi1 @ 63 > IF  
     63 psi1 !       
     THEN            
     psi1 @ I  1 psi{ !   
            I  0 psi{ @  54 = IF  
          0 I  1 psi{ !   
            THEN   
                  12 spike !  ( 3apr2007 Aim for ample spikes.)
          I  4 psi{ @  presyn !  (  7may2009 for use in SpreadAct )
          I  6 psi{ @  seqsyn !  (  7may2009 for use in SpreadAct )
          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 14 spike ! THEN  
          I  1 psi{ @ 15 > IF 16 spike ! THEN  
          I  1 psi{ @ 20 > IF 18 spike ! THEN  
          I  1 psi{ @ 25 > IF 20 spike ! THEN  
          I  1 psi{ @ 30 > IF 22 spike ! THEN  
          I  1 psi{ @ 35 > IF 24 spike ! THEN  
          I  1 psi{ @ 40 > IF 26 spike ! THEN  
          I  1 psi{ @ 45 > IF 28 spike ! THEN  
          I  1 psi{ @ 50 > IF 30 spike ! THEN  
          I  1 psi{ @ 55 > IF 32 spike ! THEN  
          I  1 psi{ @ 60 > IF 34 spike ! THEN
     nacpsi @ cogpsi ! 
          I  1 psi{ @ oldact !  
          I  5 psi{ @ oldpos !
     seqsyn @  0 > IF    
          7865 caller !  
          SpreadAct             ( for spreading activation )
          0 caller !     
          0 presyn !     
          0 seqsyn !     
        THEN   
        precand @ pre !  
        0 oldpos !
        0 cogpsi !  
        0 oldact !  
        0  pre !              
      THEN
      I    0 psi{ @ nacpsi @ = NOT IF
   I 5 psi{ @ DUP 5 = SWAP 7 = OR IF  
            I 1 psi{ @ unk !  
              0 unk !         
            I 1 psi{ @ < 0 IF 
          0 I 1 psi{ !        
           THEN   
         THEN   
      THEN   
    -1  +LOOP                 
  THEN  
  0 spike !  
;  


:  VerbAct ( re-activate all recent nodes of a verb )  
  verbval @  33 <  IF   
    33  verbval @ -  verbinc !  
    ELSE  0 verbinc !  
  THEN  
  fyi @ 2 > IF CR  
  ."     Calling verbAct (not in AI4U). psi = " psi @ . CR
  THEN  
  psi @  0 >  IF     
    fyi @ 2 > IF  
      CR ."       verbAct calls SpreadAct to xfer proportionate "
      ." act. from each node of concept #" psi @ .
    THEN
    psi @ cogpsi !  
    midway @   t @ DO  
      I 0 psi{ @ psi @ = IF
        fyi @ 2 > IF
          I 1 psi{ @ 8 > IF
            ." +"         
          THEN
        THEN
            I  1 psi{ @  psi1 !              
     psi1 @ I  1 psi{ !   
            I  0 psi{ @  54 = IF  
          0 I  1 psi{ !   
            THEN   
          I  1 psi{ @ 63 > IF  
            63 I 1 psi{ !      
          THEN  
          I  4 psi{ @  presyn !  (  7may2009 for use in SpreadAct )
          I  6 psi{ @  seqsyn !  (  7may2009 for use in SpreadAct )
          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  2 spike ! THEN  
          I  1 psi{ @ 10 > IF  8 spike ! THEN  
          I  1 psi{ @ 15 > IF 16 spike ! THEN  
          I  1 psi{ @ 20 > IF 20 spike ! THEN  
          I  1 psi{ @ 25 > IF 24 spike ! THEN  
          I  1 psi{ @ 30 > IF 28 spike ! THEN  
          I  1 psi{ @ 35 > IF 32 spike ! THEN  
          I  1 psi{ @ 40 > IF 36 spike ! THEN  
          I  1 psi{ @ 45 > IF 40 spike ! THEN  
          I  1 psi{ @ 50 > IF 44 spike ! THEN  
          I  1 psi{ @ 55 > IF 48 spike ! THEN  
          I  1 psi{ @ 60 > IF 52 spike ! THEN  
        psi @ cogpsi ! 
          I  1 psi{ @ oldact !  
          I  5 psi{ @ oldpos !  
        seqsyn @  0 > IF  
          8665 caller !  
          SpreadAct             ( for spreading activation )
          0 caller !     
          0 presyn !     
          0 seqsyn !     
        THEN                    
        0 oldpos !  
        0 cogpsi !  
        0 oldact !  
        0  pre !              
        0  seq !              
      THEN                    
    -1  +LOOP                 
  THEN  
  0 verbinc !  
;  


:  ReActivate ( re-activate all 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 xfer proportionate "
      ." act. from each node of concept #" psi @ .
    THEN          
    midway @   t @  DO  
      I 0 psi{ @ psi @ = IF  
         16 I  1 psi{ +!  
            I  0 psi{ @  54 = IF  
          0 I  1 psi{ !   
            THEN   
          I  1 psi{ @ 63 > IF  
            63 I 1 psi{ !      
          THEN  
                               1 spike !       
          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
                psi @ cogpsi !  
          I  1 psi{ @ oldact !  
          I  5 psi{ @ oldpos !
          I  4 psi{ @  presyn !  (  7may2009 for use in SpreadAct )
          I  6 psi{ @  seqsyn !  (  7may2009 for use in SpreadAct )
          I           zone !     ( for use in SpreadAct )
        148 caller !          
        SpreadAct             ( for spreading activation )
        0 oldpos !            
        0 cogpsi !            
        0 oldact !            
        0    pre !            
        0 presyn !            
        0    seq !            
        0 seqsyn !            
        0   psi1 !            
        1  spike !            
      THEN                    
    -1  +LOOP                 
    0 caller !          
    0 urpsi !     
  THEN  
;  


:  InStantiate ( create a concept-fiber node )  
  precand @ 0 > IF precand @ pre ! THEN  
  ordo @ 1 = IF  0 prevtag ! THEN  
  lastword @ 1 = IF   
    0 seq !       
    0 lastword !  
  THEN  
  t @ 201 > IF  
    whoflag @ 1 = IF  
      psi @ 57 = IF 57 beflag ! THEN  
      psi @ 66 = IF 66 beflag ! THEN  
      psi @ 67 = IF 67 beflag ! THEN  
      pos @ 5 = pos @ 7 = OR IF 
        beflag @ seq !  
        0 beflag !   
        0 whoflag !  
      THEN  
    THEN  
    psi @ 55 = IF  
      1 whoflag !  
      0 act !      
    THEN
  THEN  
  prevtag @ pre !  
  ( concept fiber psi )             psi @  t @  0 psi{ !
  ( Set "act" activation level. )   act @  t @  1 psi{ +!
  ( Set "num" number flag       )   num @  t @  2 psi{ ! 
  ( Store JUXtaposition tags. )     jux @  t @  3 psi{ ! 
  ( Store PREvious associand. )     pre @  t @  4 psi{ ! 
  ( Store functional pos code. )    pos @  t @  5 psi{ ! 
  ( Store the subSEQuent tag. )     seq @  t @  6 psi{ ! 
  ( Store the EN-transfer tag. )    enx @  t @  7 psi{ ! 
  num @ instnum !  
  0 num !          
  0 preset !       
  pos @ 5 = pos @ 7 = OR IF
    psi @ prevtag !  
  THEN  
  ordo @ 1 > IF    
    psi @ seq !    
    vault @  t @ 2 -  DO   
      I 1 psi{ @  0 > IF   
        seq @ I 6 psi{ !   
        LEAVE         
      THEN            
    -1 +LOOP           
  THEN                 
  0 seq !  
;  


:  EnVocab ( English Vocabulary node creation ) 
  ( 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 mindcore EXit tag. )      fex @  t @  3  en{ ! 
  ( Store part of speech "pos".)    pos @  t @  4  en{ ! 
  ( Store mindcore IN tag. )        fin @  t @  5  en{ ! 
  ( Store the auditory "aud" tag. ) aud @  t @  6  en{ ! 
;  


:  EnParser ( determine the part of speech )
  5 bias !  
  36 act !  
  INSTANTIATE
  pos @ 5 = IF  8 bias !  THEN  
  pos @ 7 = IF  8 bias !  THEN  
  pos @ 8 = IF  5 bias !  THEN  
  psi @  jux !  
;  


:  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 !    
          I   7 psi{ @  enx !    
          I   0  en{ @  enx @ = IF  
 lexact @ I   1  en{ !  
    num @ I   2  en{ !  
            0 lexact !    
           THEN
         THEN         
    0 enx !      
    0 act !      
    0 lexact !   
  -1  +LOOP      
  0 act !
;  


:  KbSearch ( knowledge base search )
  ordo @ 2 = IF
    NounAct  
    EnReify  
  THEN
  ordo @ 3 = IF
    0 act !
    midway @ t  @ DO  
      I     4 en{ @  8 = IF  
        I   1 en{ @  act @ > IF  ( 17sep2008 if en1 is higher )
          I 0 en{ @  memoire !  ( 17sep2008 store psi-tag of word )
          I 1 en{ @  act !  ( 17sep2008 to test for a higher en1 )
        THEN  
      THEN    
    -1 +LOOP  
    yesorno @ 0 > IF  
      memoire @ psi @ = IF  
        1 yesorno +!  
      ELSE            
        0 yesorno !   
      THEN
    THEN
    verbAct  
    EnReify  
  THEN
  ordo @ 4 = IF
    0 act !  
    0 memoire !
    midway @ t  @ DO
      I 4 en{ @  DUP 5 = SWAP 7 = OR IF  
        I    1 en{ @  act @ > IF  ( 17sep2008 if en1 is higher )
          I  0 en{ @  memoire !  ( 17sep2008 store psi-tag of word )
          I  1 en{ @  act !  ( 17sep2008 to test for a higher en1 )
        THEN  
      THEN    
    -1 +LOOP  
    yesorno @ 0 > IF  
      memoire @ psi @ = IF  
        1 yesorno +!  
      ELSE            
        0 yesorno !   
      THEN
    THEN
  THEN
  0 kbquiz !
  ordo @ 4 = IF 0 ordo ! THEN
;  


:  OldConcept ( recognize a known word ) 
  24 act !
  midway @ t @ DO
    I 0 en{ @ oldpsi @ = IF 
    I 2 en{ @    0 > IF    
    I 2 en{ @  num ! THEN  
    I 3 en{ @    0 > IF 
    I 3 en{ @  fex ! THEN  
    I 4 en{ @    0 > IF 
    I 4 en{ @  pos ! THEN 
    I 5 en{ @    0 > IF 
    I 5 en{ @  fin ! THEN  
    LEAVE        
    THEN         
  -1 +LOOP       
 

  ( oldpsi found by audRecog )   oldpsi @  t @  0  en{ ! 
  ( Store zero activation. )          0    t @  1  en{ !
  ( Store "num" number tag. )       num @  t @  2  en{ ! 
  ( Store mindcore EXit tag. )      fex @  t @  3  en{ ! 
  ( Store part of speech "pos".)    pos @  t @  4  en{ ! 
  ( Store mindcore IN tag. )        fin @  t @  5  en{ ! 
  ( Store the auditory "aud" tag. ) aud @  t @  6  en{ ! 
  pov @  35 = IF fex @ oldpsi ! THEN
  pov @  42 = IF fin @ oldpsi ! THEN
  oldpsi @  enx !
  oldpsi @ 54 = IF 8 act ! THEN
  oldpsi @ 55 = IF 8 act ! THEN  
  ordo @ 1 = IF
    oldpsi @ 59 = IF
      1 kbquiz !   
    THEN
  THEN
  oldpsi @ 59 = IF 8 act ! THEN
  oldpsi @  7 = IF 1 act ! THEN  
  oldpsi @ psi !    
  EnParser          
    0 pos !         
  fyi @ 2 > IF CR          
  ."   from OldConcept "   
  THEN              
  pov @ 42 = IF       
    pre   @  urpre !  
    ReActivate        
    urpre @    pre !  
  THEN             
  0 act !
  pov @ 35 = IF  
    1 match !  
  THEN
  kbquiz @ 0 > IF
    1 yesorno !     
    KbSearch        
  THEN  
  yesorno @ 0 > IF  
    KbSearch  
  THEN  
;  


:  NewConcept ( machine learning of new concepts ) 
  0 newpsi !   
  1 nen +!     
  1 nwc +!     
  nen @ IQ !   
  nen @ newpsi !  
  nen @ stempsi ! 
  nen @ psi !  
  nen @ fex !  
  nen @ fin !  
  bias @ pos ! 
  enVocab ( to create an ENglish vocabulary node )
  0 fex !       
  0 fin !       
  nen @  enx !  
  EnParser      
  0 pos !       
  0 act !       
;  


:  AudRecog ( auditory recognition )  
  0 audrec !  
  0 psi !   
  8 act !      
  0 actbase !  
  midway @  spt @ DO    
    I 0 aud{ @ pho @ = IF  
      I 1 aud{ @ 0 = IF  
        I 3 aud{ @ 1 = IF
          I 4 aud{ @ 1 = IF 
            8 I 1+   1 aud{ !
            0 audrec !
          ELSE
            len @ 1 = IF
              I 5 aud{ @  monopsi !
            THEN
          THEN
        THEN
      THEN
      I 1 aud{ @ 0 > IF
        0 audrec !
        I 4 aud{ @ 1 = IF   
          2 act +!
          0 audrec !
      act @ I 1+   1 aud{ ! 
        THEN
        I 4 aud{ @ 0 = IF   
          len @ 2 = IF
            I 1 aud{ @ 0 > IF
              I 5 aud{ @ psibase !
            THEN
          THEN
        THEN
        I 1 aud{ @ 8 > IF
          I 4 aud{ @ 0 = IF
            I 1 aud{ @ actbase @ > IF
              I 5 aud{ @ audrec !
              I 5 aud{ @ subpsi ! 
              len @ sublen !  
              I 5 aud{ @ psibase !  
              I 1 aud{ @ actbase !  
            THEN
          ELSE
            0 audrec !
            monopsi @ 0 > IF
              monopsi @ audrec !  
              0 monopsi !      
            THEN
          THEN
        THEN
      THEN
    THEN
  -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   
    pho @ 83 = IF  
      2 num !  
    THEN  
  THEN  
  audrec @ audpsi !  
;  


:  AudMem ( auditory memory channel )
  t @ vault @ > IF  
    pho @ 32 > IF  AudRecog  THEN  ( ASCII 32 = SPACE-bar )
  THEN
    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
    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  
;  


:  AudListen ( preparation for AudInput )  
  rsvp @  1  DO
    KEY? IF  
      KEY pho !
      0 quiet !  
      pho @  8 = IF 7 EMIT THEN 
      pho @  9 = IF
         200 rsvp !  
        pho @ 13 = IF  1 lastword !  THEN  
        fyi @ 0 = IF CR CR 
     TIME&DATE tsyear ! tsmonth ! tsday ! tshour ! tsminute ! tssecond !
  ." Transcript of AI Mind interview at "
  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 .en .aud to view memory engrams, or"
        CR ." MainLoop [ENTER] to erase memories and restart the Mind."
        CR ." Type 'bye' to quit Forth, then EXIT to quit DOS."
        CR
        0 audpsi ! 0 newpsi ! 0 oldpsi ! 0 stempsi !  
        QUIT
      THEN
      pho @ 0 > IF   
        pho @ EMIT   
      THEN      
      pho @ DUP 96 > IF
        DUP 123 < IF
          32 -
        THEN
      THEN  pho !    
      LEAVE  
      ELSE
      ."  "  
    THEN
    8  EMIT  
  LOOP
;  



:  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       
      1 upnext +!       
      upnext @ 1 = IF   
        obstat @ 0 = IF 
          kbpsi @ lopsi !  
          0 kbpsi !        
          lopsi @ urpsi !  
          3535 caller !  
          pho @ 64 > IF  
            PsiDamp      
          THEN
          hipsi @ lopsi !  
          0 caller !    
          0 urpsi !     
          1 obstat !    
        THEN
      THEN
      EEG @ 0 = IF
        psi @ 0 > IF
           psi @ redux !  
           fyi @ 2 = IF
             7 EMIT
             CR ."   Resurrecting oldest concept #" redux @ . 
             CR  
           THEN
        THEN
      THEN
    THEN
    pov @ 42 = IF   
      AudListen
      pho @ 0 > IF
        0 kbtv !  
        1 upnext +!  
        upnext @ 1 = IF
          VerbClip   
          hipsi @ urpsi !  
          104 caller !  
          PsiDamp  
          hipsi @ lopsi !  
          0 caller !    
          0 urpsi !     
        THEN
         300 rsvp !  
      THEN
      I 138 = IF 
        rsvp @ 250 > IF 60 rsvp ! THEN
      THEN
      I 139 = IF 
        pho @ 0 = IF  
          rsvp @ 1 - rsvp !  
          rsvp @ 2 < IF 2 rsvp ! THEN
        ELSE
            32 rsvp !  
        THEN
      THEN
      pho @ 32 = pho @ 13 = OR IF 
        pho @ 13 = IF 10 EMIT THEN
        prepho @ 83 = IF
          0 t @ 1 - 4 aud{ !  
          0 prepho !  
        THEN
      THEN
    THEN
    pho @  0 > IF  
      1 t +!       
    THEN
    pho @ 13 = IF
       1 quiet !   
       1 beg !     
      13 eot !     
      32 pho !     
      10 EMIT      
      CR           
       1 lastword !
    THEN  
    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  
      prepho @ penultpho !
      1 ordo +!     
      audpsi @ urpsi !  
      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  
    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 !  
;  


:  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 )
;  


:  EnBoot ( English bootstrap of initial concepts ) 
  0 t !  t @  spt !  ." (clearing memory...)"
  CR ." There is no warranty for what this software does."
    1 t ! 89 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
    2 t ! 69 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
    3 t ! 83 pho ! 35 pov !  0 beg ! 0 ctu ! 32 audpsi ! AudMem 
 32 psi !  0 act !  0 jux !  0 pre ! 4 pos !  0 seq ! 32 enx ! InStantiate
 32 nen !  0 act ! 32 fex !          4 pos ! 32 fin !  1 aud ! EnVocab
    5 t ! 73 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
    6 t ! 70 pho ! 35 pov !  0 beg ! 0 ctu ! 20 audpsi ! AudMem 
 20 psi !  0 act !  0 jux !  0 pre ! 3 pos !  0 seq ! 20 enx ! InStantiate
 20 nen !  0 act ! 20 fex !          3 pos ! 20 fin !  5 aud ! EnVocab
    8 t ! 84 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
    9 t ! 72 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   10 t ! 69 pho ! 35 pov !  0 beg ! 0 ctu !  7 audpsi ! AudMem 
  7 psi !  0 act !  0 jux !  0 pre ! 1 pos !  0 seq !  7 enx ! InStantiate
  7 nen !  0 act !  7 fex !          1 pos !  7 fin !  8 aud ! EnVocab
   12 t ! 84 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   13 t ! 82 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   14 t ! 85 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   15 t ! 84 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   16 t ! 72 pho ! 35 pov !  0 beg ! 0 ctu ! 68 audpsi ! AudMem 
 68 psi !  1 num !  0 jux !  0 pre ! 5 pos ! 66 seq ! 68 enx ! InStantiate
 68 nen !  0 act ! 68 fex !          5 pos ! 68 fin ! 12 aud ! EnVocab
   18 t ! 73 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   19 t ! 83 pho ! 35 pov !  0 beg ! 0 ctu ! 66 audpsi ! AudMem 
 66 psi !  8 act !  0 jux ! 68 pre ! 8 pos !  0 seq ! 66 enx ! InStantiate
 66 nen !  0 act ! 66 fex !          8 pos ! 66 fin ! 18 aud ! EnVocab
   21 t ! 84 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   22 t ! 72 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   23 t ! 65 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   24 t ! 84 pho ! 35 pov !  0 beg ! 0 ctu ! 22 audpsi ! AudMem 
 22 psi !  0 act !  0 jux !  0 pre ! 3 pos !  0 seq ! 22 enx ! InStantiate
 22 nen !  0 act ! 22 fex !          3 pos ! 22 fin ! 21 aud ! EnVocab
   26 t ! 65 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   27 t ! 76 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   28 t ! 76 pho ! 35 pov !  0 beg ! 0 ctu !  2 audpsi ! AudMem 
  2 psi !  0 act !  0 jux !  0 pre ! 1 pos !  0 seq !  2 enx ! InStantiate
  2 nen !  0 act !  2 fex !          1 pos !  2 fin ! 26 aud ! EnVocab
   30 t ! 82 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   31 t ! 79 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   32 t ! 66 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   33 t ! 79 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   34 t ! 84 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   35 t ! 83 pho ! 35 pov !  0 beg ! 0 ctu ! 39 audpsi ! AudMem 
 39 psi !  2 num !  0 jux !  0 pre ! 5 pos !  0 seq ! 39 enx ! InStantiate
 39 nen !  0 act ! 39 fex !          5 pos ! 39 fin ! 30 aud ! EnVocab
   37 t ! 65 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   38 t ! 82 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   39 t ! 69 pho ! 35 pov !  0 beg ! 0 ctu ! 67 audpsi ! AudMem 
 67 psi !  8 act !  0 jux ! 39 pre ! 8 pos ! 38 seq ! 67 enx ! InStantiate
 67 nen !  0 act ! 67 fex !          8 pos ! 67 fin ! 37 aud ! EnVocab
   41 t ! 80 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   42 t ! 69 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   43 t ! 82 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   44 t ! 83 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   45 t ! 79 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   46 t ! 78 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   47 t ! 83 pho ! 35 pov !  0 beg ! 0 ctu ! 38 audpsi ! AudMem 
 38 psi !  2 num !  0 jux !  0 pre ! 5 pos !  0 seq ! 38 enx ! InStantiate
 38 nen !  0 act ! 38 fex !          5 pos ! 38 fin ! 41 aud ! EnVocab
   49 t ! 66 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   50 t ! 69 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   51 t ! 67 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   52 t ! 65 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   53 t ! 85 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   54 t ! 83 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   55 t ! 69 pho ! 35 pov !  0 beg ! 0 ctu ! 18 audpsi ! AudMem 
 18 psi !  0 act !  0 jux !  0 pre ! 3 pos !  0 seq ! 18 enx ! InStantiate
 18 nen !  0 act ! 18 fex !          3 pos ! 18 fin ! 49 aud ! EnVocab
   57 t ! 87 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   58 t ! 69 pho ! 35 pov !  0 beg ! 0 ctu ! 53 audpsi ! AudMem 
 53 psi !  0 act !  0 jux !  0 pre ! 7 pos !  0 seq ! 53 enx ! InStantiate
 53 nen !  0 act ! 53 fex !          7 pos ! 56 fin ! 57 aud ! EnVocab
   60 t ! 84 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   61 t ! 72 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   62 t ! 73 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   63 t ! 78 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   64 t ! 75 pho ! 35 pov !  0 beg ! 0 ctu ! 63 audpsi ! AudMem 
 63 psi !  0 act !  0 jux !  0 pre ! 8 pos !  0 seq ! 63 enx ! InStantiate
 63 nen !  0 act ! 63 fex !          8 pos ! 63 fin ! 60 aud ! EnVocab
   66 t ! 84 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   67 t ! 72 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   68 t ! 69 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   69 t ! 78 pho ! 35 pov !  0 beg ! 0 ctu ! 13 audpsi ! AudMem 
 13 psi !  0 act !  0 jux !  0 pre ! 2 pos !  0 seq ! 13 enx ! InStantiate
 13 nen !  0 act ! 13 fex !          2 pos ! 13 fin ! 66 aud ! EnVocab
   71 t ! 78 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   72 t ! 79 pho ! 35 pov !  0 beg ! 0 ctu ! 27 audpsi ! AudMem 
 27 psi !  0 act !  0 jux !  0 pre ! 4 pos !  0 seq ! 27 enx ! InStantiate
 27 nen !  0 act ! 27 fex !          4 pos ! 27 fin ! 71 aud ! EnVocab
   74 t ! 89 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   75 t ! 79 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   76 t ! 85 pho ! 35 pov !  0 beg ! 0 ctu ! 56 audpsi ! AudMem 
 56 psi !  0 act !  0 jux !  0 pre ! 7 pos ! 35 seq ! 56 enx ! InStantiate
 56 nen !  0 act ! 56 fex !          7 pos ! 50 fin ! 74 aud ! EnVocab
   78 t ! 65 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   79 t ! 78 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   80 t ! 68 pho ! 35 pov !  0 beg ! 0 ctu ! 17 audpsi ! AudMem 
 17 psi !  0 act !  0 jux !  0 pre ! 3 pos !  0 seq ! 17 enx ! InStantiate
 17 nen !  0 act ! 17 fex !          3 pos ! 17 fin ! 78 aud ! EnVocab
   82 t ! 73 pho ! 35 pov !  1 beg ! 0 ctu ! 50 audpsi ! AudMem 
 50 psi !  0 act !  0 jux !  0 pre ! 7 pos !  0 seq ! 50 enx ! InStantiate
 50 nen !  0 act ! 50 fex !          7 pos ! 56 fin ! 82 aud ! EnVocab
   84 t ! 68 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   85 t ! 79 pho ! 35 pov !  0 beg ! 0 ctu ! 59 audpsi ! AudMem 
 59 psi !  0 act !  0 jux !  0 pre ! 8 pos !  0 seq ! 59 enx ! InStantiate
 59 nen !  0 act ! 59 fex !          8 pos ! 59 fin ! 84 aud ! EnVocab
   87 t ! 78 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   88 t ! 79 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   89 t ! 84 pho ! 35 pov !  0 beg ! 0 ctu ! 12 audpsi ! AudMem 
 12 psi !  0 act !  0 jux !  0 pre ! 2 pos !  0 seq ! 12 enx ! InStantiate
 12 nen !  0 act ! 12 fex !          2 pos ! 12 fin ! 87 aud ! EnVocab
   91 t ! 75 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   92 t ! 78 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   93 t ! 79 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   94 t ! 87 pho ! 35 pov !  0 beg ! 0 ctu ! 61 audpsi ! AudMem 
 61 psi !  0 act !  0 jux ! 50 pre ! 8 pos !  0 seq ! 61 enx ! InStantiate
 61 nen !  0 act ! 61 fex !          8 pos ! 61 fin ! 91 aud ! EnVocab
   96 t ! 87 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
   97 t ! 72 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
   98 t ! 89 pho ! 35 pov !  0 beg ! 0 ctu ! 16 audpsi ! AudMem 
 16 psi !  0 act !  0 jux !  0 pre ! 2 pos !  0 seq ! 16 enx ! InStantiate
 16 nen !  0 act ! 16 fex !          2 pos ! 16 fin ! 96 aud ! EnVocab
  100 t ! 83 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  101 t ! 79 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  102 t ! 77 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  103 t ! 69 pho ! 35 pov !  0 beg ! 0 ctu ! 69 audpsi ! AudMem 
 69 psi !  0 act !  0 jux !  0 pre ! 1 pos !  0 seq ! 69 enx ! InStantiate
 69 nen !  0 act ! 69 fex !          1 pos ! 69 fin ! 100 aud ! EnVocab
  105 t ! 80 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  106 t ! 69 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  107 t ! 79 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  108 t ! 80 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  109 t ! 76 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  110 t ! 69 pho ! 35 pov !  0 beg ! 0 ctu ! 37 audpsi ! AudMem 
 37 psi !  2 num !  0 jux !  0 pre ! 5 pos ! 70 seq ! 37 enx ! InStantiate
 37 nen !  0 act ! 37 fex !          5 pos ! 37 fin ! 105 aud ! EnVocab
  112 t ! 72 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  113 t ! 65 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  114 t ! 86 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  115 t ! 69 pho ! 35 pov !  0 beg ! 0 ctu ! 70 audpsi ! AudMem 
 70 psi !  0 act !  0 jux ! 37 pre ! 8 pos ! 71 seq ! 70 enx ! InStantiate
 70 nen !  0 act ! 70 fex !          8 pos ! 70 fin ! 112 aud ! EnVocab
  117 t ! 65 pho ! 35 pov !  1 beg ! 0 ctu !  1 audpsi ! AudMem 
  1 psi !  0 act !  0 jux !  0 pre ! 1 pos !  0 seq !  1 enx ! InStantiate
  1 nen !  0 act !  1 fex !          1 pos !  1 fin ! 117 aud ! EnVocab
  119 t ! 70 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  120 t ! 69 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  121 t ! 65 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  122 t ! 82 pho ! 35 pov !  0 beg ! 0 ctu ! 71 audpsi ! AudMem 
 71 psi !  1 num !  0 jux !  0 pre ! 5 pos !  0 seq ! 71 enx ! InStantiate
 71 nen !  0 act ! 71 fex !          5 pos ! 71 fin ! 119 aud ! EnVocab
  124 t ! 79 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  125 t ! 70 pho ! 35 pov !  0 beg ! 0 ctu ! 45 audpsi ! AudMem 
 45 psi !  0 act !  0 jux !  0 pre ! 6 pos !  0 seq ! 45 enx ! InStantiate
 45 nen !  0 act ! 45 fex !          6 pos ! 45 fin ! 124 aud ! EnVocab
  127 t ! 87 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  128 t ! 72 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  129 t ! 79 pho ! 35 pov !  0 beg ! 0 ctu ! 55 audpsi ! AudMem 
 55 psi !  0 act !  0 jux !  0 pre ! 5 pos !  0 seq ! 55 enx ! InStantiate
 55 nen !  0 act ! 55 fex !          5 pos ! 55 fin ! 127 aud ! EnVocab
  131 t ! 73 pho ! 35 pov !  1 beg ! 0 ctu ! 50 audpsi ! AudMem 
 50 psi !  0 act !  0 jux !  0 pre ! 7 pos ! 57 seq ! 50 enx ! InStantiate
 50 nen !  0 act ! 50 fex !          7 pos ! 56 fin ! 131 aud ! EnVocab
  133 t ! 65 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  134 t ! 77 pho ! 35 pov !  0 beg ! 0 ctu ! 57 audpsi ! AudMem 
 57 psi !  8 act !  0 jux !  0 pre ! 8 pos ! 54 seq ! 57 enx ! InStantiate
 57 nen !  0 act ! 57 fex !          8 pos ! 57 fin ! 133 aud ! EnVocab
  136 t ! 79 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  137 t ! 82 pho ! 35 pov !  0 beg ! 0 ctu ! 21 audpsi ! AudMem 
 21 psi !  0 act !  0 jux !  0 pre ! 3 pos !  0 seq ! 21 enx ! InStantiate
 21 nen !  0 act ! 21 fex !          3 pos ! 21 fin ! 136 aud ! EnVocab
  139 t ! 87 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  140 t ! 72 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  141 t ! 65 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  142 t ! 84 pho ! 35 pov !  0 beg ! 0 ctu ! 54 audpsi ! AudMem 
 54 psi !  0 act !  0 jux !  0 pre ! 5 pos !  0 seq ! 54 enx ! InStantiate
 54 nen !  0 act ! 54 fex !          5 pos ! 54 fin ! 139 aud ! EnVocab
  144 t ! 84 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  145 t ! 72 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  146 t ! 69 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  147 t ! 89 pho ! 35 pov !  0 beg ! 0 ctu ! 52 audpsi ! AudMem 
 52 psi !  0 act !  0 jux !  0 pre ! 7 pos !  0 seq ! 52 enx ! InStantiate
 52 nen !  0 act ! 52 fex !          7 pos ! 52 fin ! 144 aud ! EnVocab
  149 t ! 83 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  150 t ! 69 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  151 t ! 69 pho ! 35 pov !  0 beg ! 0 ctu ! 62 audpsi ! AudMem 
 62 psi !  0 act !  0 jux ! 52 pre ! 8 pos !  0 seq ! 62 enx ! InStantiate
 62 nen !  0 act ! 62 fex !          8 pos ! 62 fin ! 149 aud ! EnVocab
  153 t ! 73 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  154 t ! 78 pho ! 35 pov !  0 beg ! 0 ctu ! 44 audpsi ! AudMem 
 44 psi !  0 act !  0 jux !  0 pre ! 6 pos !  0 seq ! 44 enx ! InStantiate
 44 nen !  0 act ! 44 fex !          6 pos ! 44 fin ! 153 aud ! EnVocab
  156 t ! 77 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  157 t ! 69 pho ! 35 pov !  0 beg ! 0 ctu ! 65 audpsi ! AudMem 
 65 psi !  0 act !  0 jux !  0 pre ! 7 pos !  0 seq ! 65 enx ! InStantiate
 65 nen !  0 act ! 65 fex !          7 pos ! 56 fin ! 156 aud ! EnVocab
  159 t ! 75 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  160 t ! 73 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  161 t ! 68 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  162 t ! 83 pho ! 35 pov !  0 beg ! 0 ctu ! 72 audpsi ! AudMem 
 72 psi !  2 num !  0 jux !  0 pre ! 5 pos ! 73 seq ! 72 enx ! InStantiate
 72 nen !  0 act ! 72 fex !          5 pos ! 72 fin ! 159 aud ! EnVocab
  164 t ! 77 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  165 t ! 65 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  166 t ! 75 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  167 t ! 69 pho ! 35 pov !  0 beg ! 0 ctu ! 73 audpsi ! AudMem 
 73 psi !  0 act !  0 jux ! 72 pre ! 8 pos ! 39 seq ! 73 enx ! InStantiate
 73 nen !  0 act ! 73 fex !          8 pos ! 73 fin ! 164 aud ! EnVocab
  169 t ! 82 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  170 t ! 79 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  171 t ! 66 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  172 t ! 79 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  173 t ! 84 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  174 t ! 83 pho ! 35 pov !  0 beg ! 0 ctu ! 39 audpsi ! AudMem 
 39 psi !  2 num !  0 jux ! 73 pre ! 5 pos !  0 seq ! 39 enx ! InStantiate
 39 nen !  0 act ! 39 fex !          5 pos ! 39 fin ! 169 aud ! EnVocab
  176 t ! 82 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  177 t ! 79 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  178 t ! 66 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  179 t ! 79 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  180 t ! 84 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  181 t ! 83 pho ! 35 pov !  0 beg ! 0 ctu ! 39 audpsi ! AudMem 
 39 psi !  2 num !  0 jux !  0 pre ! 5 pos ! 74 seq ! 39 enx ! InStantiate
 39 nen !  0 act ! 39 fex !          5 pos ! 39 fin ! 176 aud ! EnVocab
  183 t ! 78 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  184 t ! 69 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  185 t ! 69 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  186 t ! 68 pho ! 35 pov !  0 beg ! 0 ctu ! 74 audpsi ! AudMem 
 74 psi !  0 act !  0 jux ! 39 pre ! 8 pos ! 50 seq ! 74 enx ! InStantiate
 74 nen !  0 act ! 74 fex !          8 pos ! 74 fin ! 183 aud ! EnVocab
  188 t ! 77 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  189 t ! 69 pho ! 35 pov !  0 beg ! 0 ctu ! 65 audpsi ! AudMem 
 50 psi !  0 act !  0 jux ! 74 pre ! 7 pos !  0 seq ! 65 enx ! InStantiate
 65 nen !  0 act ! 50 fex !          7 pos ! 56 fin ! 188 aud ! EnVocab
  191 t ! 73 pho ! 35 pov !  1 beg ! 0 ctu ! 50 audpsi ! AudMem 
 50 psi !  0 act !  0 jux !  0 pre ! 7 pos ! 75 seq ! 50 enx ! InStantiate
 50 nen !  0 act ! 50 fex !          7 pos ! 56 fin ! 191 aud ! EnVocab
  193 t ! 72 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  194 t ! 69 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  195 t ! 76 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  196 t ! 80 pho ! 35 pov !  0 beg ! 0 ctu ! 75 audpsi ! AudMem 
 75 psi !  0 act !  0 jux ! 50 pre ! 8 pos ! 72 seq ! 75 enx ! InStantiate
 75 nen !  0 act ! 75 fex !          8 pos ! 75 fin ! 193 aud ! EnVocab
  198 t ! 75 pho ! 35 pov !  1 beg ! 1 ctu !  0 audpsi ! AudMem 
  199 t ! 73 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  200 t ! 68 pho ! 35 pov !  0 beg ! 1 ctu !  0 audpsi ! AudMem 
  201 t ! 83 pho ! 35 pov !  0 beg ! 0 ctu ! 72 audpsi ! AudMem 
 72 psi !  2 num !  0 jux ! 75 pre ! 5 pos !  0 seq ! 72 enx ! InStantiate
 72 nen !  0 act ! 72 fex !          5 pos ! 72 fin ! 198 aud ! EnVocab
  1 t +!
    t @  vault !  
    t @  tov !
  1 t +!
    t @ nlt !  ( nlt may be basis for DAMP functions )  
  72 urpsi !  
  75 nen !  
  5 bias !  
  0 num !  
  0 nwc !  
  0 pho !  
  0 pre !  0 seq !  
;


:  KbTraversal ( reactivate KB concepts )  
    35 pov !  
    psiDecay  
    psiDecay  
    psiDecay  
    kbtv @ 4 > IF  1 kbtv !  THEN  
    CR ." Knowledge base traversal with kbtv at " kbtv @ . 
    kbtv @ 1 = IF
      56 nacpsi !  
      ." activating concept of YOU" CR
      62 nounval ! 
      nounAct      
      0 nacpsi !   
    THEN
    kbtv @ 2 = IF
      37 nacpsi !  
      ." activating concept of PEOPLE" CR
      62 nounval ! 
      nounAct      
      0 nacpsi !   
    THEN
    kbtv @ 3 = IF
      39 nacpsi !  
      ." activating concept of ROBOTS" CR
      62 nounval ! 
      nounAct      
      0 nacpsi !   
    THEN
    kbtv @ 4 = IF
      68 nacpsi !  
      ." activating concept of TRUTH" CR
      62 nounval ! 
      nounAct      
      0 nacpsi !   
    THEN  
    42 pov !  
;  


:  ReJuvenate ( recycle oldest memory spaces )
  fyi @ 2 = IF  
    7 EMIT      
    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{ !  
      I 6 psi{ @  jrt @  6 psi{ !  0 I 6 psi{ !
      I 7 psi{ @  jrt @  7 psi{ !  0 I 7 psi{ !  
    THEN
    edge @  1 =  IF
      en6 @  1 <  IF  0 en6 !  THEN  
      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{ @  en6 !   
          en6 @  vault @ < IF 
          en6 @  jrt @  6 en{ !  0 I 6 en{ !  THEN 
          en6 @  coda @  vault @ +  > IF 
          en6 @  coda @ -  jrt @ 6 en{ ! 
          THEN               0 I 6 en{ !  
    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 @ 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{ ! 
    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 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{ !  
  LOOP
  t @ 20 - tov !  
  CR CR ." End of ReJuvenate #" rjc @ . 
  ." in the immortal AI Mind display for science museum exhibits." CR
  ." Tab key cycles through Normal, Transcript, Tutorial, Diagnostic."
  CR
  fyi @ 2 = IF
     200 rsvp !  
  THEN      
  1 kbtv +!
  kbtv @ 0 > IF
 CR ." For lack of human input, ReJuvenate calls KbTraversal" CR
    KbTraversal  
  THEN
  rsvp @ rjc @ - rsvp !  
  rsvp @ 2 < IF 60 rsvp ! THEN  
; 


:  SpeechAct ( output of a word as text or sound ) 
  fyi @ 2 = IF CR THEN  
  0 audstop !   ( 1jan2008 Initially false value of flag )
  0 pho !       ( 1jan2008 Lest pho already be at 32 )
  aud @ onset !  ( the onset of a word is its recall-vector )
  aud @ t2s !    
  40  1  DO   
    t2s @  0  aud{ @ pho !  pho @ EMIT  ( say or display "pho" )
    pho @ 32 = IF 1 audstop ! THEN 
    35 pov !  ( internal point-of-view ASCII 35 "#" like mindgrid )
    AudInput    ( 16oct2008 for reentry of a thought back into the mind )
    audstop @ 1 = IF LEAVE THEN  
    t2s @  1+  t2s !  
    t2s @  4 aud{ @ 0 = IF  32 pho !  THEN ( 1jan2008 If end of word )

    match @ 1 = IF 
      0 match !    
      LEAVE        
    THEN           
  LOOP             
  0 match !       
  0 obstat !  
;  


:  SayYes ( to utter "YES" in response )  
  midway @  t @  DO  
    I       0 en{ @  32 = IF  
      I     6 en{ @  aud !  
      LEAVE  
    THEN  
  -1 +LOOP  
  SpeechAct 
  0 kbquiz !  
  0 yesorno ! 
;  


:  EgoAct ( revive ego after brain-dead flatline )  
  fyi @ 1 > IF CR CR
    ."   Calling EgoAct (AI4U Chapter 20); inert = " inert @ .
  THEN
   0 recon ! 
  0 psi !      
  0 inert !    
  0 recon !
  EEG @ 0 = IF    
  fyi @ 2 = IF
    CR ." Repetitious thought detected; EgoAct module steps in."
  THEN
    vault @ rv !  
      rv @ 0 > IF 
        BEGIN     
          rv @ 0 aud{ @ EMIT  1 rv +!
          rv @ 0 aud{ @ 32 >  
        UNTIL
        CR ." EgoAct module recalls the oldest memory -- "
        rv @ aud !  
        SpeechAct   
      THEN
      0 rv !
     fyi @ 2 > IF   
       CR ."  EGO: EEG = " EEG @ .  ." psi = " psi @ .  
       ." topic = " topic @ .  ." redux = " redux @ .   
     THEN
     redux @ psi !  
     40 nounval !   
     nounAct      
     0 redux !
  THEN
  EEG @ 0 = IF 3 EEG ! THEN  
;


:  EnArticle ( select "a" or "the" before a noun )
nphrpos @ 7 = NOT IF  
  nphrnum @  1 = IF    
    motjuste @ ghost @ = NOT IF  
      midway @  t @  DO  
        I       0 en{ @  1 = IF  
        I     6 en{ @  aud !  
          LEAVE  
        THEN  
      -1 +LOOP  
      SpeechAct 
    THEN  
    motjuste @ ghost @ = IF  
      midway @  t @  DO  
        I       0 en{ @  7 = IF  
          I     6 en{ @  aud !  
          LEAVE  
        THEN  
      -1 +LOOP  
      SpeechAct 
      0 nphrnum !  
    THEN  
  THEN    
THEN 
nphrpos @ 7 = NOT IF  
  nphrnum @  2 = IF    
    midway @  t @  DO  
      I       0 en{ @  7 = IF  
        I     6 en{ @  aud !  
        LEAVE  
      THEN  
    -1 +LOOP  
    SpeechAct 
    0 nphrnum !  
  THEN
THEN
  dirobj @ 1 = IF     
    motjuste @ ghost !  
  THEN
;  


:  NounPhrase ( select part of a thought )    
  0 reject !  
  EnReify  ( to move abstract Psi concepts to EnVocab reality )
  0 act !
  0 aud !  
  0 motjuste !
  5 opt !  
  35 pov ! 
  0 psi !  
  fyi @ 1 > IF CR  
    ."   NounPhrase preview of further associated concepts -- "
    CR  ."     " 
  THEN
  midway @  t @  DO
    I  4 en{ @ 5 =  I 4 en{ @ 7 = OR IF  
      fyi @ 2 > IF  
        I 1 en{ @ 0 > IF  
          CR ."     candidate activation = " I 1 en{ @ . ."  "
          I 6 en{ @ unk !  
          BEGIN
          unk @ 0 aud{ @ EMIT  1 unk +!
          unk @ 0 aud{ @ 32 =  
          UNTIL
          ."                         "  
        THEN    
      THEN      
      I   0 en{ @ 65 = IF I 6 en{ @ audme ! THEN  
      I   1 en{ @  act @ > IF  
        I 0 en{ @  motjuste !  
        I 0 en{ @  subjpsi !  
        I 2 en{ @  nphrnum !      
        I 4 en{ @  nphrpos ! 
        I 6 en{ @  aud !  
        I 6 en{ @  audjuste !  
        dirobj @ 1 = IF  
          motjuste @  50 = IF  
            fyi @ 3 = IF       
              CR ." nPhr: Switching dirobj I to ME"  CR 
            THEN           
            65 motjuste !  
            audme @ aud !  
            audme @ audjuste !  
          THEN           
        THEN             
        fyi @ 2 > IF  
          CR ."     NounPhrase: aud = "
          aud @ . 
          aud @ rv !  
          ." urging psi concept #" motjuste @ . ."  "  
          BEGIN       
            rv @ 0 aud{ @ EMIT  1 rv +!
            rv @ 0 aud{ @ 32 =  
          UNTIL        
          ."  "
        0 rv !  
        THEN    
        I 1 en{ @  act !  
        fyi @ 2 > IF   
          ."  activation = " act @ . CR ."   "  
        THEN
        ELSE   
      THEN     
    THEN       
  -1 +LOOP     
  enDamp
  motjuste @  0 = IF
    midway @  t @  DO  
      I       0 en{ @  54 = IF  
        54 motjuste !
        I     6 en{ @  aud !  
        LEAVE
      THEN
    -1 +LOOP  
    SpeechAct
     300 rsvp !  
    EXIT
  THEN
  act @ nounval !
  nounval @ 3 - nounval !
  act @ 2 < IF      
    motjuste @ 0 > IF  
      1 reject !
    THEN
  THEN
  motjuste @  hipsi !
  EnArticle
  motjuste @ nacpsi !  
  nounAct           
  0 nacpsi !        
  0 nounval !       
  audjuste @ aud !
  SpeechAct   
  32 EMIT     
  fyi @ 2 > IF CR  
  ."   from NounPhrase "
  THEN
  motjuste @ topic !   
  instnum @  topicnum !
  0 act !              
  0 psi  !             
;  


:  ConJoin  
  questype @  16 =  IF  
    18     conj !       
  ELSE  17 conj !       
  THEN
  midway @  t @  DO  
    I       0 en{ @  conj @ = IF  
      conj @  motjuste !
      I     6 en{ @  aud !  
      LEAVE  
    THEN  
  -1 +LOOP  
  SpeechAct 
  0 questype !  
;  


:  BeVerb ( intransitive verbs of being )
   subjpsi @ 50 = IF
     motjuste @ 57 = NOT IF
       midway @  t @  DO  
         I       0 en{ @  57 = IF  
           57 motjuste !  
           I     6 en{ @  aud !  
           LEAVE  
         THEN
       -1 +LOOP
     THEN
   THEN
   subjpsi @ 56 = IF
     motjuste @ 67 = NOT IF
       midway @  t @  DO  
         I       0 en{ @  67 = IF  
           67 motjuste !  
           I     6 en{ @  aud !  
           LEAVE
         THEN
       -1 +LOOP
     THEN
   THEN
   subjpsi @ 52 = IF
     motjuste @ 67 = NOT IF
       midway @  t @  DO  
         I       0 en{ @  67 = IF  
           67 motjuste !  
           I     6 en{ @  aud !  
           LEAVE  
         THEN
       -1 +LOOP
     THEN  
   THEN   
   motjuste @ psi ! 
   verbAct        
   SpeechAct   
   NounPhrase       
;  


:  VerbPhrase ( supervise verb syntax )
  EnReify     
  0 act !     
  0 aud !     
  0 detour !  
  0 motjuste !
  8 opt !  
  0 psi !
  adverbact 32 > IF
    ( EnAdverb )     
  THEN  
  fyi @ 1 > IF CR  
 ."   VerbPhrase preview with slosh-over indicated by + --" 
    CR
 ."   Noun & verb activation must slosh over onto logical direct objects."
    CR  ."    " 
  THEN
  midway @ t  @ DO  
    I      4 en{ @  8 = IF  
      fyi @ 3 = IF  ." VerbPhrase" THEN  
      fyi @ 2 > IF      
        I 1 en{ @ 0 > IF
           CR ."     cand. act = " I 1 en{ @ . ."  "
           ." w. psi seq #"
           I 6 psi{ @ seq ! seq @ . ."  "  
           I 6  en{ @ unk  !  
           BEGIN
           unk @ 0 aud{ @ EMIT  1 unk +!
           unk @ 0 aud{ @ 32 =  
           UNTIL
           ."  w. nodal dir. obj. "  
           midway @ t @ DO  
             I   0  psi{ @   seq @  =  IF  
               I 1  psi{ @ . ." = act "  
               I 7  psi{ @   psi7 !    
               LEAVE                   
             THEN       
           -1  +LOOP    
           midway @ t @ DO  
             I   0  en{ @    psi7 @ = IF  
               I 6  en{ @  rv ! 
               LEAVE    
             THEN
           -1  +LOOP    
           rv @ 0 > IF  
             BEGIN
               rv @ 0 aud{ @ EMIT  1 rv +!
               rv @ 0 aud{ @ 32 =  
             UNTIL        
           THEN
           ."  in VerbPhrase spike = " spike @ . 
           0 rv !    
           ."     "  
        THEN    
      THEN      
      I    1 en{ @  act @ > IF  ( if en1 is higher )
        I  0 en{ @  motjuste !  ( store psi-tag of verb )
        I  4 en{ @  predpos ! ( 29aug2008 grab winning part of speech )
        I  6 en{ @  aud !  ( 27aug2008 auditory recall-vector )
        fyi @ 2 > IF        
          CR ." VerbPhrase: aud = "  
          aud @ . 
          aud @ rv !  
          ." urging psi concept #" motjuste @ . ."  " 
          BEGIN       
            rv @ 0 aud{ @ EMIT  1 rv +!
            rv @ 0 aud{ @ 32 =  
          UNTIL        
          ."  "
          0 rv !       
        THEN
        I  1 en{ @  act !  ( to test for a higher en1 )
          fyi @ 3 = IF CR   
            ."  VerbPhrase: act = " act @ . ."   "  
          THEN
        ELSE
      THEN
    THEN  
  -1 +LOOP
  motjuste @ 57 = IF BeVerb EXIT THEN  
  motjuste @ 66 = IF BeVerb EXIT THEN  
  motjuste @ 67 = IF BeVerb EXIT THEN  
   act @  verbval !   
   0 psi !
   motjuste @ 0 > IF motjuste @ vbpsi ! THEN  
  fyi @ 2 > IF   
    CR ."  VerbPhrase: motjuste = " motjuste @ . ." going into SPEECH."
    CR ."  VerbPhrase: aud = " aud @ . ." going into SPEECH." 
  THEN         
  motjuste @ 0 = IF  
    1 detour !   
    fyi @ 1 > IF  
      CR ."   VerbPhrase: detouring when no candidate-verb is found. "
      CR ."   VerbPhrase: detour value is at " detour @ . 
    THEN
  THEN
  motjuste @ 0 > IF
    act @ 20 < IF  
      1 detour !   
      1 recon !    
      fyi @ 1 > IF  
    CR ."     VerbPhrase: detour because verb-activation is only " act @ .
      THEN
    THEN
    detour @ 0 = IF
    62 caller !      
    psiDamp
    motjuste @  hipsi !
    fyi @ 2 > IF    
      CR ."  VerbPhrase: lopsi @ hipsi = " lopsi @ . hipsi @ . 
    THEN            
    motjuste @ psi ! 
    verbAct          
      SpeechAct      
    THEN             
  THEN               
 detour @ 0 = IF     
  10 act !  
  fyi @ 2 > IF CR    
  ."   in VerbPhrase after SpeechAct output of verb" 
  THEN
  fyi @ 2 > IF CR
  ."   from VerbPhrase after speaking of verb, psiDamping #" motjuste @ .
  THEN
  motjuste @  urpsi !  
  22 residuum !  
  62 caller !
  0 caller !     
   2 residuum !  
  enDamp     
  32 EMIT        
  15 residuum !  
  1 dirobj ! 
  fyi @ 2 = IF
  CR ."          VerbPhrase calls NounPhrase for object of sentence." CR
  THEN
  NounPhrase
  motjuste @ 0 > IF motjuste @ dopsi ! THEN  
  0 dirobj !     
  2 residuum !   
 THEN
  fyi @ 2 > IF     
  CR ."   VerbPhrase end: detour = " detour @ . 
  THEN
;  


:  AuxVerb ( auviliary Verb )
  midway @  t @  DO  
    I       0 en{ @  59 = IF  
      59 motjuste !
      I     6 en{ @  aud !  
      LEAVE  
    THEN  
  -1 +LOOP  
  SpeechAct 
  fyi @ 2 > IF CR  
  ."   from AuxVerb after speaking of DO, psiDamping concept #59 DO"
  THEN
  59 urpsi !  
  51 caller ! 
  psiDamp  
  0 caller !
;  


:  NegSVO ( negation of Subject + Verb + Object )  
  fyi @ 1 > IF CR  
    ."     Calling NegSVO (AI4U Chapter 10)." CR
  THEN
  123  t @  2 aud{ !  
  NounPhrase  
  32 pho !  
  auxVerb   
  midway @  t @  DO  
    I       0 en{ @  12 = IF  
      12 motjuste !  
      I     6 en{ @  aud !  
      LEAVE  
    THEN
  -1 +LOOP 
  SpeechAct  
  VerbPhrase
  125 t @ 1+ 2 aud{ ! 
  1   t +!  
  1 spt +!  
  enDamp
  audDamp
  5 bias !  
;


:  WhatAuxSDo ( What DO Subjects DO )
  PsiDecay
  midway @  t @  DO  
    I       0 en{ @  54 = IF  
      54 motjuste !  
      I     6 en{ @  aud !  
      LEAVE  
    THEN  
  -1 +LOOP  
  SpeechAct 
  fyi @ 2 > IF CR  
  ."   from WhatAuxSDo after speaking of WHAT, psiDamping concept #54"
  THEN
  54 urpsi !  
  42 caller ! 
  psiDamp  
  0 caller !
  auxVerb   
  0 motjuste !  
  midway @  t @  DO  
    I       0 en{ @  topic @ = IF  
      topic @ motjuste !   
      I     6 en{ @ aud ! 
      LEAVE
    THEN     
  -1 +LOOP  
  motjuste @ urpsi !   
  15 residuum !  
  42 caller !    
  psiDamp        
  1 caller !     
   2 residuum !
  SpeechAct  
  midway @  t @  DO  
    I       0 en{ @  59 = IF  
      59 motjuste !  
      I     6 en{ @  aud !  
      LEAVE  
    THEN  
  -1 +LOOP  
  SpeechAct 
  fyi @ 2 > IF CR  
  ."   from whatAuxSDo after speaking of DO, psiDamping concept #59 DO"
  THEN
  59 urpsi !  
  42 caller ! 
  psiDamp     
  0 caller !
  psiDecay    
;  


:  WhatIs ( what IS Subjects )
  PsiDecay
  midway @  t @  DO  
    I       0 en{ @  54 = IF  
      54 motjuste !  
      I     6 en{ @  aud !  
      LEAVE  
    THEN
  -1 +LOOP  
  SpeechAct 
  fyi @ 2 > IF CR
  ."   from WhatIs after speaking of WHAT, psiDamping concept #54"
  THEN
  54 urpsi !
  psiDamp     
  0 caller !
  topicnum @ 2 = NOT IF
    midway @  t @  DO  
      I       0 en{ @  66 = IF  
        66 motjuste !  
        I     6 en{ @  aud !  
        LEAVE  
      THEN  
    -1 +LOOP  
    SpeechAct 
    fyi @ 2 > IF CR  
    ."   from WhatIs after speaking of IS, psiDamping concept #66"
    THEN
    66 urpsi !
    PsiDamp     
    0 caller !  
    0 motjuste !  
  THEN
  topicnum @ 2 = IF
    midway @  t @  DO  
      I       0 en{ @  67 = IF  
        67 motjuste !  
        I     6 en{ @  aud !  
        LEAVE  
      THEN  
    -1 +LOOP  
    SpeechAct 
    fyi @ 2 > IF CR  
    ."   from WhatIs after speaking of ARE, psiDamping concept #67"
    THEN
    67 urpsi !  
    psiDamp     
    0 motjuste !  
    0 topicnum !  
  THEN  
  midway @  t @  DO  
    I       0 en{ @  topic @ = IF  
      topic @ motjuste !   
      I     6 en{ @ aud ! 
      LEAVE
    THEN     
  -1 +LOOP  
  motjuste @ urpsi !   
  15 residuum !  
  PsiDamp        
   2 residuum !
  SpeechAct  
  PsiDecay   
;  


:  AskUser ( selector of question formats )  
   fyi @ 1 > IF       
     CR ."     AskUser calls a question-module." 
   THEN 
   WhatIs      
   0 recon !   
;


:  EnglishCog ( one of several possible languages ) 
  0 morphpsi !  
  0 psi !    
  0 sublen !
  t @ tov ! 
  fyi @ 2 > IF      
  CR ."   EnglishCog start: detour @ recon = " detour @ . recon @ . CR
  THEN  
  yesorno @ 0 > IF
    SayYes        
    CR  
    EXIT  
  THEN   
  recon @ 1 = IF    
    fyi @ 2 = IF    
      ."     EnglishCog calls the AskUser module. " CR
    THEN            
    AskUser         
    0 recon !       
    ELSE            
    jux @  12 = IF  
      negSVO        
      ELSE
      fyi @ 2 = IF  
        ."     EnglishCog starts to think a sentence. " CR 
      THEN
      CR ." Robot: "
      123  t @  2 aud{ ! 
      NounPhrase
      nphrpos @ DUP 5 = SWAP 7 = OR IF  
        VerbPhrase  
        0 nphrpos ! 
      THEN  
    THEN            
  THEN              
  recon @ 1 = IF    
    fyi @ 2 = IF    
      CR ."   English calls Ask to increase the AI knowledge base."
    THEN            
    AskUser         
    0 recon !       
    0 detour !      
  THEN              
  fyi @ 2 > IF      
  CR ."   ENGCOG end: detour @ recon = " detour @ . recon @ . CR 
  THEN          
  5 bias !
;  


:  ThInk ( 8may2009 wiki-page form of module name )
  0 ordo !
  35 pov !  
  EnglishCog  
  fyi @ 1 = IF CR THEN  
  0 recon ! 
  0 ordo !
;  


:  MotorOutput ( stub for volitional control of actuators in robots )
   7 EMIT       
 ( MOVE_FORWARD   ) 
 ( MOVE_BACKWARDS ) 
 ( STOP_MOTION    ) 
 ( TURN_LEFT      ) 
 ( TURN_RIGHT     ) 
;  


:  TuringTest ( Human-Computer Interaction )
  fyi @ 0 = IF CLS CR CR CR CR CR CR CR
    t @ 300 < IF CR  
 ." There is no warranty with Mind.Forth AI Engine 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 @ . ." rsvp = " 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 !  
; 


:  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
    61 rsvp !   
    ReJuvenate  
  THEN
  t   @  1024 > IF  
    t @  1024 -  midway !  ( for a range limit on searches )
    ELSE
    1   midway !    
  THEN
  0 quiet !  
;  


:  MainLoop  ( changed from ALIFE to MainLoop for wiki doc page )
  TIME&DATE byear ! bmonth ! bday ! bhour ! bminute ! bsecond !
  TabulaRasa   
  EnBoot       
  BEGIN        
    SeCurity   
    fyi @ 2 = IF CR  
    ." MainLoop calls the SensoryInput module." CR  
    THEN          
    SensoryInput
  ( EmotiOn )  
    fyi @ 2 = IF CR  
    ." MainLoop calls the CogitoErgoSum mind-module." CR  
    THEN
    ThInk          
  ( FreeWill ) 
  ( MotorOutput ) 
  AGAIN        
; 


:  ALIFE  ( Call MainLoop if user does not know to enter MainLoop )
  MainLoop  
;
Hosted by Google Code