// CSG model of medium access control // extends model of // Brenguier, R.: PRALINE: A tool for computing Nash equilibria in concurrent games. // In: Proc. CAV’13. LNCS, vol. 8044, pp. 890–895. Springer (2013) // with probability of failure with one or both players transmit csg player p1 mac1 endplayer player p2 mac2 endplayer const int emax; // energy bound const double q1; // probability single user successfully transmits const double q2; // probability two users successfully transmit module channel // used to compute joint probability distribution for transmission failure c : bool init false; // is there a collision? [t1,w2] true -> q1 : (c'=false) + (1-q1) : (c'=true); // only user 1 transmits [w1,t2] true -> q1 : (c'=false) + (1-q1) : (c'=true); // only user 2 transmits [t1,t2] true -> q2 : (c'=false) + (1-q2) : (c'=true); // both users transmit endmodule module mac1 // user 1 s1 : [0..1] init 0; // has player 1 sent? e1 : [0..emax] init emax; // energy level of player 1 [w1] true -> (s1'=0); // wait [t1] e1>0 -> (s1'=c'?0:1) & (e1'=e1-1); // transmit endmodule // construct second user with renaming module mac2 = mac1 [ s1=s2, e1=e2, w1=w2, t1=t2 ] endmodule // reward structure for player 1 rewards "r1" s1=1 : 1; endrewards // reward structure for player 2 rewards "r2" s2=1 : 1; endrewards