/** Generate tree */ public override void generateTree() { LTL2DSTAR_Options opt = _options; opt.automata = automata_type.RABIN; //opt.scheck_path = ""; // disable scheck _tree_rabin = new LTL2DSTAR_Tree_Rabin(_ltl, this.buchiAutomata, opt, _sched); addChild(_tree_rabin); }
/** * Generate the tree */ public override void generateTree() { LTL2DSTAR_Options rec_opt = _options; rec_opt.recursion(); _left_tree = new LTL2DSTAR_Tree_Rabin(_left, buchiAutomata, rec_opt, _sched); addChild(_left_tree); _right_tree = new LTL2DSTAR_Tree_Rabin(_right, buchiAutomata, rec_opt, _sched); addChild(_right_tree); }
/** * Constructor * @param ltl The LTL formula * @param options the LTL2DSTAR options * @param sched a reference back to the scheduler */ public LTL2DSTAR_Tree_Union(LTLFormula ltl, BuchiAutomata ba, LTL2DSTAR_Options options, LTL2DSTAR_Scheduler sched) : base(ltl, ba, options, sched) { _left_tree = null; _right_tree = null; //(0) _left = _ltl.getSubFormula(_ltl.getRootNode().getLeft()); _right = _ltl.getSubFormula(_ltl.getRootNode().getRight()); generateTree(); }
/** 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); } } }