The goal concatenate(
L1,
L2,
L3)
is true if list
L3 consists of the elements of list L1 concatenated with the
elements of list L2. The goal member(
X,
L)
is
true if X is one of the elements of list L. The goal
reverse(
L1,
L2)
is true if list L2 consists of
the elements of list L1 in reverse order.
concatenate([], L, L). concatenate([X|L1], L2, [X|L3]) :- concatenate(L1, L2, L3). member(X, [X|_]). member(X, [_|L]) :- member(X, L). reverse(L, L1) :- reverse_concatenate(L, [], L1). reverse_concatenate([], L, L). reverse_concatenate([X|L1], L2, L3) :- reverse_concatenate(L1, [X|L2], L3).