Nikola Beneš, Luboš Brim, Samuel Pastva, and David Šafránek
A finite set of states (S)
A finite set of labels (L)
A transition relation for each label:
By erasing labels, we get a normal directed graph...
Why labelled transition systems then?
Sets and relations are represented symbolically.
(We use binary decision diagrams)
With these we can build sets of forward and backward reachable states...
* saturation
LTS Operations
Goal: Identify the subsets of S that represent the bottom (terminal) strongly connected components (BSCCs).
Useful term: A subset of S is SCC-closed if whenever it contains some state x, it also contains the SCC "around" x.
while S != empty:
pivot = PICK(S);
B = BWD(pivot);
F = FWD(pivot);
if F is subset of B:
report F as BSCC;
S = S \ B;
Graph
Pivot Vertex ⇒
Graph
Pivot Vertex ⇒
Backward set (B) ⇒
while S != empty:
pivot = PICK(S);
B = BWD(pivot);
F = FWD(pivot);
if F is subset of B:
report F as BSCC;
S = S \ B;
Graph
Backward set (B) ⇒
Forward set (F) ⇒
while S != empty:
pivot = PICK(S);
B = BWD(pivot);
F = FWD(pivot);
if F is subset of B:
report F as BSCC;
S = S \ B;
Graph
⇐ Pivot Vertex
×
Useful "tricks":
SCC-closed!
while S != empty:
pivot = PICK(S);
B = BWD(pivot);
F = FWD(pivot);
if F is subset of B:
report F as BSCC;
S = S \ B;
Graph
10^30
10^10
0.000000000000000001%
⇐
Two ways this can go wrong:
×
×
×
×
×
×
×
×
y
x
x << y
Three ways...
Graph
×
reduce(S, pivots): B = BWD(pivots); F = FWD(pivots); S = S \ (B \ F); bottom = F \ B; B' = BWD(bottom); S = S \ (B' \ bottom); return S;
⇐ Pivot Set
reduce(S, pivots): B = BWD(pivots); F = FWD(pivots); S = S \ (B \ F); bottom = F \ B; B' = BWD(bottom); S = S \ (B' \ bottom); return S;
Backward set (B)
reduce(S, pivots): B = BWD(pivots); F = FWD(pivots); S = S \ (B \ F); bottom = F \ B; B' = BWD(bottom); S = S \ (B' \ bottom); return S;
Backward set (B)
Forward Set (F)
reduce(S, pivots): B = BWD(pivots); F = FWD(pivots); S = S \ (B \ F); bottom = F \ B; B' = BWD(bottom); S = S \ (B' \ bottom); return S;
Backward set (B)
Forward Set (F)
Because F is
SCC-closed
reduce(S, pivots): B = BWD(pivots); F = FWD(pivots); S = S \ (B \ F); bottom = F \ B; B' = BWD(bottom); S = S \ (B' \ bottom); return S;
Backward set (B)
Forward Set (F)
F \ B is also
SCC-closed
for every a in L: S = reduce(S, CanPost(a, S));
(T)ransition (G)uided (R)eduction
All BSCCs rarely use all transition labels. Using TGR, we prune the graph based on which transitions can be actually used infinitely often in the reachable state space.
a) TGR eliminates almost all non-BSCC states. ✓
b) Performance depends on the ordering of labels.
A lot.
Start reducing a.
Remove 10.000 states.
Start reducing b.
Remove 10^20 states.
...
Start reducing a.
Start reducing b.
Start reducing c.
Start reducing d.
Nothing
10^20 states
5.000 states
10^6 states
The process with the smallest symbolic representation advances in every step.
(I)nterleaved (T)ransition (G)uided (R)eduction
125 real models, up to 2^350 states ITGR vs. CABEAN
125 real + 100 random, up to 2^1000 states ITGR vs. TGR
Plus another 100 models with 2^1000 only!