См. здесь для описания руководства по прологу SWI соответствующих предикатов.
В качестве примера рассмотрим следующее
goal :- Z =.. [foo, 1],
Y =.. [bar,2],
X =.. [',', Z, Y],
R =.. [':-', r, X],
assert(Z), assert(Y), assert(X), assert(R).
PS: Другая возможность - это более низкий класс, но иногда может быть лучшим выбором: просто распечатайте то, что вам нужно построить в файл.