initiates(exec(move(R,X,Y)),at(R,Y),T):- connected(X,Y), holds_at(at(R,X),T), holds_at(status(battery(R),L),T), L > 0. terminates(exec(move(R,X,Y)),at(R,X),T):- holds_at(at(R,X),T), connected(X,Y). initiates(exec(move(R,X,Y)),status(battery(R),L),T):- holds_at(status(battery(R),Lold),T), Lold > 0, L is Lold - 1, connected(X,Y), holds_at(at(R,X),T). terminates(exec(move(R,X,Y)),status(battery(R),Lold),T):- connected(X,Y), holds_at(at(R,X),T), holds_at(status(battery(R),Lold),T), Lold > 0. initially(at(rob,room1)). initially(status(battery(rob),10)). connected(room1,room2). connected(room2,room1). connected(room2,room3).