Как развернуть запрос в список?
f(a,b). f(a,c). d(a.d). expand(f(a,X), Out) -----> Out=[b,c,d]
Используйте bagof / 3 или setof / 3. E.g.:
? - bagof (X, (X = 1; X = 2), L).
L = [1,2]
да
В вашем случае это будет
? - bagof (X, f (a, X), Out).