% finding an
equilibrium
game(
[player(1,act(a1)), player(2,act(b1)) ], payoffs([1,1])).
game(
[player(1,act(a1)), player(2,act(b2)) ], payoffs([2,0])).
game(
[player(1,act(a2)), player(2,act(b1)) ], payoffs([0,2])).
game(
[player(1,act(a2)), player(2,act(b2))] , payoffs([-1,-1])).
nash(
[S1,S2], [P1,P2] ):-
game( [ player(1,act(S1)), player(2,act(S2)) ],
payoffs([P1,P2]) ),
\+ ( game([ player(1,act(_X)), player(2,act(S2)) ],
payoffs([Px,_]), Px >
P1 ),
\+ ( game( [
player(1,act(S1)),
player(2,act(_Y))], payoffs([_,Py])), Py > P2 ).