Add a new form of TA with a Single-pass emptiness check (STA)
* src/ta/ta.cc, src/ta/ta.hh, src/ta/taexplicit.cc, src/ta/taexplicit.hh, src/ta/taproduct.cc,src/ta/taproduct.hh, src/taalgos/dotty.cc, src/taalgos/emptinessta.cc, src/taalgos/emptinessta.hh, src/taalgos/minimize.cc, src/taalgos/reachiter.cc, src/taalgos/sba2ta.cc, src/taalgos/sba2ta.hh, src/tgbatest/ltl2ta.test, src/tgbatest/ltl2tgba.cc: Impacts of the implementation of a new variant of TA, called STA, which involve a Single-pass emptiness check. The new options (-in and -lv) added to build the new variants of TA allow to add two artificial states: 1- an initial artificial state to have an unique initial state (-in) 2- a livelock artificial state which has no successors in order to obtain the new form of TA which requires only a Single-pass emptiness- check: STA (-lv).
This commit is contained in:
parent
310973f88c
commit
782ba0010b
15 changed files with 1224 additions and 711 deletions
88
src/ta/ta.cc
88
src/ta/ta.cc
|
|
@ -19,62 +19,64 @@
|
|||
// 02111-1307, USA.
|
||||
|
||||
|
||||
|
||||
#include "ta.hh"
|
||||
|
||||
namespace spot
|
||||
{
|
||||
|
||||
|
||||
spot::state*
|
||||
ta::get_artificial_initial_state() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
scc_stack_ta::connected_component::connected_component(int i)
|
||||
{
|
||||
index = i;
|
||||
is_accepting = false;
|
||||
}
|
||||
{
|
||||
index = i;
|
||||
is_accepting = false;
|
||||
}
|
||||
|
||||
scc_stack_ta::connected_component&
|
||||
scc_stack_ta::top()
|
||||
{
|
||||
return s.front();
|
||||
}
|
||||
scc_stack_ta::connected_component&
|
||||
scc_stack_ta::top()
|
||||
{
|
||||
return s.front();
|
||||
}
|
||||
|
||||
const scc_stack_ta::connected_component&
|
||||
scc_stack_ta::top() const
|
||||
{
|
||||
return s.front();
|
||||
}
|
||||
const scc_stack_ta::connected_component&
|
||||
scc_stack_ta::top() const
|
||||
{
|
||||
return s.front();
|
||||
}
|
||||
|
||||
void
|
||||
scc_stack_ta::pop()
|
||||
{
|
||||
// assert(rem().empty());
|
||||
s.pop_front();
|
||||
}
|
||||
void
|
||||
scc_stack_ta::pop()
|
||||
{
|
||||
// assert(rem().empty());
|
||||
s.pop_front();
|
||||
}
|
||||
|
||||
void
|
||||
scc_stack_ta::push(int index)
|
||||
{
|
||||
s.push_front(connected_component(index));
|
||||
}
|
||||
void
|
||||
scc_stack_ta::push(int index)
|
||||
{
|
||||
s.push_front(connected_component(index));
|
||||
}
|
||||
|
||||
std::list<state*>&
|
||||
scc_stack_ta::rem()
|
||||
{
|
||||
return top().rem;
|
||||
}
|
||||
std::list<state*>&
|
||||
scc_stack_ta::rem()
|
||||
{
|
||||
return top().rem;
|
||||
}
|
||||
|
||||
size_t
|
||||
scc_stack_ta::size() const
|
||||
{
|
||||
return s.size();
|
||||
}
|
||||
|
||||
bool
|
||||
scc_stack_ta::empty() const
|
||||
{
|
||||
return s.empty();
|
||||
}
|
||||
size_t
|
||||
scc_stack_ta::size() const
|
||||
{
|
||||
return s.size();
|
||||
}
|
||||
|
||||
bool
|
||||
scc_stack_ta::empty() const
|
||||
{
|
||||
return s.empty();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue