Ваша цель объединяется с первым предложением (фактом) для предиката:
?- predicate1(abc,[]) = predicate1(_,[]).
true.
Таким образом, запрос возвращает true
в качестве первого результата. Но точка выбора создается, поскольку есть второе предложение (правило) для предиката. Поскольку объединение цели и главы правила не удается, вы получаете false
при запросе второго решения:
?- predicate1(abc,[]) = predicate1(X,[_|T]).
false.