昔の歌に基づいた宿題に取り組もうとしています、私は自分のおじいちゃんです。
そこで、息子、娘、父、父_in
_law などのルールを定義することから始めました。
ただし、ルール/ファクトをロードするたびに次のエラーが発生するため、ルール/ファクトの順序に何か問題があるに違いありません。
GNU Prolog 1.3.1
Daniel Diaz 著作権 (C) 1999-2009
Daniel Diaz | ?- [おじいちゃん]。/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: 警告: 不連続な述語の子/2 - 節は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:121: 警告: 不連続な述語の子/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: 警告: 不連続な述語 son/ 2 - 句は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:126: 警告: 不連続な述語 son/2 - 句は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:127: 警告:不連続な述語 son/2 - 節は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:128: 警告: 不連続な述語 son/2 - 節は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl: 129: 警告: 不連続な述語 son/2 - 句は無視され
ます /home/nfs/student/USER/cs4700/grandpa.pl:130: 警告: 不連続な述語 daughter/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: 警告:不連続な述語married/2 - 句は無視され
ます /home/nfs/student/USER/cs4700/grandpa.pl:135: 警告: 不連続な述語 son_in_law/2 - 句は無視され
ます /home/nfs/student/USER/cs4700/grandpa.pl: 136: 警告: 不連続な述語の父の法律/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: 警告:不連続な述語母/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 - 句は無視されました
/home/nfs/student/USER/cs4700/grandpa.pl:146: 警告:不連続な述語 uncle/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).
私はプロローグに非常に慣れていないので、おそらく根本的な間違いを犯しています。これらのエラーに関して、誰かが私を正しい方向に向けるのを手伝ってもらえますか?