>>653
何か間違っていますね。 ! を削りましょう。そうすると、

着手候補の取り出し(_枝切り,_評価_着手_局面ならび_2,_評価,_着手,_局面2) :-
    length(L0,_枝切り),
    append(L0,_,_評価_着手_局面ならび_2),
    member([_評価,_着手,_局面2],L0).

の最後memberが働いて、全解を取り出せると思います。

3手先読みの最善手は -> 次の可能な全ての手を評価して整列 ->
探索範囲を狭めるため枝切り -> 最も評価の高い手を選択 ->
相手の立場から最も評価高い手を選択 ->
その局面で全ての可能な着手を評価し -> 整列して枝切り ->
これで第一解が得られる
バックトラックすると、
3手先読みの整列枝切り後も member/2 の次の候補が取り出されて第二解。

findmax で次々呼び出されて、最高評価点を探す。