alternation: add a states_and algorithm

This should will come handy to implement the convertion from LTL to
alternating automata, and to handle automata with multiple initial
states.

* spot/twaalgos/alternation.hh, spot/twaalgos/alternation.cc: New files.
* spot/twaalgos/Makefile.am: Add them.
* python/spot/impl.i: Add bindings.
* tests/python/alternating.py: Test states_and.
This commit is contained in:
Alexandre Duret-Lutz 2016-11-27 22:14:11 +01:00
parent 48c812a595
commit 27ab631cdc
5 changed files with 233 additions and 0 deletions

View file

@ -113,6 +113,7 @@
#include <spot/twa/taatgba.hh>
#include <spot/twa/twaproduct.hh>
#include <spot/twaalgos/alternation.hh>
#include <spot/twaalgos/cleanacc.hh>
#include <spot/twaalgos/degen.hh>
#include <spot/twaalgos/dot.hh>
@ -507,6 +508,7 @@ def state_is_accepting(self, src) -> "bool":
// Should come after the definition of twa_graph
%include <spot/twaalgos/alternation.hh>
%include <spot/twaalgos/cleanacc.hh>
%include <spot/twaalgos/degen.hh>
%include <spot/twaalgos/dot.hh>
@ -932,6 +934,13 @@ unblock_signal(int signum)
return sigprocmask(SIG_UNBLOCK, &set, 0);
}
// for alternation.hh
unsigned states_and(const spot::twa_graph_ptr& aut,
const std::vector<unsigned>& il)
{
return states_and(aut, il.begin(), il.end());
}
%}
%extend spot::parse_error_list {