Ejemplo n.º 1
0
  public static void main(String[] args) {
    BDDFactory bdd = init(1000000, 100000);

    System.out.println("One: " + CUDDFactory.one);
    System.out.println("Zero: " + CUDDFactory.zero);

    BDDDomain[] doms = bdd.extDomain(new int[] {50, 10, 15, 20, 15});

    BDD b = bdd.one();
    for (int i = 0; i < doms.length - 1; ++i) {
      b.andWith(doms[i].ithVar(i));
    }

    for (int i = 0; i < bdd.numberOfDomains(); ++i) {
      BDDDomain d = bdd.getDomain(i);
      int[] ivar = d.vars();
      System.out.print("Domain #" + i + ":");
      for (int j = 0; j < ivar.length; ++j) {
        System.out.print(' ');
        System.out.print(j);
        System.out.print(':');
        System.out.print(ivar[j]);
      }
      System.out.println();
    }

    BDDPairing p = bdd.makePair(doms[2], doms[doms.length - 1]);
    System.out.println("Pairing: " + p);

    System.out.println("Before replace(): " + b);
    BDD c = b.replace(p);
    System.out.println("After replace(): " + c);

    c.printDot();
  }
Ejemplo n.º 2
0
  @Test
  public void testOverlapDomain() {
    BDDFactory factory = BDDFactory.init("cudd", 10000, 10000);
    BDDDomain[] doms = factory.extDomain(new long[] {8, 8});
    Assert.assertEquals(8, doms[0].size().longValue());
    Assert.assertEquals(8, doms[1].size().longValue());

    BDD bdd = doms[0].ithVar(5);
    Assert.assertEquals(5, bdd.scanVar(doms[0]).intValue());

    doms[0] = factory.overlapDomain(doms[0], doms[1]);
    Assert.assertEquals(64, doms[0].size().longValue());

    // Corrupted
    Assert.assertEquals(5, bdd.scanVar(doms[0]).intValue());
  }
Ejemplo n.º 3
0
  /** Bug in JavaBDD. The method varRange does not work correctly. */
  @Test
  public void testVarRange() {
    BDDFactory factory = BDDFactory.init("cudd", 10000, 10000);
    BDDDomain[] doms = factory.extDomain(new long[] {8});

    BDD bdd = doms[0].varRange(2, 5);
    System.out.println(bdd.toStringWithDomains());

    HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(2, 3, 4, 5));
    BDDIterator itr = bdd.iterator(doms[0].var);
    while (itr.hasNext()) {
      BDD tmp = itr.nextBDD();
      Assert.assertTrue(set.contains(tmp.scanVar(doms[0]).longValue()));
    }
    bdd.free();
    factory.done();
  }
Ejemplo n.º 4
0
  @Test
  public void testIthVar() {
    BDDFactory factory = BDDFactory.init("cudd", 10000, 10000);
    BDDDomain[] doms = factory.extDomain(new long[] {4, 4});
    BDDDomain dom = doms[0];

    try {
      dom.ithVar(4);
    } catch (BDDException e) {
      System.out.println("falls through");
    }

    BDD a = dom.ithVar(0);
    Assert.assertEquals(1, setOf(a, dom).size());
    Assert.assertTrue(setOf(a, dom).contains(0));
    //		Assert.assertEquals(1, doms[0].usedbits);

    BDD b = dom.ithVar(1);
    //		Assert.assertEquals(1, doms[0].usedbits);

    BDD c = dom.ithVar(2);
    System.out.println(setOf(a, dom));
    Assert.assertEquals(1, setOf(a, dom).size()); // Wrong
    Assert.assertTrue(setOf(a, dom).contains(0));
    Assert.assertEquals(1, setOf(c, dom).size());
    Assert.assertTrue(setOf(c, dom).contains(2));
    //		Assert.assertEquals(2, doms[0].usedbits);

    BDD d = dom.ithVar(3);
    //		Assert.assertEquals(2, doms[0].usedbits);

    //		doms[0].extendCapacity(4);
    //		Assert.assertEquals(4, doms[0].ithVar(4).scanVar(doms[0]).intValue());
    //		Assert.assertEquals(4, doms[0].varNum());
    //
    //		doms[0].extendCapacity(50);
    //		Assert.assertEquals(50, doms[0].ithVar(50).scanVar(doms[0]).intValue());
    //		Assert.assertEquals(7, doms[0].varNum());
  }