Being laid up with a bad foot, I decided to work through more of the Amzi! Prolog tutorial. I really like the tutorial as it's clearly written and show how things operate under the hood. I read the lists chapter to see if I could learn techniques to better explain lists. Unfortunately, they are something that you'll either get or your won't. However, working through each of the exercises is like solving a bunch of mini-logic puzzles. I like that.
Here's my stab at various questions (they can be harder than they look, but as is often the case, a simpler answer is more likely to be correct).
remove(X,[X|Tail],Tail). remove(X,[Head|Tail],[Head|Remainder]) :- remove(X,Tail,Remainder).
next(X,[X|[Y|_]],Y). next(X,[_|Tail],Y) :- next(X,Tail,Y).
split(X,List, Before, After) :- append(Before, [X|After],List).
last([X],X). last([_|Tail],X) :- last(Tail,X).
length([],0). length([_|TAIL],N) :- length(TAIL,N1), N is N1 + 1.
That last one was tricky because the math must be done last to ensure the N1 variable is instantiated since math is not done logically in Prolog.