Ваш код основан на подходе, согласно которому прабабушка по сути является матерью родителя родителя. Точно так же прапрабабушка была бы матерью родителя родителя родителя:
great_great_grandmother(X,Z) :- parent(X,V), parent(V,W), parent(W,Y), parent(Y,Z), female(X).
Чтобы разбить этот лог c, вы можете ограничить все парами бинарные отношения, такие, что прародитель является родителем родителя, прадедушка является родителем прародителя, и т. д. c., как в:
parent(X,Y) :- child(Y,X).
grandparent(X,Y) :- parent(X,Y), parent(Y,Z).
great_grandparent :- parent(X,Y), grand_parent(Y,Z).
great_great_grandparent(X,Y) :- parent(X,Y), great_grandparent(Y,Z).
А потом пра-пра-пра бабушка - это просто женщина, пра-пра-прадедушка:
great_great_grandmother(X,Y) :- great_great_grandparent(X,Y), female(X).
Что касается того, почему вы не получаете решения для своего запроса, все зависит от того, что в ваших фактах. Либо ваш предикат great_great_grandparent
плохо сформирован, либо в вашей модели нет сущностей с таким определением, либо и то и другое.