예제 #1
0
        public void mod5()
        {
            var         solver = new CharSetSolver(BitWidth.BV64);
            List <char> alph   = new List <char> {
                'a', 'b'
            };
            HashSet <char> al = new HashSet <char>(alph);


            PDLPred phi = new PDLModSetEq(new PDLIndicesOf("a"), 5, 3);

            StringBuilder sb = new StringBuilder();

            phi.ToMSO(new FreshGen()).ToString(sb);

            System.Console.WriteLine(sb);

            var dfa = phi.GetDFA(al, solver);

            var test = solver.Convert(@"^((b*ab*){5})*(b*ab*){3}$").Determinize(solver).Minimize(solver);

            //string file = "../../../TestPDL/DotFiles/mod5";

            //solver.SaveAsDot(dfa, "aut", file);


            //solver.SaveAsDot(test, "aut", file+"t");

            Assert.IsTrue(dfa.IsEquivalentWith(test, solver));
        }
예제 #2
0
        public void OddAfterFirstA()
        {
            PDLPred phi = new PDLModSetEq(new PDLIntersect(new PDLIndicesOf("b"), new PDLAllPosAfter(new PDLFirstOcc("a"))), 2, 1);

            var solver = new CharSetSolver(BitWidth.BV64);
            var alph   = new List <char> {
                'a', 'b'
            };
            var al = new HashSet <char>(alph);

            var dfa = phi.GetDFA(al, solver);
            //string file = "../../../TestPDL/DotFiles/OddAfterFirstA";
            //solver.SaveAsDot(dfa, "aut", file);
        }
        public void TestMethod1()
        {
            var solver = new CharSetSolver(BitWidth.BV64);
            List<char> alph = new List<char> { 'a', 'b' };
            HashSet<char> al = new HashSet<char>(alph);

            PDLPred phi1 = new PDLContains("b");
            var dfa1 = phi1.GetDFA(al, solver);

            PDLPred phi2 = new PDLModSetEq(new PDLPredSet("x", new PDLAtPos('b', new PDLPosVar("x"))), 2, 1);
            var dfa2 = phi2.GetDFA(al, solver);

            StringBuilder sb = new StringBuilder();
            DFAEditDistance.GetDFAOptimalEdit(dfa1, dfa2, al, solver, 3000, sb);
            Console.WriteLine(sb);
        }
예제 #4
0
        public void TestMethod1()
        {
            var         solver = new CharSetSolver(BitWidth.BV64);
            List <char> alph   = new List <char> {
                'a', 'b'
            };
            HashSet <char> al = new HashSet <char>(alph);

            PDLPred phi1 = new PDLContains("b");
            var     dfa1 = phi1.GetDFA(al, solver);

            PDLPred phi2 = new PDLModSetEq(new PDLPredSet("x", new PDLAtPos('b', new PDLPosVar("x"))), 2, 1);
            var     dfa2 = phi2.GetDFA(al, solver);

            StringBuilder sb = new StringBuilder();

            DFAEditDistance.GetDFAOptimalEdit(dfa1, dfa2, al, solver, 3000, sb);
            Console.WriteLine(sb);
        }
예제 #5
0
        public void mod6()
        {
            var         solver = new CharSetSolver(BitWidth.BV64);
            List <char> alph   = new List <char> {
                'a', 'b'
            };
            HashSet <char> al = new HashSet <char>(alph);


            PDLPred phi = new PDLModSetEq(new PDLAllPos(), 6, 3);

            StringBuilder sb = new StringBuilder();

            phi.ToMSO(new FreshGen()).ToString(sb);

            System.Console.WriteLine(sb);

            Stopwatch sw = new Stopwatch();

            sw.Start();
            var dfa = phi.GetDFA(al, solver);

            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds);

            //Stopwatch sw1 = new Stopwatch();
            //sw1.Start();
            //var dfa1 = phi.GetDFA(al, solver);
            //sw1.Stop();
            //Console.WriteLine(sw1.ElapsedMilliseconds);

            var test = solver.Convert(@"^((a|b){6})*(a|b){3}$").Determinize(solver).Minimize(solver);

            //string file = "../../../TestPDL/DotFiles/mod6";

            //solver.SaveAsDot(dfa, "aut", file);
            // solver.SaveAsDot(test, "aut", file+"t");


            Console.Write(phi.ToMSO().ToString());
            Assert.IsTrue(dfa.IsEquivalentWith(test, solver));
        }
        public void OddAfterFirstA()
        {
            PDLPred phi = new PDLModSetEq(new PDLIntersect(new PDLIndicesOf("b"), new PDLAllPosAfter(new PDLFirstOcc("a"))), 2, 1);

            var solver = new CharSetSolver(BitWidth.BV64);
            var alph = new List<char> { 'a', 'b' };
            var al = new HashSet<char>(alph);

            var dfa = phi.GetDFA(al, solver);
            //string file = "../../../TestPDL/DotFiles/OddAfterFirstA";
            //solver.SaveAsDot(dfa, "aut", file);


        }
        public void mod6()
        {
            var solver = new CharSetSolver(BitWidth.BV64);
            List<char> alph = new List<char> { 'a', 'b' };
            HashSet<char> al = new HashSet<char>(alph);


            PDLPred phi = new PDLModSetEq(new PDLAllPos(), 6, 3);

            StringBuilder sb = new StringBuilder();

            phi.ToMSO(new FreshGen()).ToString(sb);

            System.Console.WriteLine(sb);

            Stopwatch sw = new Stopwatch();
            sw.Start();
            var dfa = phi.GetDFA(al, solver);
            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds);

            //Stopwatch sw1 = new Stopwatch();
            //sw1.Start();
            //var dfa1 = phi.GetDFA(al, solver);
            //sw1.Stop();
            //Console.WriteLine(sw1.ElapsedMilliseconds);

            var test = solver.Convert(@"^((a|b){6})*(a|b){3}$").Determinize(solver).Minimize(solver);

            //string file = "../../../TestPDL/DotFiles/mod6";

            //solver.SaveAsDot(dfa, "aut", file);
            // solver.SaveAsDot(test, "aut", file+"t");


            Console.Write(phi.ToMSO().ToString());
            Assert.IsTrue(dfa.IsEquivalentWith(test, solver));
        }
        public void mod5()
        {
            var solver = new CharSetSolver(BitWidth.BV64);
            List<char> alph = new List<char> { 'a', 'b' };
            HashSet<char> al = new HashSet<char>(alph);


            PDLPred phi = new PDLModSetEq(new PDLIndicesOf("a"), 5, 3);

            StringBuilder sb = new StringBuilder();

            phi.ToMSO(new FreshGen()).ToString(sb);

            System.Console.WriteLine(sb);

            var dfa = phi.GetDFA(al, solver);

            var test = solver.Convert(@"^((b*ab*){5})*(b*ab*){3}$").Determinize(solver).Minimize(solver);

            //string file = "../../../TestPDL/DotFiles/mod5";

            //solver.SaveAsDot(dfa, "aut", file);


            //solver.SaveAsDot(test, "aut", file+"t");

            Assert.IsTrue(dfa.IsEquivalentWith(test, solver));            

            

        }