[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: State tables
Long delayed, but here is the draft - one pdf from Excel of the tables, one informalish explanation, to be expanded and completed later. The delay was caused by trying to get them right. I have a program that emulates the exchanges between two endpoints following the tables and ensures that they don't get stuck, don't send each other messages the tables don't allow and ensure that: both sides cancel OR both side confirm OR the superior records that there was a contradiction The emulator includes the assumptions about the carrier included the text - it will cause disruptions, lose messages etc. The emulator does this by random walking, so it is possible there are still some errors. One of the quirks of the tables is that there are lot more things that can go wrong than right, so only about 1% of runs come to confirm-confirm, and most of those are where the inferior chose to confirm autonomously. (actually there are some bugs - I got 3 failures in 30000 runs last time), but I've had enough for now. Peter ------------------------------------------ Peter Furniss Technical Director, Choreology Ltd email: peter.furniss@choreology.com phone: +44 20 7670 1679 direct: +44 20 7670 1783 mobile: 07951 536168 13 Austin Friars, London EC2N 2JX PS Here are few of the runs from the program trial 41 superior inferior I1 :B1 <-------------------------ENROLL/no-rsp-req <-- i1 :b1 decide to vote ready === b1 :e0 B1 :D0 === decide to prepare VOTE/ready/spont <-- e0 :e2 decide to confirm autonomously === e2 :h0 D0 :D1 --> PREPARE D1 :E2 <-------------------VOTE/ready/spont PREPARE----------------------------> h0 :h0 E2 :H1 <---------------------------------CONFIRMED <-- h0 :h1 H1 :H2 === decide to confirm H2 :F1 --> CONFIRM-----------------------------------> h1 :z F1 :F5 *** reply timeout F5 :F6 --> SUP_STATUS/confirming/y-------------------> z :m11 F6 :Z <------------------------INF_STATUS/unknown <-- m11:z +:+ trial 42 superior inferior I1 :A1 <----------------------------ENROLL/rsp-req <-- i1 :a1 A1 :B1 --> ENROLLED B1 :G0 === decide to cancel G0 :G1 --> CANCEL reply timeout *** a1 :a5 G1 :G11 <-----------------------INF_STATUS/active/y <-- a5 :a6 G11:G1 --> CANCEL reply timeout *** a6 :a5 G1 :Z XXX disruption I Z :M11 <-----------------------INF_STATUS/active/y <-- a5 :a6 M11:Z --> SUP_STATUS/unknown reply timeout *** a6 :a5 Z :M11 <-----------------------INF_STATUS/active/y <-- a5 :a6 ENROLLED---------------------------> a6 :b1 decide to vote ready === b1 :e0 M11:Z --> SUP_STATUS/unknown CANCEL-----------------------------> e0 :g2 remove ready vote decision === g2 :g1 CANCEL-----------------------------> g1 :g1 SUP_STATUS/unknown-----------------> g1 :g1 CANCELLED <-- g1 :z SUP_STATUS/unknown-----------------> z :z Z :Z <--------------------------CANCELLED -: trial 43 superior inferior ENROLL/no-rsp-req <-- i1 :b1 decide to vote ready === b1 :e0 I1 :B1 <------------------ENROLL/no-rsp-req B1 :G0 === decide to cancel G0 :G1 --> CANCEL VOTE/ready/spont <-- e0 :e2 CANCEL-----------------------------> e2 :g2 remove ready vote decision === g2 :g1 G1 :G1 <-------------------VOTE/ready/spont G1 :G5 *** reply timeout G5 :Z <---------------------------------CANCELLED <-- g1 :z -: trial 44 superior inferior I1 :A1 <----------------------------ENROLL/rsp-req <-- i1 :a1 disruption I XXX a1 :z A1 :B1 --> ENROLLED B1 :G0 === decide to cancel ENROLLED---------------------------> z :z G0 :G1 --> CANCEL------------------------------------> z :z G1 :G5 *** reply timeout G5 :G6 --> SUP_STATUS/cancelling/y-------------------> z :m11 G6 :Z <------------------------INF_STATUS/unknown <-- m11:z -: trial 45 superior inferior I1 :B1 <-------------------------ENROLL/no-rsp-req <-- i1 :b1 B1 :D0 === decide to prepare decide to vote ready === b1 :e0 D0 :D1 --> PREPARE-----------------------------------> e0 :e1 D1 :G0 === decide to cancel G0 :G1 --> CANCEL G1 :G1 <--------------------------VOTE/ready/reply <-- e1 :e2 decide to confirm autonomously === e2 :h0 G1 :L0 <---------------------------------CONFIRMED <-- h0 :h1 L0 :L1 === record contradicted CANCEL-----------------------------> h1 :l1 L1 :L1 XXX disruption III L1 :Z XXX disruption I disruption I XXX l1 :l5 Z :M12 <-------------------------INF_STATUS/conf/y <-- l5 :l6 M12:M13 === record contradicted M13:Z --> CONTRADICTION-----------------------------> l6 :z -!:+
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Powered by eList eXpress LLC