Untitled

mail@pastecode.io avatar
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).