filter をカットなしで書く方法を知りたいです
カットなしだと部分リストも答えで出てくる

filter(Pred, [], []).
filter(Pred, [X|Xs], [X|Ys]) :- prove(Pred, [X]), filter(Pred, Xs, Ys).
filter(Pred, [X|Xs], Ys) :- filter(Pred, Xs, Ys).