2014-04-17 2 views
0

두 변수가 Prolog에서 같지 않다는 것을 어떻게 정의 할 수 있습니까? 예 :Prolog에서 어떻게 다른 정의 할 수 있습니까?

z is X and Y parent 

X is male and Y is female 

이제 자매 또는 형제를 찾고 싶습니다. 그러나 프롤로그 결과는 다음과 같습니다

Y sister Y when parent have one child and not have X 

지금 내가 정의합니다 :

different(X,y). 

내가 비주얼 프롤로그의 오래되거나 다른 버전의 라이브러리에있는 '다른'생각하지만 난 새로운 Visual 프롤로그이 찾을니까. 내가 무엇을 할 수 있을지?

+1

당신은 비주얼 프롤로그를 사용할 필요가 있는가? –

+1

당신이 단지 비항 등 연산자를 요구하고 가정 : [http://stackoverflow.com/a/7485430/925196][1] [1] : http://stackoverflow.com/ a/7485430/925196 –

+2

참조 : http://stackoverflow.com/a/8523825/772868 – false

답변

0

는 두 변수는 프롤로그에서 동일하지 정의 :

X \= Y 
not(X = Y) 
\+ (X = Y) 
0

프롤로그의 동등한==/2입니다. 이것은 변수들 사이에서도 정의됩니다. 그것은 구체적으로 이 아니며=/2과 같이 두 개의 다른 변수를 통합합니다.

몇 가지 간단한 예제 :

?- X = Y. 
X = Y. 
?- X == Y. 
false. 

그리고는 :

?- X = X. 
true. 
?- X == X. 
true. 

당신은 특별히 변수 간의 평등, 나는 당신이 동등 이상의 무언가를 요구하고 있는지 궁금 부탁입니다. 평등은 대용의 동등성으로 정의되기도합니다. 따라서 a = bf(..., a, ...) = f(..., b, ...)을 의미합니다. 프롤로그에서

이뿐만 아니라 사건을 것 같다 :

?- f(a, B1, c) = f(a, B2, c). 
B1 = B2. 
?- f(a, B1, c) == f(a, B2, c). 
false. 

그리고 :

?- f(a, B, c) = f(a, B, c). 
true. 
?- f(a, B, c) == f(a, B, c). 
true. 

희망이 도움이!