pub struct BDDFunction(/* private fields */);Expand description
Boolean function represented as BDD
Trait Implementations§
Source§impl BooleanFunction for BDDFunction
impl BooleanFunction for BDDFunction
Source§fn f<'__id>(manager: &<Self as Function>::Manager<'__id>) -> Self
fn f<'__id>(manager: &<Self as Function>::Manager<'__id>) -> Self
Get the always false function
⊥Source§fn f_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
) -> <<Self as Function>::Manager<'__id> as Manager>::Edge
fn f_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, ) -> <<Self as Function>::Manager<'__id> as Manager>::Edge
Get the always false function
⊥ as edgeSource§fn t<'__id>(manager: &<Self as Function>::Manager<'__id>) -> Self
fn t<'__id>(manager: &<Self as Function>::Manager<'__id>) -> Self
Get the always true function
⊤Source§fn t_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
) -> <<Self as Function>::Manager<'__id> as Manager>::Edge
fn t_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, ) -> <<Self as Function>::Manager<'__id> as Manager>::Edge
Get the always true function
⊤ as edgeSource§fn var<'__id>(
manager: &<Self as Function>::Manager<'__id>,
var: VarNo,
) -> AllocResult<Self>
fn var<'__id>( manager: &<Self as Function>::Manager<'__id>, var: VarNo, ) -> AllocResult<Self>
Get the Boolean function that is true if and only if
var is true Read moreSource§fn var_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
var: VarNo,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn var_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, var: VarNo, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Get the Boolean function (as edge) that is true if and only if
var is
true Read moreSource§fn not_var<'__id>(
manager: &<Self as Function>::Manager<'__id>,
var: VarNo,
) -> AllocResult<Self>
fn not_var<'__id>( manager: &<Self as Function>::Manager<'__id>, var: VarNo, ) -> AllocResult<Self>
Get the Boolean function that is true if and only if
var is false Read moreSource§fn not_var_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
var: VarNo,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn not_var_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, var: VarNo, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Get the Boolean function (as edge) that is true if and only if
var is
false Read moreSource§fn not(&self) -> AllocResult<Self>
fn not(&self) -> AllocResult<Self>
Compute the negation
¬self Read moreSource§fn not_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
edge: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn not_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, edge: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Compute the negation
¬edge, edge versionSource§fn not_owned(self) -> AllocResult<Self>
fn not_owned(self) -> AllocResult<Self>
Compute the negation
¬self, owned version Read moreSource§fn not_edge_owned<'__id>(
manager: &<Self as Function>::Manager<'__id>,
edge: <<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn not_edge_owned<'__id>( manager: &<Self as Function>::Manager<'__id>, edge: <<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Compute the negation
¬edge, owned edge version Read moreSource§fn and(&self, rhs: &Self) -> AllocResult<Self>
fn and(&self, rhs: &Self) -> AllocResult<Self>
Compute the conjunction
self ∧ rhs Read moreSource§fn and_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn and_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Compute the conjunction
lhs ∧ rhs, edge versionSource§fn or(&self, rhs: &Self) -> AllocResult<Self>
fn or(&self, rhs: &Self) -> AllocResult<Self>
Compute the disjunction
self ∨ rhs Read moreSource§fn or_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn or_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Compute the disjunction
lhs ∨ rhs, edge versionSource§fn nand(&self, rhs: &Self) -> AllocResult<Self>
fn nand(&self, rhs: &Self) -> AllocResult<Self>
Compute the negated conjunction
self ⊼ rhs Read moreSource§fn nand_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn nand_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Compute the negated conjunction
lhs ⊼ rhs, edge versionSource§fn nor(&self, rhs: &Self) -> AllocResult<Self>
fn nor(&self, rhs: &Self) -> AllocResult<Self>
Compute the negated disjunction
self ⊽ rhs Read moreSource§fn nor_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn nor_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Compute the negated disjunction
lhs ⊽ rhs, edge versionSource§fn xor(&self, rhs: &Self) -> AllocResult<Self>
fn xor(&self, rhs: &Self) -> AllocResult<Self>
Compute the exclusive disjunction
self ⊕ rhs Read moreSource§fn xor_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn xor_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Compute the exclusive disjunction
lhs ⊕ rhs, edge versionSource§fn equiv(&self, rhs: &Self) -> AllocResult<Self>
fn equiv(&self, rhs: &Self) -> AllocResult<Self>
Compute the equivalence
self ↔ rhs Read moreSource§fn equiv_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn equiv_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Compute the equivalence
lhs ↔ rhs, edge versionSource§fn imp(&self, rhs: &Self) -> AllocResult<Self>
fn imp(&self, rhs: &Self) -> AllocResult<Self>
Source§fn imp_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn imp_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Compute the implication
lhs → rhs, edge versionSource§fn imp_strict(&self, rhs: &Self) -> AllocResult<Self>
fn imp_strict(&self, rhs: &Self) -> AllocResult<Self>
Compute the strict implication
self < rhs Read moreSource§fn imp_strict_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn imp_strict_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Compute the strict implication
lhs < rhs, edge versionSource§fn ite(&self, f1: &Self, f2: &Self) -> AllocResult<Self>
fn ite(&self, f1: &Self, f2: &Self) -> AllocResult<Self>
Compute
if self { then_case } else { else_case } Read moreSource§fn ite_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
e0: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
e1: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
e2: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn ite_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, e0: &<<Self as Function>::Manager<'__id> as Manager>::Edge, e1: &<<Self as Function>::Manager<'__id> as Manager>::Edge, e2: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Compute
if if_edge { then_edge } else { else_edge } (edge version) Read moreSource§fn pick_cube_dd_set(&self, rhs: &Self) -> AllocResult<Self>
fn pick_cube_dd_set(&self, rhs: &Self) -> AllocResult<Self>
Pick a symbolic cube of this function, i.e., as decision diagram, using
the literals in
literal_set if there is a choice Read moreSource§fn pick_cube_dd_set_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn pick_cube_dd_set_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Edge version of Self::pick_cube_dd_set()Source§fn cofactor_true(&self) -> Option<Self>
fn cofactor_true(&self) -> Option<Self>
Source§fn cofactor_false(&self) -> Option<Self>
fn cofactor_false(&self) -> Option<Self>
Source§fn cofactors_edge<'__a, '__id>(
manager: &'__a <Self as Function>::Manager<'__id>,
f: &'__a <<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> Option<(Borrowed<'__a, <<Self as Function>::Manager<'__id> as Manager>::Edge>, Borrowed<'__a, <<Self as Function>::Manager<'__id> as Manager>::Edge>)>
fn cofactors_edge<'__a, '__id>( manager: &'__a <Self as Function>::Manager<'__id>, f: &'__a <<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> Option<(Borrowed<'__a, <<Self as Function>::Manager<'__id> as Manager>::Edge>, Borrowed<'__a, <<Self as Function>::Manager<'__id> as Manager>::Edge>)>
Source§fn cofactors_node<'__a, '__id>(
tag: ETagOfFunc<'__id, Self>,
node: &'__a INodeOfFunc<'__id, Self>,
) -> (Borrowed<'__a, <<Self as Function>::Manager<'__id> as Manager>::Edge>, Borrowed<'__a, <<Self as Function>::Manager<'__id> as Manager>::Edge>)
fn cofactors_node<'__a, '__id>( tag: ETagOfFunc<'__id, Self>, node: &'__a INodeOfFunc<'__id, Self>, ) -> (Borrowed<'__a, <<Self as Function>::Manager<'__id> as Manager>::Edge>, Borrowed<'__a, <<Self as Function>::Manager<'__id> as Manager>::Edge>)
Source§fn satisfiable(&self) -> bool
fn satisfiable(&self) -> bool
Source§fn sat_count<__N, __S>(
&self,
vars: LevelNo,
cache: &mut SatCountCache<__N, __S>,
) -> __Nwhere
__N: SatCountNumber,
__S: BuildHasher,
fn sat_count<__N, __S>(
&self,
vars: LevelNo,
cache: &mut SatCountCache<__N, __S>,
) -> __Nwhere
__N: SatCountNumber,
__S: BuildHasher,
Count the number of satisfying assignments, assuming
vars input
variables Read moreSource§fn sat_count_edge<'__id, __N, __S>(
manager: &<Self as Function>::Manager<'__id>,
edge: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
vars: LevelNo,
cache: &mut SatCountCache<__N, __S>,
) -> __Nwhere
__N: SatCountNumber,
__S: BuildHasher,
fn sat_count_edge<'__id, __N, __S>(
manager: &<Self as Function>::Manager<'__id>,
edge: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
vars: LevelNo,
cache: &mut SatCountCache<__N, __S>,
) -> __Nwhere
__N: SatCountNumber,
__S: BuildHasher,
Edge version of Self::sat_count()Source§fn pick_cube(
&self,
choice: impl for<'__id> FnMut(&<Self as Function>::Manager<'__id>, &<<Self as Function>::Manager<'__id> as Manager>::Edge, LevelNo) -> bool,
) -> Option<Vec<OptBool>>
fn pick_cube( &self, choice: impl for<'__id> FnMut(&<Self as Function>::Manager<'__id>, &<<Self as Function>::Manager<'__id> as Manager>::Edge, LevelNo) -> bool, ) -> Option<Vec<OptBool>>
Pick a cube of this function Read more
Source§fn pick_cube_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
edge: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
choice: impl FnMut(&<Self as Function>::Manager<'__id>, &<<Self as Function>::Manager<'__id> as Manager>::Edge, LevelNo) -> bool,
) -> Option<Vec<OptBool>>
fn pick_cube_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, edge: &<<Self as Function>::Manager<'__id> as Manager>::Edge, choice: impl FnMut(&<Self as Function>::Manager<'__id>, &<<Self as Function>::Manager<'__id> as Manager>::Edge, LevelNo) -> bool, ) -> Option<Vec<OptBool>>
Edge version of Self::pick_cube()Source§fn pick_cube_dd(
&self,
choice: impl for<'__id> FnMut(&<Self as Function>::Manager<'__id>, &<<Self as Function>::Manager<'__id> as Manager>::Edge, LevelNo) -> bool,
) -> AllocResult<Self>
fn pick_cube_dd( &self, choice: impl for<'__id> FnMut(&<Self as Function>::Manager<'__id>, &<<Self as Function>::Manager<'__id> as Manager>::Edge, LevelNo) -> bool, ) -> AllocResult<Self>
Pick a symbolic cube of this function, i.e., as decision diagram Read more
Source§fn pick_cube_dd_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
edge: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
choice: impl FnMut(&<Self as Function>::Manager<'__id>, &<<Self as Function>::Manager<'__id> as Manager>::Edge, LevelNo) -> bool,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn pick_cube_dd_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, edge: &<<Self as Function>::Manager<'__id> as Manager>::Edge, choice: impl FnMut(&<Self as Function>::Manager<'__id>, &<<Self as Function>::Manager<'__id> as Manager>::Edge, LevelNo) -> bool, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Edge version of Self::pick_cube_dd()Source§fn pick_cube_uniform<__S: BuildHasher>(
&self,
cache: &mut SatCountCache<F64, __S>,
rng: &mut Rng,
) -> Option<Vec<OptBool>>
fn pick_cube_uniform<__S: BuildHasher>( &self, cache: &mut SatCountCache<F64, __S>, rng: &mut Rng, ) -> Option<Vec<OptBool>>
Pick a random cube of this function, where each cube has the same
probability of being chosen Read more
Source§fn pick_cube_uniform_edge<'__id, __S: BuildHasher>(
manager: &<Self as Function>::Manager<'__id>,
edge: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
cache: &mut SatCountCache<F64, __S>,
rng: &mut Rng,
) -> Option<Vec<OptBool>>
fn pick_cube_uniform_edge<'__id, __S: BuildHasher>( manager: &<Self as Function>::Manager<'__id>, edge: &<<Self as Function>::Manager<'__id> as Manager>::Edge, cache: &mut SatCountCache<F64, __S>, rng: &mut Rng, ) -> Option<Vec<OptBool>>
Edge version of Self::pick_cube_uniform()Source§impl BooleanFunctionQuant for BDDFunction
impl BooleanFunctionQuant for BDDFunction
Source§fn restrict(&self, rhs: &Self) -> AllocResult<Self>
fn restrict(&self, rhs: &Self) -> AllocResult<Self>
Restrict a set of
vars to constant values Read moreSource§fn restrict_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn restrict_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Restrict a set of
vars to constant values, edge version Read moreSource§fn forall(&self, rhs: &Self) -> AllocResult<Self>
fn forall(&self, rhs: &Self) -> AllocResult<Self>
Compute the universal quantification over
vars Read moreSource§fn forall_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn forall_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Source§fn exists(&self, rhs: &Self) -> AllocResult<Self>
fn exists(&self, rhs: &Self) -> AllocResult<Self>
Compute the existential quantification over
vars Read moreSource§fn exists_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn exists_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Source§fn unique(&self, rhs: &Self) -> AllocResult<Self>
fn unique(&self, rhs: &Self) -> AllocResult<Self>
Compute the unique quantification over
vars Read moreSource§fn unique_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn unique_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Source§fn apply_forall(
&self,
op: BooleanOperator,
rhs: &Self,
vars: &Self,
) -> AllocResult<Self>
fn apply_forall( &self, op: BooleanOperator, rhs: &Self, vars: &Self, ) -> AllocResult<Self>
Combined application of
op and quantification ∀x. self <op> rhs,
where <op> is any of the operations from BooleanOperator Read moreSource§fn apply_forall_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
op: BooleanOperator,
lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
vars: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn apply_forall_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, op: BooleanOperator, lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, vars: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Combined application of
op and forall quantification, edge version Read moreSource§fn apply_exists(
&self,
op: BooleanOperator,
rhs: &Self,
vars: &Self,
) -> AllocResult<Self>
fn apply_exists( &self, op: BooleanOperator, rhs: &Self, vars: &Self, ) -> AllocResult<Self>
Combined application of
op and quantification ∃x. self <op> rhs,
where <op> is any of the operations from BooleanOperator Read moreSource§fn apply_exists_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
op: BooleanOperator,
lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
vars: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn apply_exists_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, op: BooleanOperator, lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, vars: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Combined application of
op and existential quantification, edge
version Read moreSource§fn apply_unique(
&self,
op: BooleanOperator,
rhs: &Self,
vars: &Self,
) -> AllocResult<Self>
fn apply_unique( &self, op: BooleanOperator, rhs: &Self, vars: &Self, ) -> AllocResult<Self>
Combined application of
op and quantification ∃!x. self <op> rhs,
where <op> is any of the operations from BooleanOperator Read moreSource§fn apply_unique_edge<'__id>(
manager: &<Self as Function>::Manager<'__id>,
op: BooleanOperator,
lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
vars: &<<Self as Function>::Manager<'__id> as Manager>::Edge,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn apply_unique_edge<'__id>( manager: &<Self as Function>::Manager<'__id>, op: BooleanOperator, lhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, rhs: &<<Self as Function>::Manager<'__id> as Manager>::Edge, vars: &<<Self as Function>::Manager<'__id> as Manager>::Edge, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Combined application of
op and unique quantification, edge version Read moreSource§fn exist(&self, vars: &Self) -> Result<Self, OutOfMemory>
fn exist(&self, vars: &Self) -> Result<Self, OutOfMemory>
👎Deprecated
Deprecated alias for
Self::exists()Source§fn apply_exist(
&self,
op: BooleanOperator,
rhs: &Self,
vars: &Self,
) -> Result<Self, OutOfMemory>
fn apply_exist( &self, op: BooleanOperator, rhs: &Self, vars: &Self, ) -> Result<Self, OutOfMemory>
👎Deprecated
Deprecated alias for
Self::apply_exists()Source§fn exist_edge<'id>(
manager: &Self::Manager<'id>,
root: &<Self::Manager<'id> as Manager>::Edge,
vars: &<Self::Manager<'id> as Manager>::Edge,
) -> Result<<Self::Manager<'id> as Manager>::Edge, OutOfMemory>
fn exist_edge<'id>( manager: &Self::Manager<'id>, root: &<Self::Manager<'id> as Manager>::Edge, vars: &<Self::Manager<'id> as Manager>::Edge, ) -> Result<<Self::Manager<'id> as Manager>::Edge, OutOfMemory>
👎Deprecated
Deprecated alias for
Self::exists_edge()Source§fn apply_exist_edge<'id>(
manager: &Self::Manager<'id>,
op: BooleanOperator,
lhs: &<Self::Manager<'id> as Manager>::Edge,
rhs: &<Self::Manager<'id> as Manager>::Edge,
vars: &<Self::Manager<'id> as Manager>::Edge,
) -> Result<<Self::Manager<'id> as Manager>::Edge, OutOfMemory>
fn apply_exist_edge<'id>( manager: &Self::Manager<'id>, op: BooleanOperator, lhs: &<Self::Manager<'id> as Manager>::Edge, rhs: &<Self::Manager<'id> as Manager>::Edge, vars: &<Self::Manager<'id> as Manager>::Edge, ) -> Result<<Self::Manager<'id> as Manager>::Edge, OutOfMemory>
👎Deprecated
Deprecated alias for
Self::apply_exists_edge()Source§impl Clone for BDDFunction
impl Clone for BDDFunction
Source§fn clone(&self) -> BDDFunction
fn clone(&self) -> BDDFunction
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl DotStyle<()> for BDDFunction
impl DotStyle<()> for BDDFunction
Source§impl Function for BDDFunction
impl Function for BDDFunction
Source§const REPR_ID: &'static str = <FunctionInner as ::oxidd_core::function::Function>::REPR_ID
const REPR_ID: &'static str = <FunctionInner as ::oxidd_core::function::Function>::REPR_ID
Representation identifier such as “BDD” or “MTBDD”
Source§type Manager<'__id> = <BDDFunctionMT<<IndexDD<NodeWithLevelCons<2>, (), StaticTerminalManagerCons<BDDTerminal>, BDDRulesCons, BDDManagerDataCons, 2> as DD>::Function> as Function>::Manager<'__id>
type Manager<'__id> = <BDDFunctionMT<<IndexDD<NodeWithLevelCons<2>, (), StaticTerminalManagerCons<BDDTerminal>, BDDRulesCons, BDDManagerDataCons, 2> as DD>::Function> as Function>::Manager<'__id>
Type of the associated manager Read more
Source§fn from_edge<'__id>(
manager: &Self::Manager<'__id>,
edge: <Self::Manager<'__id> as Manager>::Edge,
) -> Self
fn from_edge<'__id>( manager: &Self::Manager<'__id>, edge: <Self::Manager<'__id> as Manager>::Edge, ) -> Self
Create a new function from a manager reference and an edge
Source§fn as_edge<'__id>(
&self,
manager: &Self::Manager<'__id>,
) -> &<Self::Manager<'__id> as Manager>::Edge
fn as_edge<'__id>( &self, manager: &Self::Manager<'__id>, ) -> &<Self::Manager<'__id> as Manager>::Edge
Converts this function into the underlying edge (as reference), checking
that it belongs to the given
manager Read moreSource§fn into_edge<'__id>(
self,
manager: &Self::Manager<'__id>,
) -> <Self::Manager<'__id> as Manager>::Edge
fn into_edge<'__id>( self, manager: &Self::Manager<'__id>, ) -> <Self::Manager<'__id> as Manager>::Edge
Converts this function into the underlying edge, checking that it
belongs to the given
manager Read moreSource§fn manager_ref(&self) -> BDDManagerRef
fn manager_ref(&self) -> BDDManagerRef
Clone the
ManagerRef partObtain a shared manager reference as well as the underlying edge Read more
Source§fn with_manager_exclusive<__F, __T>(&self, f: __F) -> __T
fn with_manager_exclusive<__F, __T>(&self, f: __F) -> __T
Obtain an exclusive manager reference as well as the underlying edge Read more
Source§fn from_edge_ref<'id>(
manager: &Self::Manager<'id>,
edge: &<Self::Manager<'id> as Manager>::Edge,
) -> Self
fn from_edge_ref<'id>( manager: &Self::Manager<'id>, edge: &<Self::Manager<'id> as Manager>::Edge, ) -> Self
Create a new function from a manager reference and an edge reference
Source§fn node_count(&self) -> usize
fn node_count(&self) -> usize
Count the number of nodes in this function, including terminal nodes Read more
Source§impl FunctionSubst for BDDFunction
impl FunctionSubst for BDDFunction
Source§fn substitute<'__a>(
&'__a self,
substitution: impl Substitution<Replacement = &'__a Self>,
) -> AllocResult<Self>
fn substitute<'__a>( &'__a self, substitution: impl Substitution<Replacement = &'__a Self>, ) -> AllocResult<Self>
Source§fn substitute_edge<'__id, '__a>(
manager: &'__a <Self as Function>::Manager<'__id>,
edge: &'__a <<Self as Function>::Manager<'__id> as Manager>::Edge,
substitution: impl Substitution<Replacement = Borrowed<'__a, <<Self as Function>::Manager<'__id> as Manager>::Edge>>,
) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
fn substitute_edge<'__id, '__a>( manager: &'__a <Self as Function>::Manager<'__id>, edge: &'__a <<Self as Function>::Manager<'__id> as Manager>::Edge, substitution: impl Substitution<Replacement = Borrowed<'__a, <<Self as Function>::Manager<'__id> as Manager>::Edge>>, ) -> AllocResult<<<Self as Function>::Manager<'__id> as Manager>::Edge>
Edge version of Self::substitute()Source§impl Hash for BDDFunction
impl Hash for BDDFunction
Source§impl Ord for BDDFunction
impl Ord for BDDFunction
Source§fn cmp(&self, other: &BDDFunction) -> Ordering
fn cmp(&self, other: &BDDFunction) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl PartialEq for BDDFunction
impl PartialEq for BDDFunction
Source§impl PartialOrd for BDDFunction
impl PartialOrd for BDDFunction
impl Eq for BDDFunction
impl StructuralPartialEq for BDDFunction
Auto Trait Implementations§
impl Freeze for BDDFunction
impl !RefUnwindSafe for BDDFunction
impl Send for BDDFunction
impl Sync for BDDFunction
impl Unpin for BDDFunction
impl !UnwindSafe for BDDFunction
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more