@mat . CLP (FD), ( " " ).
, A @< B A B , , "" . , , valid(X), X , valid(A), valid(B), A @< B, .... , , , , .
valid(X) :- member(X, [a,b,c,d,e,f,g,h,i,j,k,l,m,n]).
merge_([A|T], [], [A|T]).
merge_([], [A|T], [A|T]).
merge_([A|T], [B|U], [A|V]) :- valid(A), valid(B), A @< B, merge_(T, [B|U], V).
merge_([A|T], [B|U], [B|V]) :- valid(A), valid(B), A @>= B, merge_([A|T], U, V).
, A B , " ":
| ?- merge_(A, [a, b, c], [a, b, c, d]).
A = [d] ? a
no
| ?- merge_(A, B, [a, b, c]).
A = [a,b,c]
B = [] ? a
A = []
B = [a,b,c]
A = [a]
B = [b,c]
A = [a,c]
B = [b]
A = [a,b]
B = [c]
A = [b,c]
B = [a]
A = [b]
B = [a,c]
A = [c]
B = [a,b]
no
| ?-