You selected glogic01.pl
% glogic01.pl --- logic programming model for extensive form games.
% created: 22 Aug 2003. (was: glogic.pl, 10 July 2003).
% modified: 14,17 Sep 2003.
% References:
% Bonanno-Vilks's propositional logic modeling for game tree.
% Aumann(1995, GEB)'s theorem of the backward induction under common knowledge.
% extensive form game theory : game tree model
%------------------------------------------
terminal([c,a]).
terminal([d,a]).
%terminal([b]).
terminal([e,b]).
terminal([f,b]).
% payoff (play_history,player,payoff).
payoff([c,a],1,0).
payoff([d,a],1,2).
%payoff([b],1,1).
payoff([e,b],1,4).
payoff([f,b],1,1).
payoff([c,a],2,3).
payoff([d,a],2,2).
%payoff([b],2,0).
payoff([e,b],2,3).
payoff([f,b],2,4).
player(1).
player(2).
% player's information (player,name,path)
players_information(1,h1,[]).
players_information(2,h2,[a]).
players_information(2,h3,[b]).
node(terminal,Y):-
terminal(Y).
node(players_information(J,H),Y):-
players_information(J,H,Y).
% possible act at information set(name,player,act)
possible_act(h1,1,a).
possible_act(h1,1,b).
possible_act(h2,2,c).
possible_act(h2,2,d).
possible_act(h3,2,e).
possible_act(h3,2,f).
% a game play simulator --- not always rational one
%----------------------------------------------
generate_play_history([],[]).
generate_play_history([J|P],[A|Y]):-
length(Y,K),
(K>1->!,fail;true),
generate_play_history(P,Y),
players_information(J,H,Y),
possible_act(H,J,A).
% rational play model ---- backward induction
% for perfect information games.
%----------------------------------------------
is_rational_play(J,A,H,Y):-
players_information(J,H,Y),
max(U,inductive_payoff([A|Y],J,U)).
inductive_payoff(Y,J,U):-
payoff(Y,J,U).
inductive_payoff(Y,J,U):-
% member((H,Y),[(h1,[a]),(h2,[b]),(h3,[])]),
is_rational_play(_J1,A,_H,Y),
inductive_payoff([A|Y],J,U).
inductive_payoff_vector(Y,Js,Us):-
node(_,Y),
findall(J,player(J),Js),
findall(U,
(
player(J),
inductive_payoff(Y,J,U)
),
Us).
% maximal solution for given goal clause : a naive solver
%---------------------------------------------------------
max(X,Goal):-
% X: the objective variable,
% Goal: the objective function and constraints,
setof((X,Goal),Goal,Z),
member((X,Goal),Z),
\+ (
member((Y,_),Z),
Y > X
).
/* game tree in fig.12.2 of Vilks(1997) */
% [0]
% | a1
% |_____[1]
% | | c2
% | |______[3]
% | | d2
% | |______[4]
% | b1
% |_____[2]
example(1,[
(a1;b1),
\+ (a1,b1),
(a1->(c2;d2)),
((c2;d2)->a1),
\+ (c2,d2),
(b1->(pai(1)=1,pai(2)=0)),
(c2->(pai(1)=1,pai(2)=0)),
(d2->(pai(1)=0,pai(2)=1))
]).
% [0]
% | a1
% |_____[1]
% | | c2
% | |______[3]
% | | d2
% | |______[4]
% | b1
% |_____[5]
% | e2
% |______[6]
% | f2
% |______[7]
example(2,[
(a1;b1),
\+ (a1,b1),
(a1->(c2;d2)),
((c2;d2)->a1),
\+ (c2,d2),
(b1->(e2;f2)),
\+ (e2,f2),
(c2->(pai(1)=0,pai(2)=4)),
(d2->(pai(1)=2,pai(2)=3)),
(e2->(pai(1)=3,pai(2)=2)),
(f2->(pai(1)=4,pai(2)=1))
]).
%
rationality(2,[
(c2;d2;e2;f2),
(e2->(pai(2)=<2)),
(c2->(pai(2)>=4)),
2<4
],
'|-->',
[\+ e2]
).
% end of program
return to front page.