Я пытаюсь работать на домашнее задание на основе старой песни, I'm my own grandpa.Как мне заказать эти правила Prolog, чтобы я мог запускать свою программу?
Итак, я начал определение правил для того, кто был сын, дочь, отец, отец _in
_law и др.
Однако, что-то должно быть неправильным с заказом моих правил/факты, потому что каждый раз, когда я загрузить его я получаю следующие ошибки:
GNU Prolog 1.3.1
Даниэль Диас Copyright (C) 1999-2009
Daniel Diaz | ? - [дедушка]. составление /home/nfs/student/USER/cs4700/grandpa.pl
для байт-кода ...
/home/nfs/student/USER/cs4700/grandpa.pl:119: предупреждения: несоприкасающееся сказуемое ребенка/2 - пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:120: предупреждения: несоприкасающийся предикат ребенка/2 - пункт проигнорирован
/дома/Nfs/студент/USER/cs4700/дедушки .pl: 121: предупреждение: недопустимый предикат ребенок/2 - статья игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:122: предупреждение: диск ontiguous предикат ребенка/2 - пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:123: предупреждения: несоприкасающийся предикат ребенка/2 - пункт проигнорирован
/дома/NFS/студент/USER /cs4700/grandpa.pl:124: предупреждение: несоприкасающийся предикат ребенок/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 - пункт проигнорирован
/главная/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.пли: 134: предупреждение: несоприкасающееся сказуемое замужем/2 - пункт проигнорирован
/home/nfs/student/USER/cs4700/grandpa.pl:135: предупреждения: несоприкасающийся предикат son_in_law/2 - пункт игнорируется
/главная/NFS/студент/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: предупреждение: недопустимый преди Cate отца/2 - пункт проигнорирован
/home/nfs/student/USER/cs4700/grandpa.pl:139: предупреждения: несоприкасающееся сказуемое отца/2 - пункт проигнорирован
/главный/NFS/студент/USER/cs4700/grandpa.pl: 140: предупреждения: несоприкасающееся сказуемое мать/2 - пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:141: предупреждение: несоприкасающееся сказуемое мать/2 - пункт игнорируется
/home/nfs/student/USER/cs4700/grandpa.pl:142: предупреждение: недопустимый предикат мать/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 - пункт проигнорирован
/главная/NFS/student/USER/cs4700/grandpa.pl: 146: предупреждение: недопустимый предикат дядя/2 - статья игнорируется
/home/nfs/studen т/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).
Я очень новой для Prolog, так что я, вероятно, просто сделать некоторую фундаментальную ошибку. Может ли кто-нибудь помочь мне в правильном направлении указать эти ошибки?
Цель этой функции - предупредить вас, если вы случайно используете имя предиката более одного раза. – starblue