-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Describe the bug
複数エージェントが独裁になる場合(オリガーキー)がdict(1)判定されている.
これは以下のscf/4述語の定義に起因する.
% 独裁性のテストを追加
scf( Type, F, D, Z ):-
scf( Type, F, D ),
( dictatorial_scf( Type, J, F ) -> W=dict(J); W=poss ),
Z = W.
社会選択理論における通例にしたがい,非独裁的であり,可能領域(poss)として扱うべきである.
scf( Type, F, D, Z ):-
scf( Type, F, D ),
findall( J, dictatorial_scf( Type, J, F ), L ),
( sort( L, [J] ) -> W=dict(J); W=poss ), % 独裁者が一人([J])の場合のみ dict(J)
Z = W.
To Reproduce
A query to reproduce the behavior:
?- findall( [P,P],(pp([P,P])), D ), check_scf( arrow-_, D, Z).
D = [[[a, b, c], [a, b, c]], [[a, c, b], [a, c, b]], [[b, a, c], [b, a, c]], [[b, c, a], [b, c, a]], [[c, a, b], [c, a|...]], [[c, b|...], [c|...]]],
Z = dict.
Expected behavior
?- findall( [P,P],(pp([P,P])), D ), scf( arrow-_, F, D, Z).
D = [[[a, b, c], [a, b, c]], [[a, c, b], [a, c, b]], [[b, a, c], [b, a, c]], [[b, c, a], [b, c, a]], [[c, a, b], [c, a|...]], [[c, b|...], [c|...]]],
F = [[[c, b, a], [c, b, a]]-[c, b, a], [[c, a, b], [c, a, b]]-[c, a, b], [[b, c, a], [b, c, a]]-[b, c, a], [[b, a, c], [b, a|...]]-[b, a, c], [[a, c|...], [a|...]]-[a, c, b], [[a|...], [...|...]]-[a, b|...]],
Z = poss .
?- findall( [P,P],(pp([P,P])), D ), scf( arrow-, F, D, Z), fig( arrow-, F ), write(Z-swf), fail.
1 2 3 4 5 6
------------------
1:[a,b,c] 1 - - - - -
2:[a,c,b] - 2 - - - -
3:[b,a,c] - - 3 - - -
4:[b,c,a] - - - 4 - -
5:[c,a,b] - - - - 5 -
6:[c,b,a] - - - - - 6
--poss-swf
false.
Desktop (please complete the following information):
- OS: Windows 11 25H2 (AMD Ryzen AI 7 350 w/ Radeon 860M 2.00 GHz)
- Browser [e.g. chrome, edge]
- Version []