Я нашел код, который создает генеалогическое древо и настраивает некоторые отношения, такие как отец, мать, сын и т. Д., Но я хочу добавить еще одну функцию, которая подсчитывает количество всех потомков кого-либо.
Может кто-нибудь помочь мне с этим?
Понятия не имею, с чего начать.
mother(teresa,ireneusz).
mother(teresa,beata).
sex(teresa,k).
son(X,Y) :-
sex(X,m),
father(Y,X),
X\=Y.
son(X,Y) :-
sex(X,m),
mother(Y,X),
X\=Y.
daughter(X,Y) :-
sex(X,k),
father(Y,X),
X\=Y.
daughter(X,Y) :-
sex(X,k),
mother(Y,X),
X\=Y.
kid(X,Y) :-
father(Y,X),
X\=Y.
kid(X,Y) :-
mother(Y,X),
X\=Y.
parent(X,Y) :-
kid(Y,X),
X\=Y.
siblings(X,Y) :-
parent(Z,X),
parent(Z,Y),
X\=Y,
X\=Z,
Y\=X.
brat(X,Y) :-
sex(X,m),
parent(Z,X),
parent(Z,Y),
X\=Y,
X\=Z,
Y\=X.
siostra(X,Y) :-
sex(X,k),
parent(Z,X),
parent(Z,Y),
X\=Y,
X\=Z,
Y\=X.
wuj(X,Y) :-
mother(Z,Y),
brat(X,Z),
X\=Y,
X\=Z,
Y\=Z.
stryj(X,Y) :-
father(Z,Y),
brat(X,Z),
X\=Y,
X\=Z,
Y\=Z.
ciotka(Y,X) :-
mother(Z,X),
siostra(Y,Z),
X\=Y,
X\=Z,
Y\=Z.
ciotka(Y,X) :-
father(Z,X),
siostra(Y,Z),
X\=Y,
X\=Z,
Y\=Z.
babcia(B,A) :-
parent(C,A),
parent(B,C),
sex(B,k),
A\=B,
A\=C,
B\=C.
grandfather(B,A) :-
parent(C,A),
parent(B,C),
sex(B,m),
A\=B,
A\=C,
B\=C.
wife(X,Y) :-
sex(X,k),
kid(Z,X),
kid(Z,Y),
X\=Y,
X\=Z,
Y\=Z.
husband(X,Y) :-
sex(X,m),
kid(Z,X),
kid(Z,Y),
X\=Y,
X\=Z,
Y\=Z.
cousin(X,Y) :-
sex(X,m),
kid(X,Z),
wuj(Z,Y),
X\=Y,
X\=Z,
Y\=Z.
scion(X,Y) :-
parent(Y,X).
scion(X,Y) :-
parent(Z,X),
scion(Z,Y).
ancestor(X,Y) :-
kid(Y,X).
ancestor(X,Y) :-
kid(Z,X),
ancestor(Z,Y).
relative(X,Y) :-
kid(X,Y);
parent(X,Y);
cousin(X,Y);
babcia(X,Y);
grandfather(X,Y),
X\=Y.
kid(X,Y);
parent(X,Y);
cousin(X,Y);
babcia(X,Y);
grandfather(X,Y),
X\=Y.