Ryan Mitchley wrote:
Hi Thiago
I think there used to be a Squeak Prolog somewhere, but I'm not sure where it went or if it's compatible with the current images (I'm pretty new to Squeak myself). That could certainly form the basis of an expert system in Squeak.
There is a Squeak prolog version here: http://wiki.squeak.org/squeak/1000
Karl
There's a Prolog interpreter written in OMeta (http://www.cs.ucla.edu/~awarth/ometa/ometa-js/prolog.html) and JavaScript, desribed in the "STEPS Toward The Reinvention of Programming" paper (http://www.vpri.org/pdf/steps_TR-2007-008.pdf). It shouldn't be too hard to turn those into working Squeak code.
Of course, vanilla Prolog is lacking some features that would make it useful for general purpose AI, e.g. reasoning under uncertainty, notions of time and sequence, constraints. I think the idea of classes simplifies reasoning under uncertainty, since they make the dependence amongst rules and terms much more explicit (solving the "frame problem" to some extent... i.e. the normal problem with Bayesian reasoning is that joint probabilities grow exponentially with the size of the system being modeled).
I hope someday to spend some time implementing a kind of Agent oriented AI, where an Agent is defined as an object with goals, knowledge, and means to achieve those goals using that knowledge. Learning involves the assertion and retraction of meta-knowledge... (I think it was the extremely interesting SOAR project that viewed learning as chunking - i.e. learning is simply a way of pruning the search tree through the use of inferred meta-productions). The reflective and meta-programming features of Smalltalk makes collaboration amongst agents much easier - since agents can describe their own abilities (I guess methods and behaviours).
This is, of course, if you're on the symbol-processing side of the AI fence... (although, it's interesting to note that neurons and rules have a similar N-in, 1-out structure. I like to think of a rule base as converged neural network :)
Anyway, I just need to get rid of my full-time engineering job so that I can actually explore these ideas someday!
Ryan