ltl2aa: finalize UConcat

This commit is contained in:
Antoine Martin 2022-09-16 15:48:07 +02:00
parent e4f00229d7
commit 2e2a3b4544
3 changed files with 14 additions and 6 deletions

View file

@ -38,7 +38,8 @@ namespace spot
aut_->get_dict()->unregister_all_my_variables(this);
}
bdd outedge_combiner::operator()(unsigned st, const std::vector<unsigned>& dst_filter)
bdd outedge_combiner::operator()(unsigned st, const std::vector<unsigned>& dst_filter,
bool remove_original_edges)
{
const auto& dict = aut_->get_dict();
bdd res = bddtrue;
@ -79,6 +80,9 @@ namespace spot
out &= bdd_ithvar(p.first->second);
}
res2 |= e.cond & out;
if (remove_original_edges)
e.cond = bddfalse;
}
if (res2 != bddfalse)

View file

@ -53,7 +53,8 @@ namespace spot
public:
outedge_combiner(const twa_graph_ptr& aut, unsigned sink = -1u);
~outedge_combiner();
bdd operator()(unsigned st, const std::vector<unsigned>& dst_filter = std::vector<unsigned>());
bdd operator()(unsigned st, const std::vector<unsigned>& dst_filter = std::vector<unsigned>(),
bool remove_original_edges = false);
void new_dests(unsigned st, bdd out) const;
};

View file

@ -355,15 +355,18 @@ namespace spot
unsigned new_st = it->second;
bdd comb = bddtrue;
comb &= oe_(new_st, acc_states);
comb &= oe_(rhs_init);
oe_.new_dests(new_st, comb);
comb &= oe_(new_st, acc_states, true);
if (comb != bddtrue)
{
comb &= oe_(rhs_init);
oe_.new_dests(new_st, comb);
}
}
auto it = old_to_new.find(sere_aut->get_init_state_number());
assert(it != old_to_new.end());
//aut_->merge_edges();
aut_->merge_edges();
return it->second;
}