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).