Я пытаюсь выполнить домашнее задание на основе старой песни, Я - мой собственный дедушка.
Итак, я начал определять правила для того, кем был сын, дочь, отец, отец _in
_law и т. Д.
Однако, что-то должно быть не так с порядком моих правил / фактов, потому что каждый раз, когда я загружаю его, я получаю следующие ошибки:
GNU Prolog 1.3.1
Даниэль Диас Copyright (C) 1999-2009
Даниэль Диаз | ? - Дедушка. составление
/home/nfs/student/USER/cs4700/grandpa.pl
для байтового кода ...
/home/nfs/student/USER/cs4700/grandpa.pl:119:
предупреждение: несмежный предикат
child / 2 - предложение игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:120:
предупреждение: несмежный предикат
child / 2 - предложение игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:121:
предупреждение: несмежный предикат
child / 2 - предложение игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:122:
предупреждение: несмежный предикат
child / 2 - предложение игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:123:
предупреждение: несмежный предикат
child / 2 - предложение игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:124:
предупреждение: несмежный предикат
child / 2 - предложение игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:125:
предупреждение: непрерывный предикат сын / 2
- пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:126:
предупреждение: непрерывный предикат сын / 2
- пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:127:
предупреждение: непрерывный предикат сын / 2
- пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:128:
предупреждение: непрерывный предикат сын / 2
- пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:129:
предупреждение: непрерывный предикат сын / 2
- пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:130:
предупреждение: несмежный предикат
дочь / 2 - пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:131:
предупреждение: несмежный предикат
женат / 2 - пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:132:
предупреждение: несмежный предикат
женат / 2 - пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:133:
предупреждение: несмежный предикат
женат / 2 - пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:134:
предупреждение: несмежный предикат
женат / 2 - пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:135:
предупреждение: несмежный предикат
son_in_law / 2 - пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:136:
предупреждение: несмежный предикат
Father_in_law / 2 - пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:137:
предупреждение: несмежный предикат
папа / 2 - пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:138:
предупреждение: несмежный предикат
папа / 2 - пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:139:
предупреждение: несмежный предикат
папа / 2 - пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:140:
предупреждение: несмежный предикат
mother / 2 - предложение игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:141:
предупреждение: несмежный предикат
mother / 2 - предложение игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:142:
предупреждение: несмежный предикат
mother / 2 - предложение игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:143:
предупреждение: несмежный предикат
step_mother / 2 - предложение игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:144:
предупреждение: несмежный предикат
brother_in_law / 2 - пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:145:
предупреждение: несмежный предикат
brother_in_law / 2 - пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:146:
предупреждение: несмежный предикат
дядя / 2 - предложение игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:147:
предупреждение: несмежный предикат
step_daughter / 2 - предложение игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl
скомпилировано, прочитано 149 строк - 8389 байт
написано, 44 мс
И мой код:
child(X,Y):-
son(Y,X).
child(X,Y):-
daughter(Y,X).
parent(X,Y):-
father(X,Y).
parent(X,Y):-
mother(X,Y).
son(X,Y):-
child(X,Y),
male(X).
daughter(X,Y):-
child(X,Y),
female(X).
son_in_law(X,Y):-
child(X,Z),
not(child(X,Y)),
married(Z,Y),
male(X).
step_daughter(X,Y):-
child(X,Z),
married(Z,Y),
not(child(X,Y)),
female(X).
brother(X,Y):-
sibling(X,Y),
male(X).
brother_in_law(X,Y):-
parent(Z,X),
parent(Z,Y),
not(sibling(X,Y)),
male(X).
sibling(X,Y):-
parent(Z,X),
parent(Z,Y).
sister(X,Y):-
sibling(X,Y),
female(X).
father(X,Y):-
parent(X,Y),
male(X).
father_in_law(X,Y):-
child(X,Z),
married(Y,Z),
not(child(X,Y)),
male(X).
mother(X,Y):-
parent(X,Y),
female(X).
step_parent(X,Y):-
married(X,Z),
parent(Z,Y),
not(parent(X,Y)).
step_father(X,Y):-
step_parent(X,Y),
male(X).
step_mother(X,Y):-
step_parent(X,Y),
female(X).
grandparent(X,Y):-
parent(X,Z),
parent(Z,Y).
grandmother(X,Y):-
grandparent(X,Y),
female(X).
grandfather(X,Y):-
grandparent(X,Y),
male(X).
grandchild(X,Y):-
child(X,Z),
child(Z,Y).
married(X,Y):-
wife(X,Y),
female(X).
married(X,Y):-
husband(X,Y),
male(X).
uncle(X,Y):-
sibling(X,Z),
parent(Z,Y),
male(X).
aunt(X,Y):-
sibling(X,Z),
parent(Z,Y),
female(X).
male(i).
male(f).
male(s1).
male(s2).
female(w).
female(d).
child(i,f).
child(s1,w).
child(s1,i).
child(s2,d).
child(s2,f).
child(d,w).
son(i,f).
son(s1,w).
son(s1,i).
son(s2,d).
son(s2,f).
daughter(d,w).
married(i,w).
married(w,i).
married(f,d).
married(d,f).
son_in_law(f,i).
father_in_law(i,f).
father(f,i).
father(i,s1).
father(f,s2).
mother(w,s1).
mother(w,d).
mother(d,s2).
step_mother(d,i).
brother_in_law(f,s1).
brother_in_law(s1,f).
uncle(s1,i).
step_daughter(d,i).
Я очень новичок в прологе, поэтому я, вероятно, просто делаю фундаментальную ошибку Может ли кто-нибудь помочь направить меня в правильном направлении в отношении этих ошибок?