Это то, что имел в виду первоначальный спрашивающий?
has(student, ambiguousquestion).
need(student, studymore).
need(student, doresearch).
need(student, reprasequestion).
need(student, helpustohelpyou).
?- has(X,Y), findall(Z, need(X,Z), Res), write(Res).
[studymore,doresearch,reprasequestion,helpustohelpyou]
X = student,
Y = ambiguousquestion,
Res = [studymore, doresearch, reprasequestion, helpustohelpyou].