code: public Formula cnf(final BDD bdd) {
      final List<byte[]> unsatPaths = this.kernel.allUnsat(bdd.index());
      final List<Formula> clauses = new LinkedList<>();
      List<Formula> literals;
      for (final byte[] path : unsatPaths) {
        literals = new LinkedList<>();
        for (int i = 0; i < path.length; i++)
          if (path[i] == 0)
            literals.add(this.idx2var.get(i));
          else if (path[i] == 1)
            literals.add(this.idx2var.get(i).negate());
        clauses.add(this.f.or(literals));
      }
      return this.f.and(clauses);
    }
docs: Returns a CNF formula for a given BDD.
  @param bdd the node
  @return the CNF for the formula represented by the BDD