[Prolog]Генерация всех возможных подсписков у списка

У меня есть два предиката, делающих следующее: conc(List1, List2, List3) - соединяет List1 и List2 в List3 sublist(List1,List2) - проверяет, является ли List1 подсписком List2. Чтобы получить все возможные подсписки List2, я делаю List1 переменной, т.е пишу что-то вроде sublist(S,[1,2,3], write(S), nl, fail. При этом я получаю в качестве решений несколько пустых списков. Естественно, пустой список является подсписком, но я бы хотел получить решение без пустых списков. Как я могу это ограничить?

Остановился на этом:

conc([], L, L).
conc([N|L1], L2, [N|L3]):-conc(L1,L2,L3).

sublist([],L):-!.
sublist(S, L):-
 conc(L1, L2, L),
 conc(S, L3, L2).

Ответы (0 шт):