Я думаю, что @gusbro уже даст вам ответ (+1).Но учтите, что процедура, которую вы написали, очень неэффективна.
Во-первых, необходимо использовать memberchk / 2 вместо member.Затем положить разрез перед дизъюнкцией.В противном случае ваш код будет очень медленным, если его вызывать при возврате (например, внутри findall ...)