% inverse d'une liste

% le programme suivant
inv([X|L],LI) :- inv(L,L1), conc(L1,[X],LI).
inv([],[]).
% a une complexite en n^2

% une variable tampon sert a construire le resultat pas a pas
% la complexite est alors lineaire
% invt/3 ajoute les elements l'un apres l'autre au debut de la variable tampon
invt([X|L],T,LI) :- invt(L,[X|T], LI).
invt([],L,L).
% inv1/2 appelle invt/3 avec une liste tampon initiale vide
invt(L,LI) :- invt(L,[],LI).

%  tracer l'arbre des sous-buts pour les deux versions
