/** 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); } } }