ほんとは、実現方法なんか関知しないで、
純粋に論理を書いたらそれが動くというのが理想なんだろうけど、
現実の Prolog は、文は上から下に、ゴールは左から右に、逐次的に調べるという風に
実現方法が(現実に合わせるために)規格で決まっているんですよね?
ゴールを左から右に順番に試すという決まりがないとカットの仕様が決められないでしょうし。

その辺とかカットとかで論理型だと胸を張るには汚い感じがするから、
それを何とかしたくて制約(論理)プログラミングが出てきたんですよね?

ところで、制約論理プログラミング言語は、このスレの範囲外ですか?