내가 정의 내 지식 기반과 같이 프롤로그 잘라 운영자
?- swim(simba,bybirth).
?- swim(simba,mustlearn).
그리고 쿼리 모두
는 프롤로그가 true를 돌려 : 이제edge(mammal,isa,animal).
edge(human,isa,mammal).
edge(simba,isa,human).
edge(animal,swim,bybirth).
edge(human,swim,mustlearn).
path(X,Y) :- edge(X,isa,Y).
path(X,Y) :- edge(X,isa,Z), path(Z,Y).
swim(X,Y) :- edge(X,swim,Y).
swim(X,Y) :- path(X,Z), swim(Z,Y).
, 위의 지식 기반을 사용하여, 나는 다음과 같은 사용 . 프로 롤 (Prolog)이 부동산 수영을 로컬에서 먼저 확인한 다음 직접 상위를 살펴보고 계층 적 방식으로 살펴 보겠습니다. 그리고 우리는 Simba가 수영 할 수있는 "mustlearn"이라는 것을 알게되고 더 이상 보지 말아야합니다. 따라서 첫 번째 쿼리에서는 false를 반환하고 두 번째 쿼리에서는 true를 반환해야합니다.
역 추적을 제한하여 수행해야한다는 것을 알고 있습니다. 나는 컷을 사용하고 연산자를 사용하지는 않았지만 성공하지 못했습니다. 이것을 달성 할 수있는 방법이 있습니까?