В прологе вы не можете изменить значение в списке. Вы можете сделать что-то вроде этого:
increment_list([],L,L).
increment_list([H|T],LT,LO):-
increment_nth(H,1,LT,LT1),
increment_list(T,LT1,LO).
increment_nth(_,_,[],[]).
increment_nth(I,I,[H1|T1],[H2|T1]):-!,
succ(H1,H2).
increment_nth(I,C,[H|T1],[H|T2]):-
C1 is C+1,
increment_nth(I,C1,T1,T2).
Это в основном вложенный цикл. В каждом цикле вы создаете новый список, который является тем же самым предыдущим списком, за исключением значения в рассматриваемом вами индексе, которое является предыдущим индексом, увеличенным на единицу.
?- increment_list([1,2,4,3,4,1],[0,0,0,0],LO).
LO = [2, 1, 1, 2]
EDIT
Благодаря Дэниелу Лайонсу, я изменил предикат.