#define elected (nr_leaders > 0) #define noLeader (nr_leaders == 0) #define oneLeader (nr_leaders == 1) /* * Formula As Typed: <>[]oneLeader * The Never Claim Below Corresponds * To The Negated Formula !(<>[]oneLeader) * (formalizing violations of the original) */ never { /* !(<>[]oneLeader) */ T0_init: if :: (1) -> goto T0_init :: (! ((oneLeader))) -> goto accept_S5 fi; accept_S5: if :: (1) -> goto T0_init fi; accept_all: skip } #ifdef NOTES Some other properties: ![] noLeader <> elected [] (noLeader U oneLeader) #endif #ifdef RESULT warning: for p.o. reduction to be valid the never claim must be stutter-closed (never claims generated from LTL formulae are stutter-closed) (Spin Version 3.1.2 -- 14 March 1998) + Partial Order Reduction Full statespace search for: never-claim + assertion violations + (if within scope of claim) acceptance cycles + (fairness disabled) invalid endstates - (disabled by never-claim) State-vector 200 byte, depth reached 233, errors: 0 202 states, stored (402 visited) 281 states, matched 683 transitions (= visited+matched) 36 atomic steps hash conflicts: 0 (resolved) (max size 2^19 states) 2.542 memory usage (Mbyte) unreached in proctype node line 105, state 28, "out!two,nr" (1 of 49 states) unreached in proctype :init: (0 of 11 states) real 0.13 user 0.04 sys 0.09 #endif