% Test auf Liste
%is_list([]).
%is_list([X|Xs]) :- is_list(Xs).


% Test auf Enthaltensein
%member(X,[X|Xs]).
%member(X,[Y|Ys]) :- member(X,Ys).


% Listenkonkatenation
%append([],Ys,Ys).
%append([X|Xs],Ys,[X|Zs]) :- append(Xs,Ys,Zs).


% Listenspiegelung
reverse([],[]).
reverse([X|Xs],Ys) :- reverse(Xs,Zs), append(Zs,[X],Ys).

% mit Akkumulatorargument, Unterscheide rev/2 und rev/3!
rev(Xs,Ys) :- rev(Xs,[],Ys).

rev([],Ys,Ys).
rev([X|Xs],Ys,Zs) :- rev(Xs,[X|Ys],Zs).
% rev(Xs,Ys,Zs) gilt, wenn "reverse(Xs) ++ Ys = Zs"



