@@ -10,7 +10,8 @@ def exampleNoViolation : Json := json% {"termination_reason": {"kind": "explored
1010
1111#displayTrace exampleNoViolation
1212
13- def exampleViolation : Json := json% {"violation_kind" : "safety_failure" ,
13+ def ringViolation : Json := json% {"violation" :
14+ {"violates" : ["single_leader" , "leader_greatest" ], "kind" : "safety_failure" },
1415 "trace" :
1516 {"theory" :
1617 {"baaaa" :
@@ -49,19 +50,108 @@ def exampleViolation : Json := json% {"violation_kind": "safety_failure",
4950 {"transition" : {"send" : {"next" : 2 , "n" : 1 }},
5051 "index" : 2 ,
5152 "fields" : {"pending" : [[0 , 1 ], [1 , 2 ]], "leader" : []}},
52- {"transition" : {"recv " : {"sender" : 0 , " next" : 2 , "n" : 1 }},
53+ {"transition" : {"send " : {"next" : 3 , "n" : 2 }},
5354 "index" : 3 ,
54- "fields" : {"pending" : [[0 , 1 ], [1 , 2 ]] , "leader" : [1 ]}},
55- {"transition" : {"recv " : {"sender" : 1 , " next" : 3 , "n" : 2 }},
55+ "fields" : {"pending" : [[0 , 1 ], [1 , 2 ], [ 2 , 3 ]] , "leader" : []}},
56+ {"transition" : {"send " : {"next" : 4 , "n" : 3 }},
5657 "index" : 4 ,
57- "fields" : {"pending" : [[0 , 1 ], [1 , 2 ]], "leader" : [1 , 2 ]}}]},
58+ "fields" : {"pending" : [[0 , 1 ], [1 , 2 ], [2 , 3 ], [3 , 4 ]], "leader" : []}},
59+ {"transition" : {"send" : {"next" : 0 , "n" : 4 }},
60+ "index" : 5 ,
61+ "fields" :
62+ {"pending" : [[0 , 1 ], [1 , 2 ], [2 , 3 ], [3 , 4 ], [4 , 0 ]], "leader" : []}},
63+ {"transition" : {"recv" : {"sender" : 0 , "next" : 2 , "n" : 1 }},
64+ "index" : 6 ,
65+ "fields" : {"pending" : [[1 , 2 ], [2 , 3 ], [3 , 4 ], [4 , 0 ]], "leader" : [1 ]}},
66+ {"transition" : {"recv" : {"sender" : 1 , "next" : 3 , "n" : 2 }},
67+ "index" : 7 ,
68+ "fields" : {"pending" : [[2 , 3 ], [3 , 4 ], [4 , 0 ]], "leader" : [1 , 2 ]}},
69+ {"transition" : {"recv" : {"sender" : 2 , "next" : 4 , "n" : 3 }},
70+ "index" : 8 ,
71+ "fields" : {"pending" : [[3 , 4 ], [4 , 0 ]], "leader" : [1 , 2 , 3 ]}},
72+ {"transition" : {"recv" : {"sender" : 3 , "next" : 0 , "n" : 4 }},
73+ "index" : 9 ,
74+ "fields" : {"pending" : [[4 , 0 ]], "leader" : [1 , 2 , 3 , 4 ]}},
75+ {"transition" : {"recv" : {"sender" : 4 , "next" : 1 , "n" : 0 }},
76+ "index" : 10 ,
77+ "fields" : {"pending" : [], "leader" : [0 , 1 , 2 , 3 , 4 ]}}]},
78+ "state_fingerprint" : "16335755120522489119" ,
5879 "result" : "found_violation" }
5980
81+ #displayTrace ringViolation
82+
83+ def exampleViolation : Json := json% {"violation" :
84+ {"violates" : ["single_leader" , "leader_greatest" ], "kind" : "safety_failure" },
85+ "trace" :
86+ {"theory" :
87+ {"baaaa" :
88+ [[0 , 0 , 0 ],
89+ [0 , 1 , 0 ],
90+ [0 , 2 , 0 ],
91+ [0 , 3 , 0 ],
92+ [0 , 4 , 0 ],
93+ [1 , 0 , 0 ],
94+ [1 , 1 , 0 ],
95+ [1 , 2 , 0 ],
96+ [1 , 3 , 0 ],
97+ [1 , 4 , 0 ],
98+ [2 , 0 , 0 ],
99+ [2 , 1 , 0 ],
100+ [2 , 2 , 0 ],
101+ [2 , 3 , 0 ],
102+ [2 , 4 , 0 ],
103+ [3 , 0 , 0 ],
104+ [3 , 1 , 0 ],
105+ [3 , 2 , 0 ],
106+ [3 , 3 , 0 ],
107+ [3 , 4 , 0 ],
108+ [4 , 0 , 0 ],
109+ [4 , 1 , 0 ],
110+ [4 , 2 , 0 ],
111+ [4 , 3 , 0 ],
112+ [4 , 4 , 0 ]]},
113+ "states" :
114+ [{"transition" : "after_init" ,
115+ "index" : 0 ,
116+ "fields" : {"pending" : [], "leader" : []}},
117+ {"transition" : {"send" : {"next" : 1 , "n" : 0 }},
118+ "index" : 1 ,
119+ "fields" : {"pending" : [[0 , 1 ]], "leader" : []}},
120+ {"transition" : {"send" : {"next" : 2 , "n" : 1 }},
121+ "index" : 2 ,
122+ "fields" : {"pending" : [[0 , 1 ], [1 , 2 ]], "leader" : []}},
123+ {"transition" : {"send" : {"next" : 3 , "n" : 2 }},
124+ "index" : 3 ,
125+ "fields" : {"pending" : [[0 , 1 ], [1 , 2 ], [2 , 3 ]], "leader" : []}},
126+ {"transition" : {"send" : {"next" : 4 , "n" : 3 }},
127+ "index" : 4 ,
128+ "fields" : {"pending" : [[0 , 1 ], [1 , 2 ], [2 , 3 ], [3 , 4 ]], "leader" : []}},
129+ {"transition" : {"send" : {"next" : 0 , "n" : 4 }},
130+ "index" : 5 ,
131+ "fields" :
132+ {"pending" : [[0 , 1 ], [1 , 2 ], [2 , 3 ], [3 , 4 ], [4 , 0 ]], "leader" : []}},
133+ {"transition" : {"recv" : {"sender" : 0 , "next" : 2 , "n" : 1 }},
134+ "index" : 6 ,
135+ "fields" : {"pending" : [[1 , 2 ], [2 , 3 ], [3 , 4 ], [4 , 0 ]], "leader" : [1 ]}},
136+ {"transition" : {"recv" : {"sender" : 1 , "next" : 3 , "n" : 2 }},
137+ "index" : 7 ,
138+ "fields" : {"pending" : [[2 , 3 ], [3 , 4 ], [4 , 0 ]], "leader" : [1 , 2 ]}},
139+ {"transition" : {"recv" : {"sender" : 2 , "next" : 4 , "n" : 3 }},
140+ "index" : 8 ,
141+ "fields" : {"pending" : [[3 , 4 ], [4 , 0 ]], "leader" : [1 , 2 , 3 ]}},
142+ {"transition" : {"recv" : {"sender" : 3 , "next" : 0 , "n" : 4 }},
143+ "index" : 9 ,
144+ "fields" : {"pending" : [[4 , 0 ]], "leader" : [1 , 2 , 3 , 4 ]}},
145+ {"transition" : {"recv" : {"sender" : 4 , "next" : 1 , "n" : 0 }},
146+ "index" : 10 ,
147+ "fields" : {"pending" : [], "leader" : [0 , 1 , 2 , 3 , 4 ]}}]},
148+ "state_fingerprint" : "16335755120522489119" ,
149+ "result" : "found_violation" }
60150
61151#displayTrace exampleViolation
62152
63153
64- def exampleDeadlock : Json := json% {"violation_kind " : " deadlock" ,
154+ def exampleDeadlock : Json := json% {"violation " : { "kind" : " deadlock"} ,
65155 "trace" :
66156 {"theory" : {"none" : 0 },
67157 "states" :
@@ -360,6 +450,75 @@ def exampleDeadlock : Json := json% {"violation_kind": "deadlock",
360450 [2 , "Mutex.states_IndT.check_has_woken" ]],
361451 "locked" : false ,
362452 "has_woken" : [1 ]}}]},
453+ "state_fingerprint" : "4263100916297288679" ,
363454 "result" : "found_violation" }
364455
365456 #displayTrace exampleDeadlock
457+
458+
459+ def exampleNoViolationTrace : Json := json% {
460+ "trace" :
461+ {"theory" :
462+ {"baaaa" :
463+ [[0 , 0 , 0 ],
464+ [0 , 1 , 0 ],
465+ [0 , 2 , 0 ],
466+ [0 , 3 , 0 ],
467+ [0 , 4 , 0 ],
468+ [1 , 0 , 0 ],
469+ [1 , 1 , 0 ],
470+ [1 , 2 , 0 ],
471+ [1 , 3 , 0 ],
472+ [1 , 4 , 0 ],
473+ [2 , 0 , 0 ],
474+ [2 , 1 , 0 ],
475+ [2 , 2 , 0 ],
476+ [2 , 3 , 0 ],
477+ [2 , 4 , 0 ],
478+ [3 , 0 , 0 ],
479+ [3 , 1 , 0 ],
480+ [3 , 2 , 0 ],
481+ [3 , 3 , 0 ],
482+ [3 , 4 , 0 ],
483+ [4 , 0 , 0 ],
484+ [4 , 1 , 0 ],
485+ [4 , 2 , 0 ],
486+ [4 , 3 , 0 ],
487+ [4 , 4 , 0 ]]},
488+ "states" :
489+ [{"transition" : "after_init" ,
490+ "index" : 0 ,
491+ "fields" : {"pending" : [], "leader" : []}},
492+ {"transition" : {"send" : {"next" : 1 , "n" : 0 }},
493+ "index" : 1 ,
494+ "fields" : {"pending" : [[0 , 1 ]], "leader" : []}},
495+ {"transition" : {"send" : {"next" : 2 , "n" : 1 }},
496+ "index" : 2 ,
497+ "fields" : {"pending" : [[0 , 1 ], [1 , 2 ]], "leader" : []}},
498+ {"transition" : {"send" : {"next" : 3 , "n" : 2 }},
499+ "index" : 3 ,
500+ "fields" : {"pending" : [[0 , 1 ], [1 , 2 ], [2 , 3 ]], "leader" : []}},
501+ {"transition" : {"send" : {"next" : 4 , "n" : 3 }},
502+ "index" : 4 ,
503+ "fields" : {"pending" : [[0 , 1 ], [1 , 2 ], [2 , 3 ], [3 , 4 ]], "leader" : []}},
504+ {"transition" : {"send" : {"next" : 0 , "n" : 4 }},
505+ "index" : 5 ,
506+ "fields" :
507+ {"pending" : [[0 , 1 ], [1 , 2 ], [2 , 3 ], [3 , 4 ], [4 , 0 ]], "leader" : []}},
508+ {"transition" : {"recv" : {"sender" : 0 , "next" : 2 , "n" : 1 }},
509+ "index" : 6 ,
510+ "fields" : {"pending" : [[1 , 2 ], [2 , 3 ], [3 , 4 ], [4 , 0 ]], "leader" : [1 ]}},
511+ {"transition" : {"recv" : {"sender" : 1 , "next" : 3 , "n" : 2 }},
512+ "index" : 7 ,
513+ "fields" : {"pending" : [[2 , 3 ], [3 , 4 ], [4 , 0 ]], "leader" : [1 , 2 ]}},
514+ {"transition" : {"recv" : {"sender" : 2 , "next" : 4 , "n" : 3 }},
515+ "index" : 8 ,
516+ "fields" : {"pending" : [[3 , 4 ], [4 , 0 ]], "leader" : [1 , 2 , 3 ]}},
517+ {"transition" : {"recv" : {"sender" : 3 , "next" : 0 , "n" : 4 }},
518+ "index" : 9 ,
519+ "fields" : {"pending" : [[4 , 0 ]], "leader" : [1 , 2 , 3 , 4 ]}},
520+ {"transition" : {"recv" : {"sender" : 4 , "next" : 1 , "n" : 0 }},
521+ "index" : 10 ,
522+ "fields" : {"pending" : [], "leader" : [0 , 1 , 2 , 3 , 4 ]}}]}}
523+
524+ #displayTrace exampleNoViolationTrace
0 commit comments