トレーサーは、バックトレーサーがたどったすべての異なるブランチを示していると思います。そのため、最後に試したブランチからの成功したステートメントの1つを否定しているように見えるので、今回は別の解決策を使用します。
実行全体を見るとFail: (7) lists:member(0, [0, 1, 2])
、2番目の評価のように、実際に真である失敗した述語が確かにわかります。
[trace] ?- group([0, 1, 2], 3).
Call: (6) group([0, 1, 2], 3) ? creep
Call: (7) lists:member(_G718, [0, 1, 2]) ? creep
Exit: (7) lists:member(0, [0, 1, 2]) ? creep
Call: (7) lists:member(_G718, [0, 1, 2]) ? creep
Exit: (7) lists:member(0, [0, 1, 2]) ? creep
^ Call: (7) _G721 is 0+0 ? creep
^ Exit: (7) 0 is 0+0 ? creep
^ Call: (7) _G724 is 0 mod 3 ? creep
^ Exit: (7) 0 is 0 mod 3 ? creep
Call: (7) lists:member(0, [0, 1, 2]) ? creep
Exit: (7) lists:member(0, [0, 1, 2]) ? creep
Exit: (6) group([0, 1, 2], 3) ? creep
true ;
Redo: (7) lists:member(0, [0, 1, 2]) ? creep
Fail: (7) lists:member(0, [0, 1, 2]) ? creep
Redo: (7) lists:member(_G718, [0, 1, 2]) ? creep
Exit: (7) lists:member(1, [0, 1, 2]) ? creep
^ Call: (7) _G721 is 0+1 ? creep
^ Exit: (7) 1 is 0+1 ? creep
^ Call: (7) _G724 is 1 mod 3 ? creep
^ Exit: (7) 1 is 1 mod 3 ? creep
Call: (7) lists:member(1, [0, 1, 2]) ? creep
Exit: (7) lists:member(1, [0, 1, 2]) ? creep
Exit: (6) group([0, 1, 2], 3) ? creep
true ;
Redo: (7) lists:member(1, [0, 1, 2]) ? creep
Fail: (7) lists:member(1, [0, 1, 2]) ? creep
Redo: (7) lists:member(_G718, [0, 1, 2]) ? creep
Exit: (7) lists:member(2, [0, 1, 2]) ? creep
^ Call: (7) _G721 is 0+2 ? creep
^ Exit: (7) 2 is 0+2 ? creep
^ Call: (7) _G724 is 2 mod 3 ? creep
^ Exit: (7) 2 is 2 mod 3 ? creep
Call: (7) lists:member(2, [0, 1, 2]) ? creep
Exit: (7) lists:member(2, [0, 1, 2]) ? creep
Exit: (6) group([0, 1, 2], 3) ? creep
true ;
Redo: (7) lists:member(_G718, [0, 1, 2]) ? creep
Exit: (7) lists:member(1, [0, 1, 2]) ? creep
Call: (7) lists:member(_G718, [0, 1, 2]) ? creep
Exit: (7) lists:member(0, [0, 1, 2]) ? creep
^ Call: (7) _G721 is 1+0 ? creep
^ Exit: (7) 1 is 1+0 ? creep
^ Call: (7) _G724 is 1 mod 3 ? creep
^ Exit: (7) 1 is 1 mod 3 ? creep
Call: (7) lists:member(1, [0, 1, 2]) ? creep
Exit: (7) lists:member(1, [0, 1, 2]) ? creep
Exit: (6) group([0, 1, 2], 3) ? creep
true ;
Redo: (7) lists:member(1, [0, 1, 2]) ? creep
Fail: (7) lists:member(1, [0, 1, 2]) ? creep
Redo: (7) lists:member(_G718, [0, 1, 2]) ? creep
Exit: (7) lists:member(1, [0, 1, 2]) ? creep
^ Call: (7) _G721 is 1+1 ? creep
^ Exit: (7) 2 is 1+1 ? creep
^ Call: (7) _G724 is 2 mod 3 ? creep
^ Exit: (7) 2 is 2 mod 3 ? creep
Call: (7) lists:member(2, [0, 1, 2]) ? creep
Exit: (7) lists:member(2, [0, 1, 2]) ? creep
Exit: (6) group([0, 1, 2], 3) ? creep
true ;
Redo: (7) lists:member(_G718, [0, 1, 2]) ? creep
Exit: (7) lists:member(2, [0, 1, 2]) ? creep
^ Call: (7) _G721 is 1+2 ? creep
^ Exit: (7) 3 is 1+2 ? creep
^ Call: (7) _G724 is 3 mod 3 ? creep
^ Exit: (7) 0 is 3 mod 3 ? creep
Call: (7) lists:member(0, [0, 1, 2]) ? creep
Exit: (7) lists:member(0, [0, 1, 2]) ? creep
Exit: (6) group([0, 1, 2], 3) ? creep
true ;
Redo: (7) lists:member(0, [0, 1, 2]) ? creep
Fail: (7) lists:member(0, [0, 1, 2]) ? creep
Redo: (7) lists:member(_G718, [0, 1, 2]) ? creep
Exit: (7) lists:member(2, [0, 1, 2]) ? creep
Call: (7) lists:member(_G718, [0, 1, 2]) ? creep
Exit: (7) lists:member(0, [0, 1, 2]) ? creep
^ Call: (7) _G721 is 2+0 ? creep
^ Exit: (7) 2 is 2+0 ? creep
^ Call: (7) _G724 is 2 mod 3 ? creep
^ Exit: (7) 2 is 2 mod 3 ? creep
Call: (7) lists:member(2, [0, 1, 2]) ? creep
Exit: (7) lists:member(2, [0, 1, 2]) ? creep
Exit: (6) group([0, 1, 2], 3) ? creep
true ;
Redo: (7) lists:member(_G718, [0, 1, 2]) ? creep
Exit: (7) lists:member(1, [0, 1, 2]) ? creep
^ Call: (7) _G721 is 2+1 ? creep
^ Exit: (7) 3 is 2+1 ? creep
^ Call: (7) _G724 is 3 mod 3 ? creep
^ Exit: (7) 0 is 3 mod 3 ? creep
Call: (7) lists:member(0, [0, 1, 2]) ? creep
Exit: (7) lists:member(0, [0, 1, 2]) ? creep
Exit: (6) group([0, 1, 2], 3) ? creep
true ;
Redo: (7) lists:member(0, [0, 1, 2]) ? creep
Fail: (7) lists:member(0, [0, 1, 2]) ? creep
Redo: (7) lists:member(_G718, [0, 1, 2]) ? creep
Exit: (7) lists:member(2, [0, 1, 2]) ? creep
^ Call: (7) _G721 is 2+2 ? creep
^ Exit: (7) 4 is 2+2 ? creep
^ Call: (7) _G724 is 4 mod 3 ? creep
^ Exit: (7) 1 is 4 mod 3 ? creep
Call: (7) lists:member(1, [0, 1, 2]) ? creep
Exit: (7) lists:member(1, [0, 1, 2]) ? creep
Exit: (6) group([0, 1, 2], 3) ? creep
true ;
Redo: (7) lists:member(1, [0, 1, 2]) ? creep
Fail: (7) lists:member(1, [0, 1, 2]) ? creep
Fail: (6) group([0, 1, 2], 3) ? creep
false.