예제 #1
0
 public void TestMSO_Member()
 {
     var solver           = new CharSetSolver(BitWidth.BV7);
     var ca               = new CartesianAlgebraBDD <BDD>(solver);
     var x                = new Variable("x", false);
     var y                = new Variable("y", false);
     var fo_x             = new MSOIsSingleton <BDD>(x);
     MSOFormula <BDD> xSy = new MSOSubset <BDD>(x, y);
     var mem              = new MSOAnd <BDD>(xSy, fo_x);
     var aut_mem          = mem.GetAutomaton(ca);
     //aut_mem.ShowGraph("aut_mem");
 }
예제 #2
0
 public void TestMSO_Equal()
 {
     var solver = new CharSetSolver(BitWidth.BV7);
     var ca = new CartesianAlgebraBDD<BDD>(solver);
     var x = new Variable("x", false);
     var y = new Variable("y", false);
     var fo_x = new MSOIsSingleton<BDD>(x) ;
     var fo_y = new MSOIsSingleton<BDD>(y);
     MSOFormula<BDD> fo = new MSOAnd<BDD>(fo_x, fo_y);
     MSOFormula<BDD> xSy = new MSOSubset<BDD>(x, y);
     MSOFormula<BDD> ySx = new MSOSubset<BDD>(y, x);
     MSOFormula<BDD> yEQx = new MSOAnd<BDD>(xSy, ySx);
     yEQx = new MSOAnd<BDD>(yEQx, fo);
     var aut_yEQx = yEQx.GetAutomaton(ca);
     //aut_yEQx.ShowGraph("aut_yEQx");
 }
예제 #3
0
 public void TestWS1S_NotLabel()
 {
     var solver = new CharSetSolver(BitWidth.BV7);
     //var x1 = new Variable("x1", false);
     var x    = new Variable("x", false);
     var pred = new MSOPredicate <BDD>(solver.MkCharConstraint('c'), x);
     var fo_x = new MSOIsSingleton <BDD>(x);
     var ca   = new CartesianAlgebraBDD <BDD>(solver);
     var lab  = new MSOAnd <BDD>(pred, fo_x);
     MSOFormula <BDD> not_lab = new MSONot <BDD>(lab);
     var not_lab_actual       = new MSOAnd <BDD>(not_lab, fo_x);
     var aut_not_lab          = not_lab_actual.GetAutomaton(ca);
     var aut_not_lab_prelim   = not_lab.GetAutomaton(ca);
     var c_aut_lab            = lab.GetAutomaton(ca).Complement().Minimize();
     //c_aut_lab.ShowGraph("c_aut_lab");
     //aut_not_lab.ShowGraph("aut_not_lab");
     //aut_not_lab_prelim.ShowGraph("aut_not_lab_prelim");
     //TBD: equivalence
 }