public SafraAlgorithm(NBA nba, Options_Safra options) { _options = options; _nba_analysis = new NBAAnalysis(nba); _nba = nba; _NODES = 2 * nba.getStateCount();////////////ensure the number of nodes is enough stv_reorder = null; //{ // _next.resize(nba.getStateCount()); //} }
// -- private member functions /** Check that symbol label is stutter insensitive, * using nba and complement_nba */ public bool is_stutter_insensitive(NBA nba, NBA nba_complement, APElement label) { NBA stutter_closed_nba = NBAStutterClosure.stutter_closure(nba, label); NBA product = NBA.product_automaton(stutter_closed_nba, nba_complement); NBAAnalysis analysis_product = new NBAAnalysis(product); bool empty = analysis_product.emptinessCheck(); // std::cerr << "NBA is " << (empty ? "empty" : "not empty") << std::endl; return empty; }