use scc_info instead of scc_map in a couple of easy places
* src/bin/dstar2tgba.cc, src/bin/ltlcross.cc, src/tgbaalgos/stats.cc, src/tgbaalgos/simulation.cc: Use scc_info instead of scc_map. * src/tgbaalgos/stats.hh, src/bin/common_output.hh: Change parameters types to be tgba_digraph_ptr instead tgba_ptr, so that scc_info can be used.
This commit is contained in:
parent
14570f62d0
commit
5c9a5403fe
6 changed files with 21 additions and 31 deletions
|
|
@ -73,7 +73,7 @@ public:
|
|||
}
|
||||
|
||||
std::ostream&
|
||||
print(const spot::const_tgba_ptr& aut,
|
||||
print(const spot::const_tgba_digraph_ptr& aut,
|
||||
const spot::ltl::formula* f = 0,
|
||||
double run_time = -1.)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
#include "tgba/bddprint.hh"
|
||||
#include "misc/optionmap.hh"
|
||||
#include "dstarparse/public.hh"
|
||||
#include "tgbaalgos/scc.hh"
|
||||
#include "tgbaalgos/sccinfo.hh"
|
||||
|
||||
const char argp_program_doc[] ="\
|
||||
Convert Rabin and Streett automata into Büchi automata.\n\n\
|
||||
|
|
@ -225,7 +225,7 @@ namespace
|
|||
/// to be output.
|
||||
std::ostream&
|
||||
print(const spot::const_dstar_aut_ptr& daut,
|
||||
const spot::const_tgba_ptr& aut,
|
||||
const spot::const_tgba_digraph_ptr& aut,
|
||||
const char* filename, double run_time)
|
||||
{
|
||||
filename_ = filename;
|
||||
|
|
@ -252,11 +252,7 @@ namespace
|
|||
daut_acc_ = daut->accpair_count;
|
||||
|
||||
if (has('C'))
|
||||
{
|
||||
spot::scc_map m(daut->aut);
|
||||
m.build_map();
|
||||
daut_scc_ = m.scc_count();
|
||||
}
|
||||
daut_scc_ = spot::scc_info(daut->aut).scc_count();
|
||||
|
||||
return this->spot::stat_printer::print(aut, 0, run_time);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@
|
|||
#include "tgba/tgbaproduct.hh"
|
||||
#include "tgbaalgos/gtec/gtec.hh"
|
||||
#include "tgbaalgos/randomgraph.hh"
|
||||
#include "tgbaalgos/sccinfo.hh"
|
||||
#include "tgbaalgos/scc.hh"
|
||||
#include "tgbaalgos/dotty.hh"
|
||||
#include "tgbaalgos/isweakscc.hh"
|
||||
|
|
@ -983,9 +984,7 @@ namespace
|
|||
st->in_transitions = s.sub_transitions;
|
||||
st->in_acc = aut->accpair_count;
|
||||
|
||||
spot::scc_map m(aut->aut);
|
||||
m.build_map();
|
||||
st->in_scc = m.scc_count();
|
||||
st->in_scc = spot::scc_info(aut->aut).scc_count();
|
||||
}
|
||||
// convert it into TGBA for further processing
|
||||
res = dstar_to_tgba(aut);
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
#include "tgba/bddprint.hh"
|
||||
#include "tgbaalgos/reachiter.hh"
|
||||
#include "tgbaalgos/sccfilter.hh"
|
||||
#include "tgbaalgos/scc.hh"
|
||||
#include "tgbaalgos/sccinfo.hh"
|
||||
#include "tgbaalgos/dupexp.hh"
|
||||
|
||||
// The way we developed this algorithm is the following: We take an
|
||||
|
|
@ -224,14 +224,13 @@ namespace spot
|
|||
map_cst_(map_cst),
|
||||
original_(t)
|
||||
{
|
||||
// We need to do a dupexp for being able to run scc_map later.
|
||||
// We need to do a dupexp for being able to run scc_info later.
|
||||
// new_original_ is the map that contains the relation between
|
||||
// the names (addresses) of the states in the automaton
|
||||
// returned by dupexp, and in automaton given in argument to
|
||||
// the constructor.
|
||||
a_ = tgba_dupexp_dfs(t, new_original_);
|
||||
scc_map_ = new scc_map(a_);
|
||||
scc_map_->build_map();
|
||||
scc_info_.reset(new scc_info(a_));
|
||||
old_a_ = a_;
|
||||
|
||||
|
||||
|
|
@ -323,7 +322,6 @@ namespace spot
|
|||
virtual ~direct_simulation()
|
||||
{
|
||||
a_->get_dict()->unregister_all_my_variables(this);
|
||||
delete scc_map_;
|
||||
}
|
||||
|
||||
// Update the name of the classes.
|
||||
|
|
@ -770,7 +768,7 @@ namespace spot
|
|||
|
||||
automaton_size stat;
|
||||
|
||||
scc_map* scc_map_;
|
||||
std::unique_ptr<scc_info> scc_info_;
|
||||
std::vector<const state*> new_original_;
|
||||
|
||||
const map_constraint* map_cst_;
|
||||
|
|
@ -822,15 +820,15 @@ namespace spot
|
|||
{
|
||||
bdd res = bddfalse;
|
||||
|
||||
unsigned scc = scc_map_->scc_of_state(old_a_->state_from_number(src));
|
||||
bool sccacc = scc_map_->accepting(scc);
|
||||
unsigned scc = scc_info_->scc_of(src);
|
||||
bool sccacc = scc_info_->is_accepting_scc(scc);
|
||||
|
||||
for (auto& t: a_->out(src))
|
||||
{
|
||||
bdd cl = previous_class_[t.dst];
|
||||
bdd acc;
|
||||
|
||||
if (scc != scc_map_->scc_of_state(old_a_->state_from_number(t.dst)))
|
||||
if (scc != scc_info_->scc_of(t.dst))
|
||||
acc = !on_cycle_;
|
||||
else if (sccacc)
|
||||
acc = on_cycle_ & t.acc;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
// Copyright (C) 2008, 2011, 2012, 2013 Laboratoire de Recherche et Développement
|
||||
// de l'Epita (LRDE).
|
||||
// -*- coding utf-8 -*-
|
||||
// Copyright (C) 2008, 2011, 2012, 2013, 2014 Laboratoire de Recherche
|
||||
// et Développement de l'Epita (LRDE).
|
||||
// Copyright (C) 2004 Laboratoire d'Informatique de Paris 6 (LIP6),
|
||||
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
// et Marie Curie.
|
||||
|
|
@ -25,7 +26,7 @@
|
|||
#include "reachiter.hh"
|
||||
#include "ltlvisit/tostring.hh"
|
||||
#include "tgbaalgos/isdet.hh"
|
||||
#include "tgbaalgos/scc.hh"
|
||||
#include "tgbaalgos/sccinfo.hh"
|
||||
|
||||
namespace spot
|
||||
{
|
||||
|
|
@ -157,7 +158,7 @@ namespace spot
|
|||
}
|
||||
|
||||
std::ostream&
|
||||
stat_printer::print(const const_tgba_ptr& aut,
|
||||
stat_printer::print(const const_tgba_digraph_ptr& aut,
|
||||
const ltl::formula* f,
|
||||
double run_time)
|
||||
{
|
||||
|
|
@ -182,11 +183,7 @@ namespace spot
|
|||
acc_ = aut->number_of_acceptance_conditions();
|
||||
|
||||
if (has('c') || has('S'))
|
||||
{
|
||||
scc_map m(aut);
|
||||
m.build_map();
|
||||
scc_ = m.scc_count();
|
||||
}
|
||||
scc_ = scc_info(aut).scc_count();
|
||||
|
||||
if (has('n'))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2008, 2011, 2012, 2013 Laboratoire de Recherche et
|
||||
// Copyright (C) 2008, 2011, 2012, 2013, 2014 Laboratoire de Recherche et
|
||||
// Développement de l'Epita (LRDE).
|
||||
// Copyright (C) 2004 Laboratoire d'Informatique de Paris 6 (LIP6),
|
||||
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
|
|
@ -85,7 +85,7 @@ namespace spot
|
|||
/// The \a f argument is not needed if the Formula does not need
|
||||
/// to be output, and so is \a run_time).
|
||||
std::ostream&
|
||||
print(const const_tgba_ptr& aut, const ltl::formula* f = 0,
|
||||
print(const const_tgba_digraph_ptr& aut, const ltl::formula* f = 0,
|
||||
double run_time = -1.);
|
||||
|
||||
private:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue