Более простой способ: предоставить предикат с соответствующими аргументами (скажем, схема адаптер):
length_list(Len,List) :- length(List,Len).
, а затем
...,
include(length_list(S), List1, List2).
В зависимости отсистема, которую вы используете, библиотеки yall и lambda - это хороший выбор, который стоит изучить.
Использование yall:
?- L1=[[a],[a,b]],S=2,include({S}/[L]>>length(L,S),L1,R).
L1 = [[a], [a, b]],
S = 2,
R = [[a, b]].