最近「AIプログラミング」という本でPrologを勉強しはじめました。
しょっぱなからつまずいているのですが、述語と演算子って別のものですか?
(すみません。第一巻は未入手です。)

上著の最初の例題が「リストを表す独自の表現を自作してみる」で、
空リストをアトム donothing、頭部と尾部からリストを作るオペレータを
thenとして
:- op(500, xfy, then).
と定義するとあります。
するとリスト [enter, sit, eat] は、
enter then sit then eat then donothing
と書ける、とあります。確かに swi-prologで
?- op(500, xfy, then).

Yes
?- X = 1 then 2 then 3 then donothing.

X = 1 then 2 then 3 then donothing ;

No

となります。(op()を宣言する前だとsyntax errorになります)

オペレータthenはオペレータとしては定義されていますが、
それがどういう計算を行うものかはどこにも定義していません。
にも関わらず処理系はそれを式として受け入れてくれます。

これはどういうことが起こっているんでしょうか。
他のプログラミング言語ではこういうことは起きないので理解に苦しんでいます。