# Untitled

unknown
prolog
a year ago
1.4 kB
10
Indexable
Never
```mother(X,Y):- /* mother of X is Y */
parent(X,Y),
female(Y).

father(X,Y):- /* father of X is Y */
parent(X,Y),
male(Y).

son(X,Y):-
parent(Y,X),
male(X).

daughter(X,Y):-
parent(Y,X),
female(X).

husbandwife(X,Y) :- /* X is a husband of Y wife */
father(Z,X),
mother(Z,Y),
X \= Y.

sibling(X,Y) :- /* X is a sibling of Y */
father(X,Z),
father(Y,Z),
X \= Y.

grandfather(X,Y):- /* X is grandfather of Y */
parent(Y,Z),
parent(Z,X),
male(X).

grandmother(X,Y):-
parent(Y,Z),
parent(Z,X),
female(X).

aunt(X,C,Y):-
cousin(Y,C),
mother(C,X),
aunt(X,Y) \= aunt(X,C,Y).

uncle(X,C,Y):- /* X = person to be checked for being uncle
C = son of X,
Y = nephew/niece of the uncle X.
query example:- uncle(possibleUncle,p_Uncle's_Child,possibleNephew/Niece)

same goes with aunt

*/
cousin(Y,C),
father(C,X).

cousinbrother(X,Y):- /* X is cousin brother of Y */
parent(X,Z),
parent(Y,W),
sibling(Z,W),
male(X).

cousinsister(X,Y):- /* X is cousin sister of Y */
parent(X,Z),
parent(Y,W),
sibling(Z,W),
female(X).

cousin(X,Y):- /* X is cousin of Y */
parent(X,Z),
parent(Y,W),
sibling(Z,W).

```