public void TestBvSetSolver5() { var solver = new BDDAlgebra(); var a = solver.MkSetFromRange(0, 3, 6); var b = solver.MkSetFromRange(0x40, 0x43, 6); var c = solver.MkSetFromRange(0x20, 0x23, 6); var d = solver.MkSetFromRange(0x60, 0x63, 6); var all = new BDD[] { a, b, c, d }; //a.ToDot("_0_3.dot"); //b.ToDot("_10_13.dot"); var a_size = solver.ComputeDomainSize(a, 6); var b_size = solver.ComputeDomainSize(b, 6); var x = solver.MkAnd(a, b); var u = solver.MkOr(all); var u_size = solver.ComputeDomainSize(u, 6); //u.ToDot("_0_3_u_10_13.dot"); var u_compl = solver.MkNot(u); //u_compl.ToDot("_0_3_u_10_13_compl.dot"); var u_compl_size = solver.ComputeDomainSize(u_compl, 6); Assert.AreEqual <ulong>(4, a_size); Assert.AreEqual <ulong>(4, b_size); Assert.IsTrue(x.IsEmpty); Assert.AreEqual <ulong>(16, u_size); var ranges = solver.ToRanges(u, 6); Assert.AreEqual <int>(4, ranges.Length); Assert.AreEqual <uint>(0, ranges[0].First); Assert.AreEqual <uint>(3, ranges[0].Second); Assert.AreEqual <uint>(0x20, ranges[1].First); Assert.AreEqual <uint>(0x23, ranges[1].Second); Assert.AreEqual <uint>(0x40, ranges[2].First); Assert.AreEqual <uint>(0x43, ranges[2].Second); Assert.AreEqual <uint>(0x60, ranges[3].First); Assert.AreEqual <uint>(0x63, ranges[3].Second); }
public void TestBvSetSolver4() { var solver = new BDDAlgebra(); var _0_3 = solver.MkSetFromRange(0, 3, 6); var _10_13 = solver.MkSetFromRange(0x40, 0x43, 6); //_0_3.ToDot("_0_3.dot"); //_10_13.ToDot("_10_13.dot"); var _0_3_size = solver.ComputeDomainSize(_0_3, 6); var _10_13_size = solver.ComputeDomainSize(_10_13, 6); var x = solver.MkAnd(_0_3, _10_13); var _0_3_u_10_13 = solver.MkOr(_0_3, _10_13); var _0_3_u_10_13_size = solver.ComputeDomainSize(_0_3_u_10_13, 6); //_0_3_u_10_13.ToDot("_0_3_u_10_13.dot"); var _0_3_u_10_13_compl = solver.MkNot(_0_3_u_10_13); //_0_3_u_10_13_compl.ToDot("_0_3_u_10_13_compl.dot"); var _0_3_u_10_13_compl_size = solver.ComputeDomainSize(_0_3_u_10_13_compl, 6); Assert.AreEqual <ulong>(4, _0_3_size); Assert.AreEqual <ulong>(4, _10_13_size); Assert.IsTrue(x.IsEmpty); Assert.AreEqual <ulong>(8, _0_3_u_10_13_size); var ranges = solver.ToRanges(_0_3_u_10_13, 6); Assert.AreEqual <int>(2, ranges.Length); Assert.AreEqual <uint>(0, ranges[0].First); Assert.AreEqual <uint>(3, ranges[0].Second); Assert.AreEqual <uint>(0x40, ranges[1].First); Assert.AreEqual <uint>(0x43, ranges[1].Second); }
public void TestBvSetSolver5() { var solver = new BDDAlgebra(); var a = solver.MkSetFromRange(0, 3, 6); var b = solver.MkSetFromRange(0x40, 0x43, 6); var c = solver.MkSetFromRange(0x20, 0x23, 6); var d = solver.MkSetFromRange(0x60, 0x63, 6); var all = new BDD[] { a, b, c, d }; //a.ToDot("_0_3.dot"); //b.ToDot("_10_13.dot"); var a_size = solver.ComputeDomainSize(a, 6); var b_size = solver.ComputeDomainSize(b, 6); var x = solver.MkAnd(a, b); var u = solver.MkOr(all); var u_size = solver.ComputeDomainSize(u, 6); //u.ToDot("_0_3_u_10_13.dot"); var u_compl = solver.MkNot(u); //u_compl.ToDot("_0_3_u_10_13_compl.dot"); var u_compl_size = solver.ComputeDomainSize(u_compl, 6); Assert.AreEqual<ulong>(4, a_size); Assert.AreEqual<ulong>(4, b_size); Assert.IsTrue(x.IsEmpty); Assert.AreEqual<ulong>(16, u_size); var ranges = solver.ToRanges(u, 6); Assert.AreEqual<int>(4, ranges.Length); Assert.AreEqual<uint>(0, ranges[0].First); Assert.AreEqual<uint>(3, ranges[0].Second); Assert.AreEqual<uint>(0x20, ranges[1].First); Assert.AreEqual<uint>(0x23, ranges[1].Second); Assert.AreEqual<uint>(0x40, ranges[2].First); Assert.AreEqual<uint>(0x43, ranges[2].Second); Assert.AreEqual<uint>(0x60, ranges[3].First); Assert.AreEqual<uint>(0x63, ranges[3].Second); }
public void TestBvSetSolver4() { var solver = new BDDAlgebra(); var _0_3 = solver.MkSetFromRange(0, 3, 6); var _10_13 = solver.MkSetFromRange(0x40, 0x43, 6); //_0_3.ToDot("_0_3.dot"); //_10_13.ToDot("_10_13.dot"); var _0_3_size = solver.ComputeDomainSize(_0_3, 6); var _10_13_size = solver.ComputeDomainSize(_10_13, 6); var x = solver.MkAnd(_0_3, _10_13); var _0_3_u_10_13 = solver.MkOr(_0_3, _10_13); var _0_3_u_10_13_size = solver.ComputeDomainSize(_0_3_u_10_13, 6); //_0_3_u_10_13.ToDot("_0_3_u_10_13.dot"); var _0_3_u_10_13_compl = solver.MkNot(_0_3_u_10_13); //_0_3_u_10_13_compl.ToDot("_0_3_u_10_13_compl.dot"); var _0_3_u_10_13_compl_size = solver.ComputeDomainSize(_0_3_u_10_13_compl, 6); Assert.AreEqual<ulong>(4, _0_3_size); Assert.AreEqual<ulong>(4, _10_13_size); Assert.IsTrue(x.IsEmpty); Assert.AreEqual<ulong>(8, _0_3_u_10_13_size); var ranges = solver.ToRanges(_0_3_u_10_13, 6); Assert.AreEqual<int>(2, ranges.Length); Assert.AreEqual<uint>(0, ranges[0].First); Assert.AreEqual<uint>(3, ranges[0].Second); Assert.AreEqual<uint>(0x40, ranges[1].First); Assert.AreEqual<uint>(0x43, ranges[1].Second); }