^(State ){0,1}(\d*): <(?(?!Initial predicate).*)>\n\/\\ Clock = (?.*)\n\/\\ pc = (.*)\n\/\\ state = (.*)\n\/\\ Host = (?.*)\n\/\\ msgs = (?.*) 1: /\ Clock = {"'p1':'0'", "'p2':'0'", "'p3':'0'"} /\ pc = (p1 :> 0 @@ p2 :> 0 @@ p3 :> 0) /\ state = ( p1 :> ( p1 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) @@ p2 :> ( p1 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) @@ p3 :> ( p1 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) ) /\ Host = "Init" /\ msgs = {} @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ p1 Prepare 2: /\ Clock = {"'p2':'0'", "'p3':'0'", "'p1':'1'"} /\ pc = (p1 :> 1 @@ p2 :> 0 @@ p3 :> 0) /\ state = ( p1 :> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) @@ p2 :> ( p1 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) @@ p3 :> ( p1 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) ) /\ Host = p1 /\ msgs = { [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "Prepare", from |-> p1, to |-> {p1, p2, p3} ] } @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ p2 OnMessage from p1 3: /\ Clock = {"'p3':'0'", "'p1':'1'", "'p2':'1'"} /\ pc = (p1 :> 1 @@ p2 :> 1 @@ p3 :> 0) /\ state = ( p1 :> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) @@ p2 :> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) @@ p3 :> ( p1 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) ) /\ Host = p2 /\ msgs = { [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "Prepare", from |-> p1, to |-> {p1, p2, p3} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "ACK", from |-> p2, to |-> {p1} ] } @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ p2 Accept (0, 0, v1) 4: /\ Clock = {"'p3':'0'", "'p1':'1'", "'p2':'2'"} /\ pc = (p1 :> 1 @@ p2 :> 2 @@ p3 :> 0) /\ state = ( p1 :> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) @@ p2 :> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) @@ p3 :> ( p1 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) ) /\ Host = p2 /\ msgs = { [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "Prepare", from |-> p1, to |-> {p1, p2, p3} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "ACK", from |-> p2, to |-> {p1} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "Accept", from |-> p2, to |-> {p1, p2, p3} ] } @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ p1 OnMessage: chosen = {v1} 5: /\ Clock = {"'p3':'0'", "'p2':'2'", "'p1':'2'"} /\ pc = (p1 :> 2 @@ p2 :> 2 @@ p3 :> 0) /\ state = ( p1 :> ( p1 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) @@ p2 :> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) @@ p3 :> ( p1 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) ) /\ Host = p1 /\ msgs = { [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "Prepare", from |-> p1, to |-> {p1, p2, p3} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "ACK", from |-> p2, to |-> {p1} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "Accept", from |-> p2, to |-> {p1, p2, p3} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "ACK", from |-> p1, to |-> {p2} ] } @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ p3 OnMessage (from p1) 6: /\ Clock = {"'p2':'2'", "'p1':'2'", "'p3':'1'"} /\ pc = (p1 :> 2 @@ p2 :> 2 @@ p3 :> 1) /\ state = ( p1 :> ( p1 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) @@ p2 :> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) @@ p3 :> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] ) ) /\ Host = p3 /\ msgs = { [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "Prepare", from |-> p1, to |-> {p1, p2, p3} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] ), type |-> "ACK", from |-> p3, to |-> {p1} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "ACK", from |-> p2, to |-> {p1} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "Accept", from |-> p2, to |-> {p1, p2, p3} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "ACK", from |-> p1, to |-> {p2} ] } @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ p3 Accept (0, 0, v2) 7: /\ Clock = {"'p2':'2'", "'p1':'2'", "'p3':'2'"} /\ pc = (p1 :> 2 @@ p2 :> 2 @@ p3 :> 2) /\ state = ( p1 :> ( p1 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) @@ p2 :> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) @@ p3 :> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v2] ) ) /\ Host = p3 /\ msgs = { [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "Prepare", from |-> p1, to |-> {p1, p2, p3} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] ), type |-> "ACK", from |-> p3, to |-> {p1} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v2] ), type |-> "Accept", from |-> p3, to |-> {p1, p2, p3} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "ACK", from |-> p2, to |-> {p1} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "Accept", from |-> p2, to |-> {p1, p2, p3} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "ACK", from |-> p1, to |-> {p2} ] } @!@!@ENDMSG 2217 @!@!@ @!@!@STARTMSG 2217:4 @!@!@ p2 OnMessage (from p3): chosen = {v1, v2} 8: /\ Clock = {"'p1':'2'", "'p3':'2'", "'p2':'3'"} /\ pc = (p1 :> 2 @@ p2 :> 3 @@ p3 :> 2) /\ state = ( p1 :> ( p1 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ) @@ p2 :> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v2] @@ p3 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v2] ) @@ p3 :> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v2] ) ) /\ Host = p2 /\ msgs = { [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "Prepare", from |-> p1, to |-> {p1, p2, p3} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] ), type |-> "ACK", from |-> p3, to |-> {p1} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v2] ), type |-> "Accept", from |-> p3, to |-> {p1, p2, p3} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "ACK", from |-> p2, to |-> {p1} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "Accept", from |-> p2, to |-> {p1, p2, p3} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> -1, maxVVal |-> None] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v2] @@ p3 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v2] ), type |-> "ACK", from |-> p2, to |-> {p3} ], [ state |-> ( p1 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p2 :> [maxBal |-> 0, maxVBal |-> 0, maxVVal |-> v1] @@ p3 :> [maxBal |-> -1, maxVBal |-> -1, maxVVal |-> None] ), type |-> "ACK", from |-> p1, to |-> {p2} ] }