>>741
九九の表を印刷するお題は、自分なら以下のように書く

main :- findall(X, multiply_of_product(X), Xs), print_list(Xs).

multiply_of_product(Z) :- between(1, 3, X), between(1, 3, Y), Z is X * Y.

print_list([X|Xs]) :- write(X), nl, print_list(Xs).
print_list([]).

失敗駆動ループ技法は、いわゆるバッド・ノウハウの類いだと思う