Прежде всего, вы должны написать equal(A, B) :- A = B
вместо того, что вы написали. Разница в том, что a и b являются константами, а A и B являются переменными, которые можно объединять со значениями. Я думаю, тогда это должно работать для вашего примера.
Но вы должны заметить, что предикат "=" просто пытается объединить свои аргументы. Поэтому, когда вы спрашиваете «1 = 1», результат равен true, потому что 1 объединяется с 1. Но когда вы спрашиваете «2 + 2 = 4» (или равно (2 + 2, 4)), результат будет ложным, потому что этот оператор делает не оценивать арифметику c операций. Если вы хотите сравнить арифметические c выражения, используйте оператор =: = вместо:
equal(A, B) :- A =:= B
.