во-первых, спасибо за помощь. Я пишу программу-пролог, описывающую семейные отношения, включая все версии родственников мужа. Логика есть, и мне нужна помощь, так это некоторые проблемы с прологом, так как я не очень разбираюсь в этом. Я пытаюсь установить несколько возможностей для каждого правила, используя точку с запятой.
Я обращаюсь со свекровью так, что мой шурин также является моим братом, поэтому мне нужно несколько проверок, чтобы узнать, что из этого правда. Я хочу, чтобы пролог возвращал истину и только истину, если какой-либо из вариантов верен. Однако он возвращает true и false как возможные варианты, поскольку, конечно, один из вариантов всегда будет ложным, а другой всегда будет истинным. Либо они мой шурин, либо мой родной брат. Я не могу заставить пролог возвращать только истину и не могу указать ложь в качестве другого ответа. Если у кого-то есть совет, было бы здорово. Соответствующий код приведен ниже. Итак, если я наберу «брат (ребенок, папа)». Я получаю истинный и ложный как возможные ответы, когда все, что мне нужно, - это ложь. Однако «брат (папа, малыш)». возвращает только истину. Но сейчас я болтаю. Извините, если какой-либо код не соответствует детскому папе. Спасибо!
/*facts for relationships*/
female(widow).
female(redhair).
spouse(i,widow).
spouse(widow,i).
spouse(dad,redhair).
spouse(redhair,dad).
child(i,dad).
child(redhair,widow).
child(baby,i).
child(onrun,dad).
male(onrun).
male(baby).
male(dad).
male(i).
/*rules*/
daughter(D,P):-
female(D), (child(D,P);(spouse(P,S),child(D,S))).
son(D,P):-
male(D), (child(D,P);(spouse(P,S),child(D,S))).
mother(X,Y):-
female(X),
child(Y,X).
father(X,Y):-
male(X),
child(Y,X).
son_in_law(C,P):-
male(C),spouse(C,S),
(child(S,P);(spouse(P,W),child(S,W))).
daughter_in_law(C,P):-
female(C),spouse(C,S),
(child(S,P);(spouse(P,W),child(S,W))).
brother(S1,S2) :- male(S1),
(child(S1,P) = child(S2,P2));
(child(S1,P),child(S2,P2),spouse(P,P2));
((child(S1,P),son_in_law(S2,P));(child(S2,P),son_in_law(S1,P))).
child(S1,P) = child(S2,P2)
должен делать? (А почему внебрачные дети не допускаются, разве вы еще не узнали об отрицании?;) - person Fred Foo   schedule 16.10.2010