:- dynamic male/1, female/1, parentOf/2.

parentOf(adam, able).
parentOf(eve, able).
parentOf(adam, cain).
parentOf(eve, cain).

parentOf(cain, enoch).

male(adam).
female(eve).

motherOf(X,Y) :- parentOf(X,Y), female(X).
fatherOf(X,Y) :- parentOf(X,Y), male(X).

siblings(X,Y) :- parentOf(P1,X), parentOf(P1,Y), X \= Y.

isParent(X) :- parentOf(X,_).

childLess(X) :- \+ isParent(X).

grandparentOf(X, Y) :- parentOf(X, P), parentOf(P, Y).

