Ответ в теме: Удалить элементы списка между заданными

      Комментарии к записи Ответ в теме: Удалить элементы списка между заданными отключены
#1782

В SWI Prolog встроено правило reverse, которое переворачивает список.
Про удаление я не прочитал. Реверс удалению не поможет, для удаления части списка вам достаточно соединить самую левую и самую правую части:

slice_remove(Source, N, M, LeftAndRight):-
append(Left, SliceWithRight, Source),
append(Slice, Right, SliceWithRight),
SliceLen is M - N,
length(Left, N), length(Slice, SliceLen), 
append(Left, Right, LeftAndRight), !.