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)); }
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)); }