append( [], L, L ).
append( [H|T], L, [H|T1] ) :-
append( T, L, T1 ).
Read this as:
The result of joining the empty list
to L is L.
The result of joining the list whose
head is H and whose tail is T to
L is a list whose head is H and whose
tail is T1 if
the result of joining T to L is T1.