개는 동작을 수행 할 수 있습니다. walk on floor; 상자에 올라 타십시오 (상자에 이미있는 경우). 고기 밑의 상자에 서 있으면 고기를 잡으십시오.
swish_trace : (: -B A)가 '에서 연결할 존재하지 않는 swish_call ((시작 : -canget (상태 (atdoor, onfloor 내가 아래의 코드를 실행하지만, 그러나 나는 오류프롤로그 코드가 SWISH에서 작동하지 않음
절차를`수 , atwindow, hasmeat)))) '$ 휙 래퍼'((시작 :))), atwindow, hasmeat을 -canget (상태 (atdoor를 onfloor, A)
move(state(middle,onbox,middle,has_no_meat),state(middle,onbox,middle,has_meat)).
/*climbing the box*/
move(state(middle_floor, onfloor, middle_floor,has_no_meat), climb,
state(middle_floor,onbox, middle_floor,has_meat)).
/*pushing the box to the middle of the room*/
move(state(atwindow,onfloor,atwindow,has_box),
push(atwindow,middle_floor),
state(middle_floor,onfloor,middle_floor,has_box)).
/*dog walks from the door to the window*/
move(state(atdoor,onfloor,box,has_not), walk(atdoor,atwindow),
state(atwindow,onfloor,box,has_box)).
canget(state(_, _, _, has_meat)).
canget(State1) :- move(State1, Move, State2), canget(State2).