Add an algorithm to split an automaton in several automata. * bench/scc-stats: New directory. Contains input files and test program for computing statistics. * bench/split-product: New directory. Contains test program for synchronised product on splitted automata. * bench/split-product/models: New directory. Contains Promela files and LTL formulae that should be verified by the models. * src/tgba/tgbafromfile.cc, src/tgba/tgbafromfile.hh: New files. Small class to avoid long initializations with numerous constants when translating to TGBA many LTL formulae from a given file. * src/tgbaalgos/cutscc.cc, src/tgbaalgos/cutscc.hh: New file. From a single automaton, create, at most, X sub automata. * src/tgbaalgos/scc.cc, src/tgbaalgos/scc.hh: Adjust to compute self-loops count.
55 lines
No EOL
2.7 KiB
Text
55 lines
No EOL
2.7 KiB
Text
[](!p0)
|
|
<>p1 -> (!p0 U p1)
|
|
[](p2 -> [](!p0))
|
|
[]((p2 & !p1 & <>p1) -> (!p0 U p1))
|
|
[](p2 & !p1 -> (!p0 U (p1 | []!p0)))
|
|
<>(p0)
|
|
!p1 U ((p0 & !p1) | []!p1)
|
|
[](!p2) | <>(p2 & <>p0)
|
|
[](p2 & !p1 -> (!p1 U ((p0 & !p1) | []!p1)))
|
|
[](p2 & !p1 -> (!p1 U (p0 & !p1)))
|
|
<>p1 -> ((!p0 & !p1) U (p1 | ((p0 & !p1) U (p1 | ((!p0 & !p1) U (p1 | ((p0 & !p1) U (p1 | (!p0 U p1)))))))))
|
|
[]((p2 & <>p1) -> ((!p0 & !p1) U (p1 | ((p0 & !p1) U (p1 | ((!p0 & !p1) U (p1 | ((p0 & !p1) U (p1 | (!p0 U p1))))))))))
|
|
[](p2 -> ((!p0 & !p1) U (p1 | ((p0 & !p1) U (p1 | ((!p0 & !p1) U (p1 | ((p0 & !p1) U (p1 | (!p0 U (p1 | []!p0)) | []p0)))))))))
|
|
[](p0)
|
|
<>p1 -> (p0 U p1)
|
|
[](p2 -> [](p0))
|
|
[]((p2 & !p1 & <>p1) -> (p0 U p1))
|
|
[](p2 & !p1 -> (p0 U (p1 | [] p0)))
|
|
!p0 U (p3 | []!p0)
|
|
<>p1 -> (!p0 U (p3 | p1))
|
|
[]!p2 | <>(p2 & (!p0 U (p3 | []!p0)))
|
|
[]((p2 & !p1 & <>p1) -> (!p0 U (p3 | p1)))
|
|
[](p2 & !p1 -> (!p0 U ((p3 | p1) | []!p0)))
|
|
[](p0 -> <>p3)
|
|
<>p1 -> (p0 -> (!p1 U (p3 & !p1))) U p1
|
|
[](p2 -> [](p0 -> <>p3))
|
|
[]((p2 & !p1 & <>p1) -> (p0 -> (!p1 U (p3 & !p1))) U p1)
|
|
[](p2 & !p1 -> ((p0 -> (!p1 U (p3 & !p1))) U (p1 | [](p0 -> (!p1 U (p3 & !p1))))))
|
|
<>p0 -> (!p0 U (p3 & !p0 & X(!p0 U p4)))
|
|
<>p1 -> (!p0 U (p1 | (p3 & !p0 & X(!p0 U p4))))
|
|
([]!p2) | (!p2 U (p2 & <>p0 -> (!p0 U (p3 & !p0 & X(!p0 U p4)))))
|
|
[]((p2 & <>p1) -> (!p0 U (p1 | (p3 & !p0 & X(!p0 U p4)))))
|
|
[](p2 -> (<>p0 -> (!p0 U (p1 | (p3 & !p0 & X(!p0 U p4))))))
|
|
(<>(p3 & X<>p4)) -> ((!p3) U p0)
|
|
<>p1 -> ((!(p3 & (!p1) & X(!p1 U (p4 & !p1)))) U (p1 | p0))
|
|
([]!p2) | ((!p2) U (p2 & ((<>(p3 & X<>p4)) -> ((!p3) U p0))))
|
|
[]((p2 & <>p1) -> ((!(p3 & (!p1) & X(!p1 U (p4 & !p1)))) U (p1 | p0)))
|
|
[](p2 -> (!(p3 & (!p1) & X(!p1 U (p4 & !p1))) U (p1 | p0) | [](!(p3 & X<>p4))))
|
|
[] (p3 & X<> p4 -> X(<>(p4 & <> p0)))
|
|
<>p1 -> (p3 & X(!p1 U p4) -> X(!p1 U (p4 & <> p0))) U p1
|
|
[] (p2 -> [] (p3 & X<> p4 -> X(!p4 U (p4 & <> p0))))
|
|
[] ((p2 & <>p1) -> (p3 & X(!p1 U p4) -> X(!p1 U (p4 & <> p0))) U p1)
|
|
[] (p2 -> (p3 & X(!p1 U p4) -> X(!p1 U (p4 & <> p0))) U (p1 | [] (p3 & X(!p1 U p4) -> X(!p1 U (p4 & <> p0)))))
|
|
[] (p0 -> <>(p3 & X<>p4))
|
|
<>p1 -> (p0 -> (!p1 U (p3 & !p1 & X(!p1 U p4)))) U p1
|
|
[] (p2 -> [] (p0 -> (p3 & X<> p4)))
|
|
[] ((p2 & <>p1) -> (p0 -> (!p1 U (p3 & !p1 & X(!p1 U p4)))) U p1)
|
|
[] (p2 -> (p0 -> (!p1 U (p3 & !p1 & X(!p1 U p4)))) U (p1 | [] (p0 -> (p3 & X<> p4))))
|
|
[] (p0 -> <>(p3 & !p5 & X(!p5 U p4)))
|
|
<>p1 -> (p0 -> (!p1 U (p3 & !p1 & !p5 & X((!p1 & !p5) U p4)))) U p1
|
|
[] (p2 -> [] (p0 -> (p3 & !p5 & X(!p5 U p4))))
|
|
[] ((p2 & <>p1) -> (p0 -> (!p1 U (p3 & !p1 & !p5 & X((!p1 & !p5) U p4)))) U p1)
|
|
[] (p2 -> (p0 -> (!p1 U (p3 & !p1 & !p5 & X((!p1 & !p5) U p4)))) U (p1 | [] (p0 -> (p3 & !p5 & X(!p5 U p4)))))
|
|
!p0 U ((p0 U ((!p0 U ((p0 U ([]!p0 | []p0)) | []!p0)) | []!p0)) | []!p0)
|
|
<>p2 -> (!p2 U (p2 & (!p0 U ((p0 U ((!p0 U ((p0 U ([]!p0 | []p0)) | []!p0)) | []!p0)) | []!p0)))) |