private static LTLNode TranslateLTL(ltl2ba.Node LTLHeadNode) { type_t type = new type_t(); LTLNode node = new LTLNode(type, TranslateLTL(LTLHeadNode.lft), TranslateLTL(LTLHeadNode.rgt)); return(node); }
///** //* Add an edge from a state to a state with labeling specified //* by a formula in propositional logic in prefix form. //* @param from the 'from' state index //* @param to the 'to' state index //* @param guard the formula //*/ //public void addEdge(int from, int to, string guard) //{ // EdgeCreator ec = new EdgeCreator(from, to, _nba); // LTLFormula ltl_guard= LTLPrefixParser.parse(guard, _nba.nba_i_getAPSet()); // // std::cerr << ltl_guard->toStringPrefix() << std::endl; // LTLFormula guard_dnf=ltl_guard.toDNF(); // // std::cerr << guard_dnf->toStringPrefix() << std::endl; // guard_dnf.forEachMonom(ec); //} /** * Add an edge from a state to a state with labeling specified * by a formula in propositional logic in prefix form. * @param from the 'from' state index * @param to the 'to' state index * @param guard the formula */ public void addEdge(int from, int to, List <Proposition> labels) { Debug.Assert(labels.Count > 0); LTLNode root = createNodeFromLabel(labels[labels.Count - 1]); if (labels.Count > 1) { for (int i = labels.Count - 2; i >= 0; i--) { root = new LTLNode(type_t.T_AND, createNodeFromLabel(labels[i]), root); } } EdgeCreator ec = new EdgeCreator(from, to, _nba); LTLFormula ltl_guard = new LTLFormula(root, _nba.nba_i_getAPSet()); // std::cerr << ltl_guard->toStringPrefix() << std::endl; LTLFormula guard_dnf = ltl_guard.toDNF(); // std::cerr << guard_dnf->toStringPrefix() << std::endl; guard_dnf.forEachMonom(ec); }
///** //* Add an edge from a state to a state with labeling specified //* by a formula in propositional logic in prefix form. //* @param from the 'from' state index //* @param to the 'to' state index //* @param guard the formula //*/ //public void addEdge(int from, int to, string guard) //{ // EdgeCreator ec = new EdgeCreator(from, to, _nba); // LTLFormula ltl_guard= LTLPrefixParser.parse(guard, _nba.nba_i_getAPSet()); // // std::cerr << ltl_guard->toStringPrefix() << std::endl; // LTLFormula guard_dnf=ltl_guard.toDNF(); // // std::cerr << guard_dnf->toStringPrefix() << std::endl; // guard_dnf.forEachMonom(ec); //} /** * Add an edge from a state to a state with labeling specified * by a formula in propositional logic in prefix form. * @param from the 'from' state index * @param to the 'to' state index * @param guard the formula */ public void addEdge(int from, int to, List<Proposition> labels) { Debug.Assert(labels.Count > 0); LTLNode root = createNodeFromLabel(labels[labels.Count - 1]); if(labels.Count > 1) { for (int i = labels.Count-2; i >= 0; i--) { root = new LTLNode(type_t.T_AND, createNodeFromLabel(labels[i]), root); } } EdgeCreator ec = new EdgeCreator(from, to, _nba); LTLFormula ltl_guard = new LTLFormula(root, _nba.nba_i_getAPSet()); // std::cerr << ltl_guard->toStringPrefix() << std::endl; LTLFormula guard_dnf = ltl_guard.toDNF(); // std::cerr << guard_dnf->toStringPrefix() << std::endl; guard_dnf.forEachMonom(ec); }