Inference Associative Memory (IAM)

When Inference Associative Memory (IAM) is run on multiple computer systems, each system running identical versions of the same executable program, and provided with identical input, may provide various outputs without the use of any randomness function.

IAM stores information, and retrieves information, from multi-dimensional memory arrays, that are associated in all possible axises from any given node (typically a byte) in a time organized multi-dimensional crosstich manner. The number of array dimensions determines the number of axis points in which an association is made. Typically, in a 3-dimensional array, this would allow for 26 possible associations to each node element.


IAM consists of multiple input functions known as "accepters" and akin to sensory inputs.  These "accepters" make up the basic building blocks used to gather information from various sources and populate - through association, the various multi-dimensional arrays.

There are no constraints placed upon the number or type of accepters.

In pseudo-code an accepter simply looks like this:

while state == awake
        read input >> output_array
done < source

This simplified pseudo-code loop gathers input (read input) from a "source" (source) and appends (>>) it to a 2-dimensional output_array or Short Term Memory (STM) array. All inputs from all accepters are added to the end of this STM array.  

While the "accepters" are gathering information, an "associator" is also active trying to associate and remove items from the STM array.  Once a successful association has been made, or a new association has been created, items are removed from the STM array. The associations are being made between the STM 2-dimensional array and a 3-dimensional memory array. The consequesnces of this are that the 2-dimensional array islikley to fill up quickly if all the nodes in the 3-dimensional array need to be searched for a fit. The "fit" is accomplished using a time-orered first-fit algorithm. Since the associator (or even multiple associators) cannot keep up with the input, the STM array will eventually become full. When the last element in the STM  array is filled, a check is made to see if  the first element in the array is empty.  This would indicate that an association has been made and an item has been removed from the STM array.  If the first element is empty, the newly accepted information is entered at this location, and subsequent accepter input is written beyond this new starting point assuming there are locations that have been vacated by an associator.

If there are no elements available in the STM array, input from all "accepters" is suspended and a "sleep" phase is entered. During this "sleep" phase all items in the STM array are removed as they are "associated".  (see SLEEP MODE). Once all items have been associated, or a "WAKE" signal has been received, the "accepters" are signalled to awaken and begin gathering information.

Eventually all of the STM array information will be associated and stored in a 3-dimensional (or more) memory array.  A best-fit first-fit algorithm is used in conjunction with Einstein's algorithm for locating objects within 3-dimensional time-space to store information within the array.  The easiest way to describe and understand the storage methodology is to imagine a 3-dimensional crosstich.  For instance, imagine that the system accepts the following text in chronological order:

The rat

The dog

The horse

The next piece of information to be accepted is the "red house".  The memory association may now look like this:

The rat
The dog

The horse

If the next piece of text entered was the word "hog" it may be associated  as:

The rat
The dog
The horse
       o g

Notice that if the order of acceptance was changed in any way that the association of the words "red house" and "hog" may not take place at these same indices.   The order in which information is obtained and initially associated determines all future associations.  

IAM has the ability to store and associate all forms of binary input utilizing this same methodology though a single byte may not be the optimal index to create a node from.  

Due to the unique bit strings associated with various types of binary input (audio, video, text, etc.) memory location selection is automatic and a natural result of this methodology.  In the above example, the word "The " would only be stored once, and the words "rat", "dog" and "horse" would be stored on an axis point off of "The ".  The ability to "reuse" memory indices makes for an extraordinarily efficient memory utilization.  Also notice that all future associations are determined, in part, by all prior associations.  Consequently, the order and time in which information is stored by an associator vary from system to system not only when it is stored, but also when a retieval association is made.

The ability to store and access information in this manner makes this system suitable for voice and image storage, recognition and matching.  Input of audio and visual information from dual or stereo sources will provide different results than mono sources of information.

Since the bit patterns received from both sources, if utilizing stereo or redundant input streams, will likely be similar to one another, there is relatively little additional processing power required to do the associations.

Additionally, the duplication and redundancy of these input sources provides for a backup in case of the failure of one of the sources.  As an example, the IAM system would still operate somewhat normally with only 1/2 of it's visual inputs or audio inputs.  With a complete loss of video input it would be possible to store, retrieve and associate more audio sensory information. In effect enhancing the remaining sensory inputs.  Similarly, a loss of all audio inputs may enhance the video processing capabilities.


During "sleep mode" the priorities of all accepters is lowered, and the priority of the associators are raised.  Accepters will not add anything to the STM array during this state unless or until a "WAKE" interrrupt is processed.  The primary responsibility of the associator during this phase is to clear the 2 dimensional STM array.  This procedure involves processing every element in the STM array and finding or creating an association in the multi dimensional Intermediate Term Memory (ITM) array.

When this state is entered the associators attempt to take each element in the 2 dimensional the STM array and locate it as a branch off of existing 3 dimensional indice in the ITM array - again using a first-fit, time ordered algorithm.  If an existing association cannot be located, a new node is created at the first available memory location where it will fit, using Einstein's equation to chronologically create a new axis point. It should be noted that an association of new information may be possible utilizing this methodology that is actually located at an axis point off of a very early node.  In essence this could make new information more readily accessible than older information.  It also has the implications that some new information may be more difficult to digest since it is placed farther in memory.  These associations may change during DREAM MODE. Every node in every multi-dimensional array is available as new indice.

Once the STM array elements have been cleared, another associator begins its task of associating all muli dimensional elements in the ITM array, to the much larger multi dimensional Long Term Memory (LTM)  array.  In a 3 dimensional memory array it is possible to have 26 indices from any piece of information.  Beyond 26, a new origination node point must be constructed somewhere in chronological order in available memory.  The purpose of maintaining a smaller ITM array and a separate 3 dimensional LTM array is to allow for more rapid associations during AWAKE MODE.  A subtle side benefit of this configuration is that the SLEEP MODE associations may "enhance" ITM for quick recognition and retrieval of information when the next AWAKE MODE is begun.  Processes remain in this mode until all of STM has been associated, and ITM has been fully associated with LTM.


During DREAM MODE the multi dimensional memory array LTM is associated with an even larger multi dimensional memory array known as archival memory (AM). AM continues to grow the entire time the program is executed. Mass storage devices are suitable locations for AM to reside. STM, ITM, and LTM have finite lengths based upon available computer resources (i.e. RAM), and for speed considerations should be located in Random Access Memory (RAM) or other suitable devices.

The association process between LTM and AM is the same as the associations made between the ITM array and the LTM array.  The difference being that the AM array contains the "oldest" and "least accessed" information. Since this information is old and has already been through numerous prior associations it is likely that the associations made have little or nothing to do with current information. The ITM array is updated/enhanced with information from the LTM array during SLEEP MODE.  During DREAM MODE, the LTM array is updated/enhanced with information from the AM array.

DREAM MODE may also be entered when the STM array is void, and/or unable to fill with information after successive attempts, or when STM becomes stagnant.

The table below lists the functions performed by each module for a given state.

AWAKE Accepter(s) Maintains STM array - accepts as much input as possible (chronological order) High
AWAKE Associator(s) Maintains ITM by attempting to associate STM elements Medium
AWAKE Inference Generator(s) Attempts to update ITM with associations from LTM.  Associated elements are added to LTM. Low
SLEEP Accepters(s) Runs in interrupt state.  No additions are made to STM. If interrupted AWAKE MODE is entered. Idle
SLEEP Associator(s) Associates all elements in STM with ITM.  Associates all elements of ITM with LTM. High
SLEEP Inference Generator(s) Attempts to find new associations between ITM and LTM and updates ITM with newest associations. Medium
DREAM Accepters(s) Runs in interrupt state.  No additions are made to STM. If interrupted AWAKE MODE is entered. Idle
DREAM Associator(s) Runs in interrupt state. If interrupted AWAKE MODE is entered. Idle
DREAM Inference Generator(s) Associations of LTM and AM takes place. Duplicate information causes the information to be moved to a "closer" location in LTM.  If the insertion of these newly associated elements overflows LTM, the overflow items are inserted at the beginning of AM forcing all older elements back.  Upon completion or interruption, AWAKE MODE is entered. High

Inference Generation:  Though it may seem intuitively obvious, inference generation is simply an association in reverse.  This means the coding necessary for this entire system is EXTREMELY compact and just a few small modules are all that is needed to associate various arrays as well as populating the arrays.