Originally, ATOM (Automated Theory of Mind) was intended to be a rule-based simulation of how people form intentions from goals, beliefs, and other states. It also aimed to model how people monitor their progress on intentions. It was to be implemented in Prolog (for the agent reasoning parts) and in Java (for simulated physical environments for the agents, and for generating graphical views). The Prolog portion would require infrastructure that isn't built-in to Prolog in order for unit-testing to be possible, and we need automated testing for the ever-larger chunks of reasoning that each agent will be designed to do. Such tests require tight control of initial conditions, such as the environment, and the plan was that, eventually, the Prolog unit-tester would be integrated with a parent TestNG tester in Java.  At this point, ATOM is an inference engine capable of both backward and forward-chaining, and of maintaining a trace of its reasoning. Such traces are used to verify the reasoning, and this aspect of the original design was achieved. However, the objective to simulate attributions of mental states, particularly now when we have chosen to use simple animations like Heider and Simmel's (1944), appears to require an ability to propagate constraints before committing to var bindings. For constraint propagation, we are moving away from Amzi Prolog (which nonetheless has the best Prolog debugger I've seen) to ECLiPSe which is another flavor of Prolog whose primary use is constraint propagation and which has an active user base that includes AI researchers.  We plan to continue using ATOM as the core reasoning engine of the Wayang project, which is ECLiPSe-based and has already been embedded in Java (allowing for integrations such as Adobe SWF-parsing, visualizations, and the TestNG testing framework). --David Pautler 2009-12-04