Tuesday, July 20, 2010



GOLOG sounds similar to your idea of encoding actions in the logic.

There are 2 types of terms:  fluents and actions.

Examples of fluents are:

Fluents evaluates to true or false.  For example At(room1) = true.

Examples of actions are:
eg, Go(up),  Pick(package1, bag1).

And a GOLOG program can consist of these statements:

These statements can be combined with regular Prolog statements to create a new type of programming, but I'm not sure if it includes automated planning. (Will update later when I finish the lecture notes, Action Programming Languages by Thielscher, 2008).


  1. YKY,

    Yes, this bears some similarity to my proposal... this general scheme is really quite simple, and has sprung up a number of times, but with interesting differences.

  2. I don't see a strong similarity. But I don't know how the little "WHILE language" you cite is integrated with the Prolog part (and the "IO monad" ;-) )

  3. My latest thinking is that inference should NOT be mixed with planning, and the KB should represent actions explicitly, ie, actions are just terms that can be reasoned about; inference rules should NOT directly trigger actions.

    This way, the inference engine is about PURE reasoning.

    Why I opt for this approach, is the observation that planning is just a special way of answering "how" questions. When Genifer asks "how can I (Genifer) achieve this goal?" she is performing planning; but Genifer can also ask, eg: "how can the monkey get the banana?" (ie, planning for others).

    Genifer can even ask "how did the American economy get to be like this?" which is not really a planning problem, but the mechanism to search for the answer is a generalization of planning.