conc([],L,L).
conc([X|L1],L2,[X|L3]):-conc(L1,L2,L3).
% attention, ne pas l'appeler concat qui fait autre chose



/******  Executions ******

?- conc([a,b,c], [d,e], L).

L = [a, b, c, d, e] ;

No

?- conc(L1,L2,[a,b,c,d]).

L1 = []
L2 = [a, b, c, d] ;

L1 = [a]
L2 = [b, c, d] ;

L1 = [a, b]
L2 = [c, d] ;

L1 = [a, b, c]
L2 = [d] ;

L1 = [a, b, c, d]
L2 = [] ;

No

?- conc([a,b],L,[a,b,c,d]).

L = [c, d] ;

No

?- conc([a,b],L,[b,c,d]).

No

?- conc([a,b],L,LL).

L = _G187
LL = [a, b|_G187] ;

No

?- conc(L,[a,b],LL).

L = []
LL = [a, b] ;

L = [_G259]
LL = [_G259, a, b] ;

L = [_G259, _G265]
LL = [_G259, _G265, a, b] ;

L = [_G259, _G265, _G271]
LL = [_G259, _G265, _G271, a, b] 

Yes

?- conc(L1,L2,LL).

L1 = []
L2 = _G181
LL = _G181 ;

L1 = [_G262]
L2 = _G181
LL = [_G262|_G181] ;

L1 = [_G262, _G268]
L2 = _G181
LL = [_G262, _G268|_G181] 

Yes

*******************************************/
