나는 프롤로그에서 부정에 대한 명확한 답을 찾고 힘든 시간을 했어, 그래서 나는 사과 "X와 Y는 X가 Y와 Y 만 좋아한다면 서로 사랑합니다"SWI - 프롤로그 부정
likes(mary,john).
likes(mary,chad).
likes(john,mary).
loves(X,Y):- likes(X,Y), \+likes(X,Z).
그때 내 프로그램을 실행하고 간단하게 질문 : 내 .pl로 코드는 다음과 같이 보입니다
?- loves(X,Y).
를하지만 항상 밖으로 거짓 온다. 내 논리에 따르면, 그것은 'X = 존, Y = 메리'라고 돌아와야합니다.
나는 "사랑"을 정의하기 위해 여러 줄을 사용하여 상쇄와 음수를 분리하는 몇 가지 조합을 시도했습니다 ... 아마도 부정의 주요 원칙이 누락되었거나 무엇을 구현할 수있는 더 쉬운 방법이 있을지 모릅니다. 나는 여기서하려고 노력하고있어. 도움이 될지 알려주세요.
데비안 소프트웨어 관리자의 SWI-Prolog (swipl)를 사용하고 있습니다. 도움이된다면이 점이 많이 달라질 것입니다.