示例#1
0
        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);
        }
示例#2
0
        ///**
        //* 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);
        }
示例#3
0
        ///**
        //* 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);
        }