spot
1.0
|
Check whether the language of a product (spot::ta_product) between a Kripke structure and a TA is empty. It works also for the product using Generalized TA (GTA and SGTA). More...
Modules | |
Emptiness-check algorithms |
Classes | |
class | spot::state_ta_product |
A state for spot::ta_product.This state is in fact a pair of state: the state from the TA automaton and that of Kripke structure. More... | |
class | spot::ta_product |
A lazy product between a Testing automaton and a Kripke structure. (States are computed on the fly.) More... | |
class | spot::ta_check |
An implementation of the emptiness-check algorithm for a product between a TA and a Kripke structure. More... |
Check whether the language of a product (spot::ta_product) between a Kripke structure and a TA is empty. It works also for the product using Generalized TA (GTA and SGTA).
you should call spot::ta_check::check() to check the product automaton. If spot::ta_check::check() returns false, then the product automaton was found empty. Otherwise the automaton accepts some run. This is based on the following paper. @verbatim
/// { geldenhuys.06.spin, /// author = {Jaco Geldenhuys and Henri Hansen}, /// title = {Larger Automata and Less Work for {LTL} Model Checking}, /// booktitle = {Proceedings of the 13th International SPIN Workshop /// (SPIN'06)}, /// year = {2006}, /// pages = {53–70}, /// series = {Lecture Notes in Computer Science}, /// volume = {3925}, /// publisher = {Springer} /// } ///
the implementation of spot::ta_check::check() is inspired from the two-pass algorithm of the paper above: - the fist-pass detect all Buchi-accepting cycles and includes the heuristic proposed in the paper to detect some livelock-accepting cycles. - the second-pass detect all livelock-accepting cycles. In addition, we add some optimizations to the fist pass: 1- Detection of all cycles containing a least one state that is both livelock and Buchi accepting states 2- Detection of all livelock-accepting cycles containing a least one state (k,t) such as its "TA component" t is a livelock-accepting state that has no successors in the TA automaton. The implementation of the algorithm of each pass is a SCC-based algorithm inspired from spot::gtec.hh.