public void setStutterInformation(StutterSensitivenessInformation stutter_information) { _stutter_information = stutter_information; //new StutterSensitivenessInformation( //new StutterSensitivenessInformation( StutterSensitivenessInformation left_stutter_info = stutter_information; StutterSensitivenessInformation right_stutter_info = stutter_information; if (!stutter_information.isCompletelyInsensitive()) { left_stutter_info.checkLTL(_left); right_stutter_info.checkLTL(_right); } if (!left_stutter_info.isCompletelyInsensitive()) { left_stutter_info.checkPartial(_left_tree.getNBA(), buchiAutomata, _left.negate().toPNF(), _sched.getLTL2DRA());/////////////add buchiautomata } if (!right_stutter_info.isCompletelyInsensitive()) { right_stutter_info.checkPartial(_right_tree.getNBA(), buchiAutomata, _right.negate().toPNF(), _sched.getLTL2DRA());///////add buchiautomata } _left_tree.setStutterInformation(left_stutter_info); _right_tree.setStutterInformation(right_stutter_info); }
/** Generate the tree */ public override void generateTree() { LTL2DSTAR_Tree_Rabin rabin = null; LTL2DSTAR_Tree_Streett streett = null; if (_options.automata == automata_type.RABIN || _options.automata == automata_type.RABIN_AND_STREETT) { rabin = new LTL2DSTAR_Tree_Rabin(_ltl, buchiAutomata, _options, _sched); } if (_options.automata == automata_type.STREETT || _options.automata == automata_type.RABIN_AND_STREETT) { streett = new LTL2DSTAR_Tree_Streett(_ltl.negate().toPNF(), buchiAutomata, _options, _sched); } if (rabin != null && streett != null) { int rabin_est = rabin.guestimate(); int streett_est = streett.guestimate(); //if (_options.verbose_scheduler) { // std::cerr << "NBA-Estimates: Rabin: "<<rabin_est << // " Streett: " << streett_est << std::endl; //} if (rabin_est <= streett_est) { addChild(rabin); addChild(streett); } else { addChild(streett); addChild(rabin); } } else { if (rabin != null) { addChild(rabin); } if (streett != null) { addChild(streett); } } if (_options.opt_safra.stutter) { StutterSensitivenessInformation stutter_information = new StutterSensitivenessInformation(); stutter_information.checkLTL(_ltl); if (!stutter_information.isCompletelyInsensitive() && _options.opt_safra.partial_stutter_check) { NBA nba = null; NBA complement_nba = null; if (rabin != null) { nba = rabin.getNBA(); } else if (streett != null) { nba = streett.getNBA(); } if (rabin != null && streett != null) { complement_nba = streett.getNBA(); } if (nba == null) { stutter_information.checkPartial(_ltl, buchiAutomata, _sched.getLTL2DRA());//////////add buchiAutomata } else if (complement_nba == null) { stutter_information.checkPartial(nba, buchiAutomata, _ltl.negate().toPNF(), _sched.getLTL2DRA());///////////add buchiAutomata } else { stutter_information.checkNBAs(nba, complement_nba); } } if (rabin != null) { rabin.setStutterInformation(stutter_information); } if (streett != null) { streett.setStutterInformation(stutter_information); } } }
/** Generate the tree */ public override void generateTree() { LTL2DSTAR_Tree_Rabin rabin = null; LTL2DSTAR_Tree_Streett streett = null; if (_options.automata == automata_type.RABIN || _options.automata == automata_type.RABIN_AND_STREETT) { rabin = new LTL2DSTAR_Tree_Rabin(_ltl, buchiAutomata, _options, _sched); } if (_options.automata == automata_type.STREETT || _options.automata == automata_type.RABIN_AND_STREETT) { streett = new LTL2DSTAR_Tree_Streett(_ltl.negate().toPNF(), buchiAutomata, _options, _sched); } if (rabin != null && streett != null) { int rabin_est = rabin.guestimate(); int streett_est = streett.guestimate(); //if (_options.verbose_scheduler) { // std::cerr << "NBA-Estimates: Rabin: "<<rabin_est << // " Streett: " << streett_est << std::endl; //} if (rabin_est <= streett_est) { addChild(rabin); addChild(streett); } else { addChild(streett); addChild(rabin); } } else { if (rabin != null) addChild(rabin); if (streett != null) addChild(streett); } if (_options.opt_safra.stutter) { StutterSensitivenessInformation stutter_information = new StutterSensitivenessInformation(); stutter_information.checkLTL(_ltl); if (!stutter_information.isCompletelyInsensitive() && _options.opt_safra.partial_stutter_check) { NBA nba = null; NBA complement_nba = null; if (rabin != null) { nba = rabin.getNBA(); } else if (streett != null) { nba = streett.getNBA(); } if (rabin != null && streett != null) { complement_nba = streett.getNBA(); } if (nba == null) { stutter_information.checkPartial(_ltl, buchiAutomata, _sched.getLTL2DRA());//////////add buchiAutomata } else if (complement_nba == null) { stutter_information.checkPartial(nba, buchiAutomata, _ltl.negate().toPNF(), _sched.getLTL2DRA());///////////add buchiAutomata } else { stutter_information.checkNBAs(nba, complement_nba); } } if (rabin != null) { rabin.setStutterInformation(stutter_information); } if (streett != null) { streett.setStutterInformation(stutter_information); } } }