예제 #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 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 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));            

            

        }