<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">append([],L,L).
append([E|R],L,[E|RL]) :- append(R,L,RL).
% --&gt; linear Laufzeit in der Laenge der ersten Liste

append_dl(L-M,M-N,L-N).
% --: konstante Laufzeit: ein Resolutionsschritt!


%rev([],[]).
%rev([E|R],L) :- rev(R,UR), append(UR,[E],L).
% --&gt; quadratische Laufzeit in der Laenge der ersten Liste

%rev_dl([],L-L).
rev_dl([],L,L).
%rev_dl([E|R],L) :- rev_dl(R,UR), append_dl(UR,[E|N]-N,L).
%rev_dl([E|R],L-N) :- rev_dl(R,L-[E|N]), append_dl(L-[E|N],[E|N]-N,L-N).
%rev_dl([E|R],L-N) :- rev_dl(R,L-[E|N]).
rev_dl([E|R],L,N) :- rev_dl(R,L,[E|N]).
% --&gt; lineare Laufzeit in der Laenge der ersten Liste

rev(L,M) :- rev_dl(L,M,[]).
</pre></body></html>