Проблема в том, что вы неправильно определяете домены и добавляете два разных домена (список целых чисел со списком целых).
Если вы хотите добавить списки целых чисел (как видно из вашего примера), код должен быть
domains
li = integer*
lili = li*
predicates
append(lili, lili, lili).
clauses
append([X|Y],Z,[X|W]):- append(Y,Z,W).
append([],X,X).
, а затем в примере второй список должен быть списком из двух списков, получая:
append([ [1],[2],[3] ],[[4]],A).
Solution: A = [ [1],[2],[3],[4] ]
Обратите внимание, что второй список [[4]] вместо [4].