2

Hi there I'm trying to establish a Search Plan using Golog, I've written out the necessary primitive actions, but I'm stuck on bridging the gap on writing complex actions in golog.

For example, I want to be able to write out a series of moves an agent has to make.

Currently I'm hard coding these moves as follows:

proc(goToLoc(dest),
   go(start,next1) :
   go(next1,next2) :
   go(next2,dest)
).

As the designer I know that these moves will be valid and therefore do(goToLoc(dest),s0,S) will pass. What I want to do is rewrite this complex action to be able to accept any variable, I've tried and I think it needs to be recursive in some fashion, but I'm stuck on how do I assign the value from the recursive call?

proc(goToLoc(L),
   if(some(a, location(a) & -(a=L)),
      pi(a, ?(location(a) & -(a=L) : go(a, L)) : goToLoc(a)),
      ?(true)
   )
).

I could be way off, but the state doesn't seem to be changing when I call the proc recursively, and I'm not even sure if I've provided enough information... since there are a bunch of axioms I'm using to establish a relationship between start next1 ... dest but essentially I'm just looking for something conceptual on how I can represent a chain of actions within Golog.

Elliott de Launay
  • 1,027
  • 13
  • 31

0 Answers0