Ответ в теме: Преобразование списка

      Комментарии к записи Ответ в теме: Преобразование списка отключены
#1712

На SWI Ваша задача решается очень просто, как-то так:

innering([], []):-!.
innering([Head], [Head]):-!.
innering([Head|Tail], [Head|[InneringTail]]):-
    innering(Tail, InneringTail).

Если исходный список содержит менее двух элементов – результатом будет являться такой же список. В остальных случаях список разделяется на голову и хвост (Tail). В результате рекурсивной обработки Tail формируется InneringTail. Результатом работы предиката является список из первого элемента исходного списка и InneringTail, вложенном в дополнительный список.

На диалектах со статической типизацией типа Turbo пролога или Visual Prolog МБ тоже решается, но немного иначе.