C1: concat([X|Y],L,[X|R]):-concat(Y,L,R).
C2: concat([],L,L).
1- concat([a,b,c],[e,f,g],Liste)
C1 : concat([X|Y],L,[X|R]):-concat(Y,L,R).
Donc X = a; Y = [b, c]; L = [e,f,g]; Liste = [X | R] soit Liste = [a | R]
on doit maintenant effectuer concat(Y, L, R) soit concat([b, c], [e, f, g], R).
2- concat([b,c],[e,f,g],R1)
C1 : concat([X|Y],L,[X|R]):-concat(Y,L,R).
Donc X = b; Y = [c]; L = [e,f,g]; R1 = [X | R] soit R1 = [b | R]
on doit maintenant effectuer concat(Y, L, R1) soit concat([c], [e, f, g], R1).
3- concat([c],[e,f,g],R1)
C1 : concat([X|Y],L,[X|R]):-concat(Y,L,R).
Donc X = c; Y = []; L = [e,f,g]; R1 = [X | R] soit R1 = [c | R]
on doit maintenant effectuer concat(Y, L, R1) soit concat([], [e, f, g], R1).
4- concat([], [e, f, g], R1).
On applique maintenant C2
C2: concat([],L,L).
concat([], [e,f,g], [e,f,g]).
On remonte maintenant en 3 car R1 est [e,f,g], R1 est le R du 3
3 donne R1 = [c | R] avec R = [e,f,g] donc R1 = [c,e,f,g]
On remonte maintenant en 2 avec R = [c,e,f,g]
2 donne R1 = [b | R] avec R = [c,e,f,g] donc R1 = [b,c,e,f,g]
On remonte maintenant en 1 avec R = [b,c,e,f,g]
1 donne Liste = [a | R] avec R = [b, c,e,f,g] donc Liste = [a, b,c,e,f,g]
Partager