?- append([1, 2, 3], [4, 5, 6], X).
X = [1, 2, 3, 4, 5, 6].
?- append([1, 2, 3], X, [1, 2, 3, 4, 5, 6]).
X = [4, 5, 6].
?- append(X, [4, 5, 6], [1, 2, 3, 4, 5, 6]).
X = [1, 2, 3].
And the definition of append: append([], X, X).
append([X | Y], Z, [X | O]) :- append(Y, Z, O).
Magic!