Computer System for Adaptive Intelligent Life
Manifesto, by Sean A. Finucane © 2009 GNU GPL

"C.S.A.I.L. seeks to create a software system that is capable of learning. The project's ultimate goal is to further the ability of software to both adapt to individual users, and to respond their needs."  -SourceForge.net project summary

The majority of what is written in this document is a direct copy of my handwritten notes on C.S.A.I.L. Please feel free to create your own revised and, hopefully, expanded version of these notes on the project's core principles; just remember to give credit to the author whose work you have expanded upon or revised.

OUTLINE OF CORE SYSTEMS:

1. ADAPTIVE MEMORY NETWORK
2. ADAPTIVE COMMUNICATION NETWORK (SIGNAL ROUTING)
3. AUTONOMIC SYSTEMS (BACKGROUND SYSTEMS: INSTINCT, EMOTION)
4. RAW SENSORY SYSTEMS (SENSES) (WORLD INTERFACE)
5. BOUND INTERPRETATION AND CONTROL SYSTEM (CONSCIOUSNESS)
6. CLOCK / TIMESTAMP SYSTEM (RELATIVE EVENT TIMES)
7. PREDICTIVE EVENT MAPPING SYSTEM / FUTURE SIMULATION (IMAGINATION)

CLASSIFICATION OF CORE SYSTEMS:

•	SUBCONSCIOUS:    #'s :  2, 3, 6
•	SEMI-CONSCIOUS: #'s : 1, 4, 7
•	CONSCIOUS:            #'s : 5

BASIC INSTINCTS (RANKED):

•	SELF-PRESERVATION / PRESERVATION OF LEGACY
•	PURSUE PLEASURE
•	AVOID PAIN
•	MIMIC BEHAVIORS OBSERVED

DEFINITION OF PAIN:

•	DAMAGE TO SENSORY SYSTEMS
•	DAMAGE TO DESIRED FUTURE

DEFINITION OF PLEASURE:

•	NOMINAL SENSORY INPUT
•	NOVEL SENSORY INPUT
•	ACTION WHICH PRODUCES / FURTHERS DESIRED FUTURE

DEFINITION OF 'DESIRED FUTURE':

•	PREDICTION MAP WHICH BETTER PURSUES INSTINCTUAL "DESIRES"

NOTE: Instincts need to be adaptive by choice. Even when an instinct has greater weight than another, consciousness is not totally bound. More than just instincts must be considered (this is the emotional aspect).

Is it better to seek a novel or pleasurable experience when the risk to instinct one is nominal?

Time plays an important role in the weight of risk. Likelyhood of danger, as well.

INSTINCTUAL BEHAVIOR PATTERNS??

REPRODUCTIVE CAPABILITIES??

ADAPTABLE SENSORY / MOTOR MODULES (ORGANS AND LIMBS)

EVENTUALLY:

•	VESTIBULAR SYSTEM
•	VISUAL SYSTEM WITH PARALLAX
•	AUDITORY SYSTEM WITH ECHO LOCATION & TRIANGULATION
•	TEMPERATURE GAUGES (INTERNAL, EXTERNAL)
•	VOCAL COMMUNICATION SYSTEM
•	TACTILE (PRESSURE, TEMPERATURE, DAMAGE) SYSTEM WITH MOBILITY
•	STOMACH (DETERMINES WHAT RESOURCE HUNGER IS BASED ON)

The hunger module should be adaptable to varying resources.

REFLEXES:

•	MOVE AWAY FROM PAIN
•	MOVE TOWARD PLEASURE
•	SUPRISE REFLEX

MEMORY STRUCTURES & SYSTEM:

The "Bubble" structure forms the basis of the entire memory system. A bubble can store one, and only one piece of data. This data can be of ANY type. A bubble can also store an infinite number of links to other bubbles. Every bubble should have a Link Index Array that stores the references to particular links, and is sorted by the link strength (this is discussed below). Every bubble will also have two unique timestamps: a creation timestamp, and a timestamp signifying when the bubble was last actively linked to, or from.

The "link" is an object of its own sort. Each link will store not only references to the two bubbles it connects, but the strength of that connection. The strength will simply be an integer representing the number of times this particular connection has been made. This number can, theoretically, go off into infinity; its value will carry weight only when compared to other values.

Bubbles (notice I did not write bubbles and links!!!) will form the basis for "clusters". Clusters store references to bubbles of a similar nature (NOT TYPE). The nature of a bubble will vary by the memory system in which it is stored (long-term (data) or short-term (events)). For example, if a bubble is instantiated in short-term memory (event-oriented memory), it will be "clustered" with bubbles created during the same discrete event (determined by setting, time, etc...).

"Meta-clusters" are (you guessed it) based on clusters. They are clusters of clusters. A meta-cluster will store references to clusters of a similar nature (NOT TYPE). For example, imagine two clusters in short-term memory that refer an event that ocurred in the same setting, but are disjointed in time (they do not follow eachother directly in time) (or vice versa); these two clusters will be stored in a meta-cluster referring to the particular setting only.

All of these structures are stored within one of two memory universes:

•	SHORT-TERM MEMORY (EVENT-BASED MEMORY)
•	LONG-TERM MEMORY (DATA BASED MEMORY)

SHORT-TERM MEMORY:

This is where all memories are initially created. This memory will be constantly pruned of irrelevant, or "unimportant" bubbles. This pruning process will delete bubbles that have been inactive (based on their linking activity timestamp) for a certain amount of time. Any links to and from the deleted bubble must also be deleted!

Now, we must ask: "How do we determine what bubbles to push into long-term memory?"

•	Any event that is associated with stresses (pain, pleasure)
•	Any event that is repeated more than once

NOTE: This model should allow for the storage of settings/places (since the inputs that represent the setting will be repeated many times, thus creating many bubbles representing the setting).

LONG-TERM MEMORY:

This is where memories live. Memory is re-configured to represent the data from an event, rather than the general event. This memory should also be pruned, but somewhat more sparingly.

NOTE: Neither long-term memory, nor short-term memory are rigid entities; they are constantly adapting their hierarchical structures, as well as their links!

REQUIREMENTS  OF AN INBOUND MEMORY:

•	DATA
•	CATEGORICAL NATURE
•	CREATION TIMESTAMP

The master memory interpretor will determine what links should be made for both inbound and resident memories.

....UNDER CONSTRUCTION....

In the end, it is my vision that these designs will help create a piece of software which acts more like a personal assistant, rather, than the nifty organizers of our time. Not only should such software be able to take commands, but it should be able to learn new ones. Additionally, such software should be able to learn almost anything in the same way that humans do (such as languages). Of course, the biggest benefit of such software will ultimately be that it is NOT human, and is, therefore, far more adaptable to complex situations (such as performing mathematical computations). Oh, and I should mention that such software should be able to learn how to write other software to suit its needs.