Не понимаю, как Prolog присваивает значения. Почему Prolog не связывает X, если нет скобок?

Я использую SWI для Windows и пробую выполнить упражнение в Learn Prolog Now!

travel(Start,Dest,X) :- (byCar(Start,Dest); byTrain(Start,Dest); byPlane(Start,Dest)), X = go(Start,Dest).

В этом коде, если вы можете получить доступ к Dest из Start, Prolog говорит:

правда.

X = go (Start, Dest)..

и просто говорит ложь иначе.

Однако в этом коде, когда я удалил круглые скобки, он говорит только «истина», если она действительна, и «ложь», если она недействительна. Ответ правильный, но почему он не выводит X?

travel(Start,Dest,X) :- byCar(Start,Dest); byTrain(Start,Dest); byPlane(Start,Dest), X = go(Start,Dest).

Это из-за приоритета оператора, в котором сначала вычисляется AND? Даже если это так, разве X не должен быть равным (Start, Dest)?

Меня смущает то, как Prolog присваивает значения переменным.

Источник: ledsshop.ru

Стиль жизни - Здоровье!