% prisoners-dilemma. Dec 6, 2016 maxTime(6). % if prisoner P bears witness at time T and prisoner Q refuses at time T % then P gets 0 years in jail at time T+1 and Q gets 3 years in jail at time T+1. reactive_rule( [happens(bears_witness(P), T1, T2), happens(refuses(Q), T1, T2)], [happens(gets(P,0), T2, T3), happens(gets(Q,3), T2, T3)] ). % if prisoner P bears witness at time T and prisoner Q bears withness at time T % then P gets 2 years in jail at time T+1 and Q gets 2 years in jail at time T+1. reactive_rule( [happens(bears_witness(P), T1, T2), happens(bears_witness(Q), T1, T2), other(P,Q) ], [happens(gets(P,2), T2, T3)] ). % if prisoner P refuses at time T and prisoner Q refuses at time T % then P gets 1 years in jail at time T+1 and Q gets 1 years in jail at time T+1. reactive_rule( [happens(refuses(P), T1, T2), happens(refuses(Q), T1, T2), other(P,Q)], [happens(gets(P,1), T2, T3)] ). % If one prisoner refuses at time T, % then other prisoner refuses at time T+1. reactive_rule( [happens(refuses(O), T1, T2), other(I, O)], [happens(refuses(I), T2, T3)] ). % If the one prisoner bears witness at time T, then other prisoner bears witness at time T+1. reactive_rule( [happens(bears_witness(O), T1, T2), other(I, O)], [happens(bears_witness(I), T2, T3)] ). initial_state([ total_years_in_jail(me, 0), total_years_in_jail(you, 0) ]). observe([refuses(you),bears_witness(me)], 2). other(me, you). other(you, me). initiated(happens(gets(Prisoner, Years), T1, T2), total_years_in_jail(Prisoner, NewYears), [holds(total_years_in_jail(Prisoner, OldYears),T1), NewYears is OldYears + Years]). terminated(happens(gets(Prisoner, Years), T1, T2),total_years_in_jail(Prisoner, _), []). action(refuses(_)). action(bears_witness(_)). action(gets(_,_)). fluent(total_years_in_jail(_, _)). /* observe([ bears_witness(p), refuses(q) ], 1 ). observe([ bears_witness(p), bears_witness(q) ], 2 ). observe([ refuses(p), refuses(q) ], 3 ). */