System{MM{ turns{magnitude:multiple, ordering:strict} roles{speaker, listener, Participant} players{min:2, max:2} player{id:Initiator} store{id:InitialPoint, owner:shared, structure:set, visibility:public, {"Britain should disarm"}} backtrack{on} /* -- RULES -- */ rule{id:StartingRule, scope:initial, { assign(Initiator,speaker) & move(add, future, AgreeReason,{p,q},Initiator,{inspect(in,{p},InitialPoint)}) & move(add, future, DisagreeReason,{p,q},Initiator,{inspect(in,{p},InitialPoint)}) & move(add, future, Question, $Participant, {p}, Initiator, {inspect(in, {p}, InitialPoint)}) & move(add, future, Challenge, $Participant, {p}, Initiator, {inspect(in, {p}, InitialPoint)}) } } /* -- INTERACTIONS -- */ interaction{AgreeReason, {p,q}, Asserting, {p}, Asserting, {q}, Arguing, {<{q},{p}>, DefaultInference}, "I agree with $p because $q", { if { player(Initiator) } then { move(add, future, AgreeReason, {q,r}, Initiator) & move(add, future, DisagreeReason, {q,r}, Initiator) & move(add, future, Question, $Participant, {q}, Initiator) & move(add, future, Challenge, $Participant, {q}, Initiator) & move(add, future, AgreeReason, {p,s}, Initiator) } else { assign(Initiator, speaker) & move(add, future, AgreeReason, {q,r}, Initiator) & move(add, future, DisagreeReason, {q,r}, Initiator) & move(add, future, Question, $Participant, {q}, Initiator) & move(add, future, Challenge, $Participant, {q}, Initiator) } } } interaction{DisagreeReason, {p,q}, Asserting, {p}, Asserting, {q}, Contradicting, {<{q},{p}>, DefaultConflict}, "I disagree with $p because $q", { if { player(Initiator) } then { move(add, future, AgreeReason, {q,r}, Initiator) & move(add, future, DisagreeReason, {q,r}, Initiator) & move(add, future, Question, $Participant, {q}, Initiator) & move(add, future, Challenge, $Participant, {q}, Initiator) & move(add, future, DisagreeReason, {p,s}, Initiator) } else { assign(Initiator, speaker) & move(add, future, AgreeReason, {q,r}, Initiator) & move(add, future, DisagreeReason, {q,r}, Initiator) & move(add, future, Question, $Participant, {q}, Initiator) & move(add, future, Challenge, $Participant, {q}, Initiator) } } } interaction{Agree, {p}, Asserting, {p}, "I agree with $p", { assign(Initiator,speaker) } } interaction{Disagree, {p}, Disagreeing, {p}, "I disagree with $p", { assign(Initiator,speaker) } } interaction{Question, $Participant, {p}, Questioning, {p}, "Do you agree with $p?", { move(add, next, AgreeReason, {p,q}, Target) & move(add, next, DisagreeReason, {p,q}, Target) & move(add, next, Agree, {p}, Target) & move(add, next, Disagree, {p}, Target) & move(add, next, NoOpinion, {p}, Target) & assign(Target, speaker) } } interaction{Challenge, $Participant, {p}, Challenging, {p}, "Why is $p the case?", { move(add, next, Respond, {p,q}, Target) & move(add, next, NoDetails, {p}, Target) & assign(Target, speaker) } } interaction{Respond, {p,q}, Asserting, {q}, Arguing, {<{q},{p}>, DefaultInference}, "$p because $q", { move(add, future, AgreeReason, {q,r}, Initiator) & move(add, future, DisagreeReason, {q,r}, Initiator) & move(add, future, Question, $Participant, {q}, Initiator) & move(add, future, Challenge, $Participant, {q}, Initiator) & move(add, future, AgreeReason, {p,s}, Initiator) & assign(Initiator, speaker) } } interaction{NoOpinion, {p}, "I don't have an opinion about $p", { assign(Initiator,speaker) } } interaction{NoDetails, {p}, "I have no further details regarding $p", { assign(Initiator,speaker) } } }}