public override WS1SFormula ToWS1S(CharSetSolver solver)
 {
     if (WS1S == null)
     {
         WS1S = new WS1SNot(phi.ToWS1S(solver));
     }
     return(WS1S);
 }
 public override WS1SFormula ToWS1S(CharSetSolver solver)
 {
     if (WS1S == null)
     {
         WS1S = new WS1SNot(new WS1SExists(variable, new WS1SAnd(new WS1SSingleton(variable), new WS1SNot(phi.ToWS1S(solver)))));
     }
     return(WS1S);
 }
 public override WS1SFormula ToWS1S(CharSetSolver solver)
 {
     if (WS1S == null)
         WS1S = new WS1SNot(new WS1SExists(variable, new WS1SAnd(new WS1SSingleton(variable), new WS1SNot(phi.ToWS1S(solver)))));
     return WS1S;
 }
 public override WS1SFormula ToWS1S(CharSetSolver solver)
 {
     if (WS1S == null)
         WS1S = new WS1SNot(phi.ToWS1S(solver));
     return WS1S;
 }
        public void WS1SNot()
        {
            var solver = new CharSetSolver(BitWidth.BV64);  //new solver using ASCII encoding

            List<char> alph = new List<char> { 'a', 'b' };
            HashSet<char> al = new HashSet<char>(alph);

            WS1SFormula f1 = new WS1SUnaryPred("X", solver.MkCharConstraint(false, 'a'));
            WS1SFormula f2 = new WS1SSingleton("X");
            WS1SFormula f = new WS1SAnd(f1, f2);

            WS1SFormula phi = new WS1SNot(new WS1SExists("X", f));

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

            var test = solver.Convert(@"^b*$");

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

            string file = "../../../MSOZ3Test/DotFiles/nota";

            solver.SaveAsDot(dfa, "aut", file);   //extension .dot  is added automatically when missing
        }