CSA: I did a lot of research on Prolog and Prolog-related topics. The bottom line is that it's probably not directly relevant for our project: what we really need is an incremental planner or a truth maintenance system, not a backtracking solver. Prolog doesn't come with any magic bullets to answer the "now what goals have their preconditions satisfied" question, which is at the core of a UNIVERSE-style storytelling system.
Datalog might still be interesting as a data model for "avatar services".
- Prolog Syntax and Semantics from wikipedia.
- Logtalk (wiki) -- the object oriented features provide a good encapsulation mechanism for a prolog-style language. It also supports "event-driven programming"; I can't tell if that would help one construct a truth maintenance system (ie, track dependencies) or not.
- Would be interesting to port Logtalk to run on top of Yield Prolog, although I'm not sure how useful the result would be. Seems like a rather esoteric tower to build software for kids with.
- The DCG operator '-->' appears to be unimplemented.
- Warren's Abstract Machine (wiki) -- underlying virtual machine for many early Prologs. Worth digging through to get an idea of how Prolog is implemented.
- Pyke is an implementation of Prolog ideas for Python. I'm not thrilled with this; the embedding doesn't seem very elegant. Here's a brute-force (ie, "the wrong way to do it") solution to the Towers of Hanoi puzzle in Pyke: http://pyke.hg.sourceforge.net/hgweb/pyke/pyke/file/cc6970acfcf1/examples/towers_of_hanoi/towers2.krb
Truth Maintenance / Planners
Problem Solving and Truth Maintenance Systems: a reasonable overview.
- Pfc, "a package for forward chaining in Prolog". This supports truth maintenance as a nicely-integrated prolog library.
- A discussion of how forward-chaining, backward-chaining, and live queries have been implemented in the Drools system for Java.
- Lebowitz, Michael. “Creating Characters in a Story-Telling Universe.” Poetics 13: (1984) 171–194.
- Lebowitz, Michael. “Story-telling as planning and learning.” Poetics 14: (1985) 483–502.
- Lebowitz, Michael. “Planning Stories.” In Proceedings of the Ninth Annual Conference of the Cognitive Science Society, Seattle WA. 1987, 234–242.
- GrandTextAuto had a series of blog posts on UNIVERSE, comparing it to MINSTREL and getting some information directly from the author. (Be sure to click through to the five earlier linked posts on UNIVERSE.)
Natural Language Processing
- An adventure game in Logtalk: http://trac.logtalk.org/browser/trunk/examples/adventure/sleepy.lgt
- Another adventure in standard prolog, presented as a tutorial: http://www.amzi.com/AdventureInProlog/advtop.php (final code in http://www.amzi.com/AdventureInProlog/appendix.php if you're impatient)