Skip to content

scf/4におけるdict or possの判定 #2

@kindo2018

Description

@kindo2018

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 []

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions