sanity: Replace tabulars by spaces in *.cc *.hh *.hxx
* bin/autfilt.cc, bin/common_aoutput.cc, bin/common_aoutput.hh, bin/common_finput.cc, bin/common_finput.hh, bin/common_hoaread.cc, bin/common_output.cc, bin/common_output.hh, bin/common_post.cc, bin/common_post.hh, bin/common_r.hh, bin/common_range.cc, bin/common_range.hh, bin/common_setup.cc, bin/common_trans.cc, bin/common_trans.hh, bin/dstar2tgba.cc, bin/genltl.cc, bin/ltl2tgba.cc, bin/ltl2tgta.cc, bin/ltlcross.cc, bin/ltldo.cc, bin/ltlfilt.cc, bin/ltlgrind.cc, bin/randaut.cc, bin/randltl.cc, bin/spot-x.cc, spot/graph/graph.hh, spot/graph/ngraph.hh, spot/kripke/kripkegraph.hh, spot/ltsmin/ltsmin.cc, spot/ltsmin/ltsmin.hh, spot/misc/bareword.cc, spot/misc/bitvect.cc, spot/misc/bitvect.hh, spot/misc/common.hh, spot/misc/escape.cc, spot/misc/fixpool.hh, spot/misc/formater.cc, spot/misc/hash.hh, spot/misc/intvcmp2.cc, spot/misc/intvcmp2.hh, spot/misc/intvcomp.cc, spot/misc/intvcomp.hh, spot/misc/location.hh, spot/misc/minato.cc, spot/misc/minato.hh, spot/misc/mspool.hh, spot/misc/optionmap.cc, spot/misc/optionmap.hh, spot/misc/random.cc, spot/misc/random.hh, spot/misc/satsolver.cc, spot/misc/satsolver.hh, spot/misc/timer.cc, spot/misc/timer.hh, spot/misc/tmpfile.cc, spot/misc/trival.hh, spot/parseaut/fmterror.cc, spot/parseaut/parsedecl.hh, spot/parseaut/public.hh, spot/parsetl/fmterror.cc, spot/parsetl/parsedecl.hh, spot/priv/accmap.hh, spot/priv/bddalloc.cc, spot/priv/freelist.cc, spot/priv/trim.cc, spot/priv/weight.cc, spot/priv/weight.hh, spot/ta/taexplicit.cc, spot/ta/taexplicit.hh, spot/ta/taproduct.cc, spot/ta/taproduct.hh, spot/ta/tgtaexplicit.cc, spot/ta/tgtaexplicit.hh, spot/ta/tgtaproduct.cc, spot/ta/tgtaproduct.hh, spot/taalgos/dot.cc, spot/taalgos/dot.hh, spot/taalgos/emptinessta.cc, spot/taalgos/emptinessta.hh, spot/taalgos/minimize.cc, spot/taalgos/tgba2ta.cc, spot/taalgos/tgba2ta.hh, spot/tl/apcollect.cc, spot/tl/contain.cc, spot/tl/contain.hh, spot/tl/dot.cc, spot/tl/exclusive.cc, spot/tl/exclusive.hh, spot/tl/formula.cc, spot/tl/formula.hh, spot/tl/length.cc, spot/tl/mark.cc, spot/tl/mutation.cc, spot/tl/mutation.hh, spot/tl/parse.hh, spot/tl/print.cc, spot/tl/print.hh, spot/tl/randomltl.cc, spot/tl/randomltl.hh, spot/tl/relabel.cc, spot/tl/relabel.hh, spot/tl/remove_x.cc, spot/tl/simplify.cc, spot/tl/simplify.hh, spot/tl/snf.cc, spot/tl/snf.hh, spot/tl/unabbrev.cc, spot/tl/unabbrev.hh, spot/twa/acc.cc, spot/twa/acc.hh, spot/twa/bdddict.cc, spot/twa/bdddict.hh, spot/twa/bddprint.cc, spot/twa/formula2bdd.cc, spot/twa/formula2bdd.hh, spot/twa/taatgba.cc, spot/twa/taatgba.hh, spot/twa/twa.cc, spot/twa/twa.hh, spot/twa/twagraph.cc, spot/twa/twagraph.hh, spot/twa/twaproduct.cc, spot/twa/twaproduct.hh, spot/twaalgos/are_isomorphic.cc, spot/twaalgos/are_isomorphic.hh, spot/twaalgos/bfssteps.cc, spot/twaalgos/bfssteps.hh, spot/twaalgos/cleanacc.cc, spot/twaalgos/complete.cc, spot/twaalgos/compsusp.cc, spot/twaalgos/compsusp.hh, spot/twaalgos/copy.cc, spot/twaalgos/cycles.cc, spot/twaalgos/cycles.hh, spot/twaalgos/degen.cc, spot/twaalgos/degen.hh, spot/twaalgos/determinize.cc, spot/twaalgos/determinize.hh, spot/twaalgos/dot.cc, spot/twaalgos/dot.hh, spot/twaalgos/dtbasat.cc, spot/twaalgos/dtbasat.hh, spot/twaalgos/dtwasat.cc, spot/twaalgos/dtwasat.hh, spot/twaalgos/emptiness.cc, spot/twaalgos/emptiness.hh, spot/twaalgos/emptiness_stats.hh, spot/twaalgos/gtec/ce.cc, spot/twaalgos/gtec/ce.hh, spot/twaalgos/gtec/gtec.cc, spot/twaalgos/gtec/gtec.hh, spot/twaalgos/gtec/sccstack.cc, spot/twaalgos/gtec/status.cc, spot/twaalgos/gv04.cc, spot/twaalgos/hoa.cc, spot/twaalgos/hoa.hh, spot/twaalgos/isdet.cc, spot/twaalgos/isunamb.cc, spot/twaalgos/isweakscc.cc, spot/twaalgos/lbtt.cc, spot/twaalgos/lbtt.hh, spot/twaalgos/ltl2taa.cc, spot/twaalgos/ltl2taa.hh, spot/twaalgos/ltl2tgba_fm.cc, spot/twaalgos/ltl2tgba_fm.hh, spot/twaalgos/magic.cc, spot/twaalgos/magic.hh, spot/twaalgos/mask.cc, spot/twaalgos/mask.hh, spot/twaalgos/minimize.cc, spot/twaalgos/minimize.hh, spot/twaalgos/ndfs_result.hxx, spot/twaalgos/neverclaim.cc, spot/twaalgos/neverclaim.hh, spot/twaalgos/postproc.cc, spot/twaalgos/postproc.hh, spot/twaalgos/powerset.cc, spot/twaalgos/powerset.hh, spot/twaalgos/product.cc, spot/twaalgos/product.hh, spot/twaalgos/projrun.cc, spot/twaalgos/projrun.hh, spot/twaalgos/randomgraph.cc, spot/twaalgos/randomgraph.hh, spot/twaalgos/randomize.cc, spot/twaalgos/randomize.hh, spot/twaalgos/reachiter.cc, spot/twaalgos/reachiter.hh, spot/twaalgos/relabel.cc, spot/twaalgos/relabel.hh, spot/twaalgos/remfin.cc, spot/twaalgos/remprop.cc, spot/twaalgos/sbacc.cc, spot/twaalgos/sccfilter.cc, spot/twaalgos/sccfilter.hh, spot/twaalgos/sccinfo.cc, spot/twaalgos/sccinfo.hh, spot/twaalgos/se05.cc, spot/twaalgos/se05.hh, spot/twaalgos/sepsets.cc, spot/twaalgos/simulation.cc, spot/twaalgos/simulation.hh, spot/twaalgos/stats.cc, spot/twaalgos/stats.hh, spot/twaalgos/strength.cc, spot/twaalgos/strength.hh, spot/twaalgos/stripacc.cc, spot/twaalgos/stutter.cc, spot/twaalgos/stutter.hh, spot/twaalgos/tau03.cc, spot/twaalgos/tau03opt.cc, spot/twaalgos/tau03opt.hh, spot/twaalgos/totgba.cc, spot/twaalgos/translate.cc, spot/twaalgos/word.cc, tests/core/acc.cc, tests/core/bitvect.cc, tests/core/checkpsl.cc, tests/core/checkta.cc, tests/core/consterm.cc, tests/core/emptchk.cc, tests/core/equalsf.cc, tests/core/graph.cc, tests/core/ikwiad.cc, tests/core/intvcmp2.cc, tests/core/intvcomp.cc, tests/core/kind.cc, tests/core/kripkecat.cc, tests/core/ltlrel.cc, tests/core/ngraph.cc, tests/core/randtgba.cc, tests/core/readltl.cc, tests/core/reduc.cc, tests/core/safra.cc, tests/core/syntimpl.cc, tests/ltsmin/modelcheck.cc: Replace tabulars by 8 spaces. * tests/sanity/style.test: Add checks for no tabulars in *.cc *.hh *.hxx
This commit is contained in:
parent
1eee12b8b4
commit
f7e7b4f14e
239 changed files with 25359 additions and 25355 deletions
|
|
@ -50,10 +50,10 @@ namespace spot
|
|||
unsigned nap = 0;
|
||||
int v = vin.id();
|
||||
while (v != 1)
|
||||
{
|
||||
v = bdd_high(v);
|
||||
++nap;
|
||||
}
|
||||
{
|
||||
v = bdd_high(v);
|
||||
++nap;
|
||||
}
|
||||
return nap;
|
||||
}
|
||||
|
||||
|
|
@ -63,8 +63,8 @@ namespace spot
|
|||
power_map::power_state ps;
|
||||
unsigned ns = in->size();
|
||||
for (unsigned pos = 0; pos < ns; ++pos)
|
||||
if (in->get(pos))
|
||||
ps.insert(pos);
|
||||
if (in->get(pos))
|
||||
ps.insert(pos);
|
||||
return ps;
|
||||
}
|
||||
|
||||
|
|
@ -72,7 +72,7 @@ namespace spot
|
|||
{
|
||||
size_t operator()(const bitvect* bv) const
|
||||
{
|
||||
return bv->hash();
|
||||
return bv->hash();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -80,7 +80,7 @@ namespace spot
|
|||
{
|
||||
bool operator()(const bitvect* bvl, const bitvect* bvr) const
|
||||
{
|
||||
return *bvl == *bvr;
|
||||
return *bvl == *bvr;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
@ -94,9 +94,9 @@ namespace spot
|
|||
sup_map sup;
|
||||
// Record occurrences of all guards
|
||||
for (auto& t: aut->edges())
|
||||
sup.emplace(t.cond);
|
||||
sup.emplace(t.cond);
|
||||
for (auto& i: sup)
|
||||
allap &= bdd_support(i);
|
||||
allap &= bdd_support(i);
|
||||
}
|
||||
|
||||
unsigned nap = number_of_variables(allap);
|
||||
|
|
@ -118,13 +118,13 @@ namespace spot
|
|||
bdd all = bddtrue;
|
||||
while (all != bddfalse)
|
||||
{
|
||||
bdd one = bdd_satoneset(all, allap, bddfalse);
|
||||
all -= one;
|
||||
bdd2num.emplace(one, num2bdd.size());
|
||||
num2bdd.push_back(one);
|
||||
bdd one = bdd_satoneset(all, allap, bddfalse);
|
||||
all -= one;
|
||||
bdd2num.emplace(one, num2bdd.size());
|
||||
num2bdd.push_back(one);
|
||||
}
|
||||
|
||||
size_t nc = num2bdd.size(); // number of conditions
|
||||
size_t nc = num2bdd.size(); // number of conditions
|
||||
assert(nc == (1UL << nap));
|
||||
|
||||
// An array of bit vectors of size 'ns'. Each original state is
|
||||
|
|
@ -134,18 +134,18 @@ namespace spot
|
|||
|
||||
for (unsigned src = 0; src < ns; ++src)
|
||||
{
|
||||
size_t base = src * nc;
|
||||
for (auto& t: aut->out(src))
|
||||
{
|
||||
bdd all = t.cond;
|
||||
while (all != bddfalse)
|
||||
{
|
||||
bdd one = bdd_satoneset(all, allap, bddfalse);
|
||||
all -= one;
|
||||
unsigned num = bdd2num[one];
|
||||
bv->at(base + num).set(t.dst);
|
||||
}
|
||||
}
|
||||
size_t base = src * nc;
|
||||
for (auto& t: aut->out(src))
|
||||
{
|
||||
bdd all = t.cond;
|
||||
while (all != bddfalse)
|
||||
{
|
||||
bdd one = bdd_satoneset(all, allap, bddfalse);
|
||||
all -= one;
|
||||
unsigned num = bdd2num[one];
|
||||
bv->at(base + num).set(t.dst);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
typedef power_map::power_state power_state;
|
||||
|
|
@ -175,39 +175,39 @@ namespace spot
|
|||
|
||||
for (unsigned src_num = 0; src_num < res->num_states(); ++src_num)
|
||||
{
|
||||
om->clear_all();
|
||||
om->clear_all();
|
||||
|
||||
const power_state& src = pm.states_of(src_num);
|
||||
const power_state& src = pm.states_of(src_num);
|
||||
|
||||
for (auto s: src)
|
||||
{
|
||||
size_t base = s * nc;
|
||||
for (unsigned c = 0; c < nc; ++c)
|
||||
om->at(c) |= bv->at(base + c);
|
||||
}
|
||||
for (unsigned c = 0; c < nc; ++c)
|
||||
{
|
||||
auto dst = &om->at(c);
|
||||
if (dst->is_fully_clear())
|
||||
continue;
|
||||
auto i = seen.find(dst);
|
||||
unsigned dst_num;
|
||||
if (i != seen.end())
|
||||
{
|
||||
dst_num = i->second;
|
||||
}
|
||||
else
|
||||
{
|
||||
dst_num = res->new_state();
|
||||
auto dst2 = dst->clone();
|
||||
seen[dst2] = dst_num;
|
||||
toclean.push_back(dst2);
|
||||
auto ps = bv_to_ps(dst);
|
||||
assert(pm.map_.size() == dst_num);
|
||||
pm.map_.emplace_back(std::move(ps));
|
||||
}
|
||||
res->new_edge(src_num, dst_num, num2bdd[c]);
|
||||
}
|
||||
for (auto s: src)
|
||||
{
|
||||
size_t base = s * nc;
|
||||
for (unsigned c = 0; c < nc; ++c)
|
||||
om->at(c) |= bv->at(base + c);
|
||||
}
|
||||
for (unsigned c = 0; c < nc; ++c)
|
||||
{
|
||||
auto dst = &om->at(c);
|
||||
if (dst->is_fully_clear())
|
||||
continue;
|
||||
auto i = seen.find(dst);
|
||||
unsigned dst_num;
|
||||
if (i != seen.end())
|
||||
{
|
||||
dst_num = i->second;
|
||||
}
|
||||
else
|
||||
{
|
||||
dst_num = res->new_state();
|
||||
auto dst2 = dst->clone();
|
||||
seen[dst2] = dst_num;
|
||||
toclean.push_back(dst2);
|
||||
auto ps = bv_to_ps(dst);
|
||||
assert(pm.map_.size() == dst_num);
|
||||
pm.map_.emplace_back(std::move(ps));
|
||||
}
|
||||
res->new_edge(src_num, dst_num, num2bdd[c]);
|
||||
}
|
||||
}
|
||||
|
||||
for (auto v: toclean)
|
||||
|
|
@ -238,133 +238,133 @@ namespace spot
|
|||
protected:
|
||||
const_twa_graph_ptr ref_;
|
||||
power_map& refmap_;
|
||||
edge_set reject_; // set of rejecting edges
|
||||
set_set accept_; // set of cycles that are accepting
|
||||
edge_set all_; // all non rejecting edges
|
||||
unsigned threshold_; // maximum count of enumerated cycles
|
||||
unsigned cycles_left_; // count of cycles left to explore
|
||||
edge_set reject_; // set of rejecting edges
|
||||
set_set accept_; // set of cycles that are accepting
|
||||
edge_set all_; // all non rejecting edges
|
||||
unsigned threshold_; // maximum count of enumerated cycles
|
||||
unsigned cycles_left_; // count of cycles left to explore
|
||||
|
||||
public:
|
||||
fix_scc_acceptance(const scc_info& sm, const_twa_graph_ptr ref,
|
||||
power_map& refmap, unsigned threshold)
|
||||
: enumerate_cycles(sm), ref_(ref), refmap_(refmap),
|
||||
threshold_(threshold)
|
||||
power_map& refmap, unsigned threshold)
|
||||
: enumerate_cycles(sm), ref_(ref), refmap_(refmap),
|
||||
threshold_(threshold)
|
||||
{
|
||||
}
|
||||
|
||||
bool fix_scc(const int m)
|
||||
{
|
||||
reject_.clear();
|
||||
accept_.clear();
|
||||
cycles_left_ = threshold_;
|
||||
run(m);
|
||||
reject_.clear();
|
||||
accept_.clear();
|
||||
cycles_left_ = threshold_;
|
||||
run(m);
|
||||
|
||||
// std::cerr << "SCC #" << m << '\n';
|
||||
// std::cerr << "REJECT: ";
|
||||
// print_set(std::cerr, reject_) << '\n';
|
||||
// std::cerr << "ALL: ";
|
||||
// print_set(std::cerr, all_) << '\n';
|
||||
// for (set_set::const_iterator j = accept_.begin();
|
||||
// j != accept_.end(); ++j)
|
||||
// {
|
||||
// std::cerr << "ACCEPT: ";
|
||||
// print_set(std::cerr, *j) << '\n';
|
||||
// }
|
||||
// std::cerr << "SCC #" << m << '\n';
|
||||
// std::cerr << "REJECT: ";
|
||||
// print_set(std::cerr, reject_) << '\n';
|
||||
// std::cerr << "ALL: ";
|
||||
// print_set(std::cerr, all_) << '\n';
|
||||
// for (set_set::const_iterator j = accept_.begin();
|
||||
// j != accept_.end(); ++j)
|
||||
// {
|
||||
// std::cerr << "ACCEPT: ";
|
||||
// print_set(std::cerr, *j) << '\n';
|
||||
// }
|
||||
|
||||
auto acc = aut_->acc().all_sets();
|
||||
for (auto i: all_)
|
||||
i->acc = acc;
|
||||
return threshold_ != 0 && cycles_left_ == 0;
|
||||
auto acc = aut_->acc().all_sets();
|
||||
for (auto i: all_)
|
||||
i->acc = acc;
|
||||
return threshold_ != 0 && cycles_left_ == 0;
|
||||
}
|
||||
|
||||
bool is_cycle_accepting(cycle_iter begin, edge_set& ts) const
|
||||
{
|
||||
auto a = std::const_pointer_cast<twa_graph>(aut_);
|
||||
auto a = std::const_pointer_cast<twa_graph>(aut_);
|
||||
|
||||
// Build an automaton representing this loop.
|
||||
auto loop_a = make_twa_graph(aut_->get_dict());
|
||||
int loop_size = std::distance(begin, dfs_.end());
|
||||
loop_a->new_states(loop_size);
|
||||
int n;
|
||||
cycle_iter i;
|
||||
for (n = 1, i = begin; n <= loop_size; ++n, ++i)
|
||||
{
|
||||
trans* t = &a->edge_data(i->succ);
|
||||
loop_a->new_edge(n - 1, n % loop_size, t->cond);
|
||||
if (reject_.find(t) == reject_.end())
|
||||
ts.insert(t);
|
||||
}
|
||||
assert(i == dfs_.end());
|
||||
// Build an automaton representing this loop.
|
||||
auto loop_a = make_twa_graph(aut_->get_dict());
|
||||
int loop_size = std::distance(begin, dfs_.end());
|
||||
loop_a->new_states(loop_size);
|
||||
int n;
|
||||
cycle_iter i;
|
||||
for (n = 1, i = begin; n <= loop_size; ++n, ++i)
|
||||
{
|
||||
trans* t = &a->edge_data(i->succ);
|
||||
loop_a->new_edge(n - 1, n % loop_size, t->cond);
|
||||
if (reject_.find(t) == reject_.end())
|
||||
ts.insert(t);
|
||||
}
|
||||
assert(i == dfs_.end());
|
||||
|
||||
unsigned loop_a_init = loop_a->get_init_state_number();
|
||||
assert(loop_a_init == 0);
|
||||
unsigned loop_a_init = loop_a->get_init_state_number();
|
||||
assert(loop_a_init == 0);
|
||||
|
||||
// Check if the loop is accepting in the original automaton.
|
||||
bool accepting = false;
|
||||
// Check if the loop is accepting in the original automaton.
|
||||
bool accepting = false;
|
||||
|
||||
// Iterate on each original state corresponding to the
|
||||
// start of the loop in the determinized automaton.
|
||||
for (auto s: refmap_.states_of(begin->s))
|
||||
{
|
||||
// Check the product between LOOP_A, and ORIG_A starting
|
||||
// in S.
|
||||
if (!product(loop_a, ref_, loop_a_init, s)->is_empty())
|
||||
{
|
||||
accepting = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return accepting;
|
||||
// Iterate on each original state corresponding to the
|
||||
// start of the loop in the determinized automaton.
|
||||
for (auto s: refmap_.states_of(begin->s))
|
||||
{
|
||||
// Check the product between LOOP_A, and ORIG_A starting
|
||||
// in S.
|
||||
if (!product(loop_a, ref_, loop_a_init, s)->is_empty())
|
||||
{
|
||||
accepting = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return accepting;
|
||||
}
|
||||
|
||||
std::ostream&
|
||||
print_set(std::ostream& o, const edge_set& s) const
|
||||
{
|
||||
o << "{ ";
|
||||
for (auto i: s)
|
||||
o << i << ' ';
|
||||
o << '}';
|
||||
return o;
|
||||
o << "{ ";
|
||||
for (auto i: s)
|
||||
o << i << ' ';
|
||||
o << '}';
|
||||
return o;
|
||||
}
|
||||
|
||||
virtual bool
|
||||
cycle_found(unsigned start) override
|
||||
{
|
||||
cycle_iter i = dfs_.begin();
|
||||
while (i->s != start)
|
||||
++i;
|
||||
edge_set ts;
|
||||
bool is_acc = is_cycle_accepting(i, ts);
|
||||
do
|
||||
++i;
|
||||
while (i != dfs_.end());
|
||||
if (is_acc)
|
||||
{
|
||||
accept_.push_back(ts);
|
||||
all_.insert(ts.begin(), ts.end());
|
||||
}
|
||||
else
|
||||
{
|
||||
for (auto t: ts)
|
||||
{
|
||||
reject_.insert(t);
|
||||
for (auto& j: accept_)
|
||||
j.erase(t);
|
||||
all_.erase(t);
|
||||
}
|
||||
}
|
||||
cycle_iter i = dfs_.begin();
|
||||
while (i->s != start)
|
||||
++i;
|
||||
edge_set ts;
|
||||
bool is_acc = is_cycle_accepting(i, ts);
|
||||
do
|
||||
++i;
|
||||
while (i != dfs_.end());
|
||||
if (is_acc)
|
||||
{
|
||||
accept_.push_back(ts);
|
||||
all_.insert(ts.begin(), ts.end());
|
||||
}
|
||||
else
|
||||
{
|
||||
for (auto t: ts)
|
||||
{
|
||||
reject_.insert(t);
|
||||
for (auto& j: accept_)
|
||||
j.erase(t);
|
||||
all_.erase(t);
|
||||
}
|
||||
}
|
||||
|
||||
// Abort this algorithm if we have seen too much cycles, i.e.,
|
||||
// when cycle_left_ *reaches* 0. (If cycle_left_ == 0, that
|
||||
// means we had no limit.)
|
||||
return (cycles_left_ == 0) || --cycles_left_;
|
||||
// Abort this algorithm if we have seen too much cycles, i.e.,
|
||||
// when cycle_left_ *reaches* 0. (If cycle_left_ == 0, that
|
||||
// means we had no limit.)
|
||||
return (cycles_left_ == 0) || --cycles_left_;
|
||||
}
|
||||
};
|
||||
|
||||
static bool
|
||||
fix_dba_acceptance(twa_graph_ptr det,
|
||||
const_twa_graph_ptr ref, power_map& refmap,
|
||||
unsigned threshold)
|
||||
const_twa_graph_ptr ref, power_map& refmap,
|
||||
unsigned threshold)
|
||||
{
|
||||
det->copy_acceptance_of(ref);
|
||||
|
||||
|
|
@ -375,16 +375,16 @@ namespace spot
|
|||
fix_scc_acceptance fsa(sm, ref, refmap, threshold);
|
||||
|
||||
for (unsigned m = 0; m < scc_count; ++m)
|
||||
if (!sm.is_trivial(m))
|
||||
if (fsa.fix_scc(m))
|
||||
return true;
|
||||
if (!sm.is_trivial(m))
|
||||
if (fsa.fix_scc(m))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
twa_graph_ptr
|
||||
tba_determinize(const const_twa_graph_ptr& aut,
|
||||
unsigned threshold_states, unsigned threshold_cycles)
|
||||
unsigned threshold_states, unsigned threshold_cycles)
|
||||
{
|
||||
power_map pm;
|
||||
// Do not merge edges in the deterministic automaton. If we
|
||||
|
|
@ -393,7 +393,7 @@ namespace spot
|
|||
auto det = tgba_powerset(aut, pm, false);
|
||||
|
||||
if ((threshold_states > 0)
|
||||
&& (pm.map_.size() > aut->num_states() * threshold_states))
|
||||
&& (pm.map_.size() > aut->num_states() * threshold_states))
|
||||
return nullptr;
|
||||
if (fix_dba_acceptance(det, aut, pm, threshold_cycles))
|
||||
return nullptr;
|
||||
|
|
@ -403,10 +403,10 @@ namespace spot
|
|||
|
||||
twa_graph_ptr
|
||||
tba_determinize_check(const twa_graph_ptr& aut,
|
||||
unsigned threshold_states,
|
||||
unsigned threshold_cycles,
|
||||
formula f,
|
||||
const_twa_graph_ptr neg_aut)
|
||||
unsigned threshold_states,
|
||||
unsigned threshold_cycles,
|
||||
formula f,
|
||||
const_twa_graph_ptr neg_aut)
|
||||
{
|
||||
if (f == nullptr && neg_aut == nullptr)
|
||||
return nullptr;
|
||||
|
|
@ -420,17 +420,17 @@ namespace spot
|
|||
|
||||
if (neg_aut == nullptr)
|
||||
{
|
||||
neg_aut = ltl_to_tgba_fm(formula::Not(f), aut->get_dict());
|
||||
// Remove useless SCCs.
|
||||
neg_aut = scc_filter(neg_aut, true);
|
||||
neg_aut = ltl_to_tgba_fm(formula::Not(f), aut->get_dict());
|
||||
// Remove useless SCCs.
|
||||
neg_aut = scc_filter(neg_aut, true);
|
||||
}
|
||||
|
||||
if (product(det, neg_aut)->is_empty())
|
||||
// Complement the DBA.
|
||||
if (product(aut, remove_fin(dtwa_complement(det)))->is_empty())
|
||||
// Finally, we are now sure that it was safe
|
||||
// to determinize the automaton.
|
||||
return det;
|
||||
// Finally, we are now sure that it was safe
|
||||
// to determinize the automaton.
|
||||
return det;
|
||||
|
||||
return aut;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue