Implementing a zipwithindex predicate in prolog
sure:

zipwithindex(List1, List2) :-
   findall(E/I, nth0(I, List1, E), List2).


Edit - after Tudor' comment

bagof/3 it's much better than findall/3, as it doesn't introduce unwanted new variables. This can be of utmost importance when working with constrained variables - i.e. CLP(FD) or CHR