Ответ в теме: Список символов, которые входят в обе строки

      Комментарии к записи Ответ в теме: Список символов, которые входят в обе строки отключены
#1758

От первой строки постепенно отделяете символы, ищите их во второй строке. Если находите — добавляете в третью строку.
Решение будет зависеть от диалекта пролога, например на SWI Prolog вы можете использовать стандартный предикат member для поиска:

intersect("", _Str2, ""):-!.
intersect([Head|Tail], Str2, [Head|IntersectTail]):-
member(Head, Str2), !, intersect(Tail, Str2, IntersectTail).
intersect([_Head|Tail], Str2, IntersectTail):-
intersect(Tail, Str2, IntersectTail).

Если первая строка пуста, то результатом ее пересечения с любой строкой будет пустая строка. В противном случае от первой строки отделяется первый символ, выполняется его поиск во второй строке. Если совпадение найдено, то символ добавится к результату рекурсивной обработки хвоста, иначе — будет пропущен.