>>744
失敗駆動をfindall/3で隠蔽していますね。同様に、

main :- forall(multiply_of_product(X),writef('%t\n',[X])).

というのもあります。