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