List が[2,1,4,5]
あるとします。不足している要素として 3 を返す述語が必要です。
missing([], []).
missing([H|T], R) :- missing([H|T], H, R).
missing([], _I, []).
missing([H|T], I, [I|R]) :-
H =\= I,
!,
NextI is I + 1,
missing([H|T], NextI, R).
missing([_|T], I, R) :-
NextI is I + 1,
missing(T, NextI, R).
ただし、ソートされていないリストでは機能しません。