0
프롤로그에서 방금 프로그래밍을 시작했습니다. 나는 몇 가지 조항을 썼다.초보자 : 표현식 오류에서 자유 변수를 추적 할 수 없습니다. 프롤로그 프로그래밍
predicates
parent(symbol,symbol)
male(symbol)
female(symbol)
mother(symbol,symbol)
father(symbol,symbol)
brother(symbol,symbol)
sister(symbol,symbol)
uncle(symbol,symbol)
clauses
parent(arthur,fred).
parent(arthur,george).
parent(arthur,bill).
parent(arthur,percy).
parent(arthur,ginny).
parent(arthur,ron).
parent(arthur,charlie).
parent(molly,fred).
parent(molly,george).
parent(molly,bill).
parent(molly,percy).
parent(molly,ginny).
parent(molly,ron).
parent(molly,charlie).
parent(rowling,arthur).
parent(rowling,james).
parent(james,harry).
parent(lily,harry).
female(molly).
female(ginny).
female(lily).
female(rowling).
male(X) if not(female(X)).
brother(X,Y) if male(Y),X<>Y,brother(Y,X).
brother(X,Y) if X<>Y,parent(Z,X),parent(Z,Y),male(X).
mother(X,Y) if parent(X,Y),female(X).
father(X,Y) if parent(X,Y),male(X).
sister(X,Y) if parent(Z,X),parent(Z,Y),female(X),X<>Y.
uncle(X,Y) if parent(Z,Y),brother(X,Z).
하지만 난 줄 그것은 X <에서 표현의 자유 변수를 보여주고 질문을> Y를
brother(X,james)
을 요청하려고 할 때 내가 추적 드릴 수 없습니다
brother(X,Y) if male(Y),X<>Y,brother(Y,X).
코드의 문제점은 무엇입니까
X가 Y의 동생이고 Y가 남성이고 Y도 Y의 동생 인 경우 구현할 수 있습니다. 어쨌든, 나는 thi 에스. 문제는 남성의 정의에 있습니다. 그것은 단지 부정적인 용어로 선언됩니다. –