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.