Решение вашей проблемы может быть следующим:
inde(E,L,LO):-
inde(E,L,[],LO,1).
inde(_,[],L,L,_).
inde(E,[E1|T],L1,LO,I):-
E \= E1,
I1 is I+1,
inde(E,T,L1,LO,I1).
inde(E,[E|T],L,LO,I):-
I1 is I+1,
append(L,[I],L1),
inde(E,T,L1,LO,I1).
?- inde(1,[1,2,1,1,2,2,1],L).
L = [1, 3, 4, 7]
false
Этот предикат просто проверяет, является ли выбранный элемент первым элементом списка.Если это так, он сохраняет в выходном списке индекс элемента и снова вызывает тот же предикат с остальной частью списка и индексом, увеличенным на единицу.