CSE150 LECTURE NOTES

February 10, 2004
 
 

ANNOUNCEMENTS

The deadline for the current project is Friday this week, in section at 2pm.  

  

REASONING ABOUT ACTIONS AND THEIR EFFECTS

The traditional ontology for reasoning about action is called the situation calculus and is due to John McCarthy of Stanford.  It involves three basic categories: States, fluents, and actions can be represented by FOL terms built from constant-symbols and function-symbols:

We use a predicate named holds to connect fluents with states. For example:

holds( ontopof(a,b), do(s_0, stack(a,b)) )

 

THE YALE SHOOTING PROBLEM

This is a standard example domain used in research on reasoning about action.  It is simpler than the blocks world, and called the Yale shooting problem because it was invented by Steve Hanks and Drew McDermott of Yale.  There are Note that, because it is a single specific example, the Yale shooting problem is really a problem instance.

Some obvious axioms for this world are:

forall s holds(loaded,do(load,s))
forall s holds(loaded,s) -> holds(dead,do(s,shoot))
forall s holds(loaded,s) -> ~holds(alive,do(s,shoot))
forall s holds(loaded,s) -> ~holds(loaded,do(s,shoot)).
Unfortunately, the axioms above have many undesired models.  In order to eliminate these, we must state many more axioms.  Most of these additional axioms are about actions not changing the truth of fluents.  For example:
forall s holds(alive,s) -> holds(alive,do(s,load))
forall s holds(alive,s) -> holds(alive,do(s,wait))
forall s holds(alive,s) & ~holds(loaded,s) -> holds(alive,do(s,shoot))
and many more.

In general, one axiom is needed for each pair of an action and a fluent, to state whether or not the action changes the fluent.  Intuitively, we should only need to write down an axiom when an action does change a fluent, not otherwise. 

 

THE FRAME PROBLEM AND A SOLUTION

In general, with a different actions and e fluents O(ae) axioms are needed.  Intuitively, only O(a+e) axioms should be needed.  The notorious frame problem is to escape the predicament of having to state so many axioms that should somehow be true by default.

One solution is as follows.  We use three basic predicates: "holds", "causes", and "cancels", and we formalize some commonsense knowledge:
``A fluent holds in the state resulting from an action  if and only if the action `causes' the fluent, or the fluent  held before the action, and the action does not `cancel' it.''
In first-order logic, this knowledge is written as
forall a,s,p holds(p,do(s,a)) <-> causes(a,s,p) \/
                                    [ holds(p,s) & ~cancels(a,s,p) ]
Only two more axioms are needed to describe the Yale shooting world:
forall a,s,p causes(a,s,p)    <->
       [ a=load & p=loaded] \/
       [ a=shoot & p=dead & holds(loaded,s)]

forall a,s,p cancels(a,s,p)    <->
       [ a=shoot & p=alive & holds(loaded,s)] \/
       [ a=shoot & p=loaded & holds(loaded,s)]