public class BDDFactoryIntImpl.IntBDD extends BDD
BDD.AllSatIterator, BDD.BDDIterator, BDD.BDDToString
Modifier and Type | Field and Description |
---|---|
protected int |
v |
Modifier | Constructor and Description |
---|---|
protected |
IntBDD(int v) |
Modifier and Type | Method and Description |
---|---|
BDD |
apply(BDD that,
BDDFactory.BDDOp opr)
Returns the result of applying the binary operator opr to the
two BDDs.
|
BDD |
applyAll(BDD that,
BDDFactory.BDDOp opr,
BDDVarSet var)
Applies the binary operator opr to two BDDs and then performs a
universal quantification of the variables from the variable set
var.
|
BDD |
applyEx(BDD that,
BDDFactory.BDDOp opr,
BDDVarSet var)
Applies the binary operator opr to two BDDs and then performs
an existential quantification of the variables from the variable set
var.
|
BDD |
applyUni(BDD that,
BDDFactory.BDDOp opr,
BDDVarSet var)
Applies the binary operator opr to two BDDs and then performs
a unique quantification of the variables from the variable set
var.
|
BDD |
applyWith(BDD that,
BDDFactory.BDDOp opr)
Makes this BDD be the result of the binary operator opr of two
BDDs.
|
BDD |
compose(BDD g,
int var)
Functional composition.
|
BDD |
constrain(BDD that)
Generalized cofactor.
|
boolean |
equals(BDD that)
Returns true if this BDD equals that BDD, false otherwise.
|
BDD |
exist(BDDVarSet var)
Existential quantification of variables.
|
BDD |
forAll(BDDVarSet var)
Universal quantification of variables.
|
void |
free()
Frees this BDD.
|
BDD |
fullSatOne()
Finds one satisfying variable assignment.
|
BDDFactory |
getFactory()
Returns the factory that created this BDD.
|
int |
hashCode() |
BDD |
high()
Gets the true branch of this BDD.
|
BDD |
id()
Identity function.
|
boolean |
isOne()
Returns true if this BDD is the one (true) BDD.
|
boolean |
isUniverse()
Returns true if this BDD is the universe BDD.
|
boolean |
isZero()
Returns true if this BDD is the zero (false) BDD.
|
BDD |
ite(BDD thenBDD,
BDD elseBDD)
if-then-else operator.
|
int |
level()
Gets the level of this BDD.
|
BDD |
low()
Gets the false branch of this BDD.
|
int |
nodeCount()
Counts the number of distinct nodes used for this BDD.
|
BDD |
not()
Negates this BDD by exchanging all references to the zero-terminal with
references to the one-terminal and vice-versa.
|
double |
pathCount()
Counts the number of paths leading to the true terminal.
|
BDD |
replace(BDDPairing pair)
Returns a BDD where all variables are replaced with the variables
defined by pair.
|
BDD |
replaceWith(BDDPairing pair)
Replaces all variables in this BDD with the variables defined by pair.
|
BDD |
restrict(BDD var)
Restrict a set of variables to constant values.
|
BDD |
restrictWith(BDD that)
Mutates this BDD to restrict a set of variables to constant values.
|
double |
satCount()
Calculates the number of satisfying variable assignments.
|
BDD |
satOne()
Finds one satisfying variable assignment.
|
BDD |
satOne(BDDVarSet var,
boolean pol)
Finds one satisfying variable assignment.
|
BDD |
simplify(BDD d)
Coudert and Madre's restrict function.
|
BDDVarSet |
support()
Returns the variable support of this BDD.
|
BDDVarSet |
toVarSet()
Converts this BDD to a new BDDVarSet.
|
BDD |
unique(BDDVarSet var)
Unique quantification of variables.
|
int |
var()
Gets the variable labeling the BDD.
|
int[] |
varProfile()
Counts the number of times each variable occurs in this BDD.
|
BDD |
veccompose(BDDPairing pair)
Simultaneous functional composition.
|
allsat, and, andWith, biimp, biimpWith, equals, imp, impWith, iterator, logSatCount, logSatCount, or, orWith, printdot_rec, printDot, printSet, printSetWithDomains, relprod, satCount, scanAllVar, scanVar, toString, toStringWithDomains, toStringWithDomains, xor, xorWith
public BDD apply(BDD that, BDDFactory.BDDOp opr)
BDD
Returns the result of applying the binary operator opr to the two BDDs.
Compare to bdd_apply.
public BDD applyAll(BDD that, BDDFactory.BDDOp opr, BDDVarSet var)
BDD
Applies the binary operator opr to two BDDs and then performs a universal quantification of the variables from the variable set var.
Compare to bdd_appall.
applyAll
in class BDD
that
- the BDD to apply the operator onopr
- the operator to applyvar
- BDDVarSet containing the variables to quantifyBDDDomain.set()
public BDD applyEx(BDD that, BDDFactory.BDDOp opr, BDDVarSet var)
BDD
Applies the binary operator opr to two BDDs and then performs an existential quantification of the variables from the variable set var.
Compare to bdd_appex.
applyEx
in class BDD
that
- the BDD to apply the operator onopr
- the operator to applyvar
- BDDVarSet containing the variables to quantifyBDDDomain.set()
public BDD applyUni(BDD that, BDDFactory.BDDOp opr, BDDVarSet var)
BDD
Applies the binary operator opr to two BDDs and then performs a unique quantification of the variables from the variable set var.
Compare to bdd_appuni.
applyUni
in class BDD
that
- the BDD to apply the operator onopr
- the operator to applyvar
- BDDVarSet containing the variables to quantifyBDDDomain.set()
public BDD applyWith(BDD that, BDDFactory.BDDOp opr)
BDD
Makes this BDD be the result of the binary operator opr of two BDDs. The "that" BDD is consumed, and can no longer be used. Attempting to use the passed in BDD again will result in an exception being thrown.
Compare to bdd_apply and bdd_delref.
public BDD compose(BDD g, int var)
BDD
Functional composition. Substitutes the variable var with the BDD that in this BDD: result = f[g/var].
Compare to bdd_compose.
public BDD constrain(BDD that)
BDD
Generalized cofactor. Computes the generalized cofactor of this BDD with respect to the given BDD.
Compare to bdd_constrain.
public boolean equals(BDD that)
BDD
Returns true if this BDD equals that BDD, false otherwise.
public BDD exist(BDDVarSet var)
BDD
Existential quantification of variables. Removes all occurrences of this BDD in variables in the set var by existential quantification.
Compare to bdd_exist.
exist
in class BDD
var
- BDDVarSet containing the variables to be existentially quantifiedBDDDomain.set()
public BDD forAll(BDDVarSet var)
BDD
Universal quantification of variables. Removes all occurrences of this BDD in variables in the set var by universal quantification.
Compare to bdd_forall.
forAll
in class BDD
var
- BDDVarSet containing the variables to be universally quantifiedBDDDomain.set()
public void free()
BDD
Frees this BDD. Further use of this BDD will result in an exception being thrown.
public BDD fullSatOne()
BDD
Finds one satisfying variable assignment. Finds a BDD with exactly one variable at all levels. The new BDD implies this BDD and is not false unless this BDD is false.
Compare to bdd_fullsatone.
fullSatOne
in class BDD
public BDDFactory getFactory()
BDD
Returns the factory that created this BDD.
getFactory
in class BDD
public BDD high()
BDD
Gets the true branch of this BDD.
Compare to bdd_high.
public BDD id()
BDD
Identity function. Returns a copy of this BDD. Use as the argument to the "xxxWith" style operators when you do not want to have the argument consumed.
Compare to bdd_addref.
public boolean isOne()
BDD
Returns true if this BDD is the one (true) BDD.
public boolean isUniverse()
BDD
Returns true if this BDD is the universe BDD. The universal BDD differs from the one BDD in ZDD mode.
isUniverse
in class BDD
public boolean isZero()
BDD
Returns true if this BDD is the zero (false) BDD.
public BDD ite(BDD thenBDD, BDD elseBDD)
BDD
if-then-else operator.
Compare to bdd_ite.
public BDD low()
BDD
Gets the false branch of this BDD.
Compare to bdd_low.
public int level()
BDD
Gets the level of this BDD.
Compare to LEVEL() macro.
public int nodeCount()
BDD
Counts the number of distinct nodes used for this BDD.
Compare to bdd_nodecount.
public BDD not()
BDD
Negates this BDD by exchanging all references to the zero-terminal with references to the one-terminal and vice-versa.
Compare to bdd_not.
public double pathCount()
BDD
Counts the number of paths leading to the true terminal.
Compare to bdd_pathcount.
public BDD replace(BDDPairing pair)
BDD
Returns a BDD where all variables are replaced with the variables defined by pair. Each entry in pair consists of a old and a new variable. Whenever the old variable is found in this BDD then a new node with the new variable is inserted instead.
Compare to bdd_replace.
public BDD replaceWith(BDDPairing pair)
BDD
Replaces all variables in this BDD with the variables defined by pair. Each entry in pair consists of a old and a new variable. Whenever the old variable is found in this BDD then a new node with the new variable is inserted instead. Mutates the current BDD.
Compare to bdd_replace and bdd_delref.
replaceWith
in class BDD
pair
- pairing of variables to the BDDs that replace those variablespublic BDD restrict(BDD var)
BDD
Restrict a set of variables to constant values. Restricts the variables in this BDD to constant true if they are included in their positive form in var, and constant false if they are included in their negative form.
Note that this is quite different than Coudert and Madre's restrict function.
Compare to bdd_restrict.
restrict
in class BDD
var
- BDD containing the variables to be restrictedBDD.simplify(BDD)
public BDD restrictWith(BDD that)
BDD
Mutates this BDD to restrict a set of variables to constant values. Restricts the variables in this BDD to constant true if they are included in their positive form in var, and constant false if they are included in their negative form. The "that" BDD is consumed, and can no longer be used.
Note that this is quite different than Coudert and Madre's restrict function.
Compare to bdd_restrict and bdd_delref.
restrictWith
in class BDD
that
- BDD containing the variables to be restrictedBDDDomain.set()
public double satCount()
BDD
Calculates the number of satisfying variable assignments.
Compare to bdd_satcount.
public BDD satOne()
BDD
Finds one satisfying variable assignment. Finds a BDD with at most one variable at each level. The new BDD implies this BDD and is not false unless this BDD is false.
Compare to bdd_satone.
public BDD satOne(BDDVarSet var, boolean pol)
BDD
Finds one satisfying variable assignment. Finds a minterm in this BDD. The var argument is a set of variables that must be mentioned in the result. The polarity of these variables in the result - in case they are undefined in this BDD - are defined by the pol parameter. If pol is false, then all variables will be in negative form. Otherwise they will be in positive form.
Compare to bdd_satoneset.
satOne
in class BDD
var
- BDDVarSet containing the set of variables that must be mentioned in the resultpol
- the polarity of the resultBDDDomain.set()
public BDD simplify(BDD d)
BDD
Coudert and Madre's restrict function. Tries to simplify the BDD f by restricting it to the domain covered by d. No checks are done to see if the result is actually smaller than the input. This can be done by the user with a call to nodeCount().
Compare to bdd_simplify.
public BDDVarSet support()
BDD
Returns the variable support of this BDD. The support is all the variables that this BDD depends on.
Compare to bdd_support.
public BDD unique(BDDVarSet var)
BDD
Unique quantification of variables. This type of quantification uses a XOR operator instead of an OR operator as in the existential quantification.
Compare to bdd_unique.
unique
in class BDD
var
- BDDVarSet containing the variables to be uniquely quantifiedBDDDomain.set()
public int var()
BDD
Gets the variable labeling the BDD.
Compare to bdd_var.
public int[] varProfile()
BDD
Counts the number of times each variable occurs in this BDD. The result is stored and returned in an integer array where the i'th position stores the number of times the i'th printing variable occurred in the BDD.
Compare to bdd_varprofile.
varProfile
in class BDD
public BDD veccompose(BDDPairing pair)
BDD
Simultaneous functional composition. Uses the pairs of variables and BDDs in pair to make the simultaneous substitution: f [g1/V1, ... gn/Vn]. In this way one or more BDDs may be substituted in one step. The BDDs in pair may depend on the variables they are substituting. BDD.compose() may be used instead of BDD.replace() but is not as efficient when gi is a single variable, the same applies to BDD.restrict(). Note that simultaneous substitution is not necessarily the same as repeated substitution.
Compare to bdd_veccompose.
veccompose
in class BDD
pair
- the pairing of variables to functionsCopyright © 2020. All rights reserved.