1{ parricide(X), nonParricide(X) }1 :- person(X).
person(iokaste).  nonParricide(iokaste).
hasChild(iokaste, oedipus).
person(oedipus).  parricide(oedipus).
marriedto(oedipus, iokaste).    %% irrelevant, but the reason why he became prominent
hasChild(oedipus, perineikes).
person(perineikes).     %% unknown whether parricide or not.
hasChild(perineikes, thesandros).
person(thesandros). nonParricide(thesandros).
parentOfParricide(X) :- hasChild(X,Y), parricide(Y).
parentOfNonParricide(X) :- hasChild(X,Y), nonParricide(Y).
parentOfParricideGrandparentOfNonParricide(X) :-
   parentOfParricide(X), hasChild(X,Y), parentOfNonParricide(Y).
existsPoPGoNP :- parentOfParricideGrandparentOfNonParricide(X), person(X).  %% => t/f
