[−][src]Struct biodivine_lib_bdd::BddNode
(internal) Representation of individual vertices of the Bdd directed acyclic graph.
A BddNode can be a terminal, in which case it is either 0 or 1, or a decision node,
in which case it contains a variable $v_i$ which it conditions upon and two pointers
(low and high) to other nodes in the same Bdd:
graph LR
id1($v_i$)
id2($v_j$)
id3($v_k$)
id1 -->|low| id2
id1 -->|high| id3
Internally, we represent terminal nodes using the same structure, giving them cyclic
pointers. Instead of variable id, we use the number of variables in the original
BddVariableSet. This is consistent with the fact that we first condition on smallest
variable ids. It can be also used for consistency checks inside the library.
Fields
var: BddVariablelow_link: BddPointerhigh_link: BddPointerImplementations
impl BddNode[src]
pub fn mk_zero(num_vars: u16) -> BddNode[src]
Make a new terminal zero node.
pub fn mk_one(num_vars: u16) -> BddNode[src]
Make a new terminal one node.
pub fn mk_node(
var: BddVariable,
low_link: BddPointer,
high_link: BddPointer
) -> BddNode[src]
var: BddVariable,
low_link: BddPointer,
high_link: BddPointer
) -> BddNode
Make a new general node.
Assumptions:
lowandhighare pointers in the sameBddarray.- Returned node will be added to the same
Bddwherelowandhighare pointers.
Trait Implementations
impl Clone for BddNode[src]
impl Copy for BddNode[src]
impl Debug for BddNode[src]
impl Eq for BddNode[src]
impl Hash for BddNode[src]
pub fn hash<__H: Hasher>(&self, state: &mut __H)[src]
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher, 1.3.0[src]
H: Hasher,
impl PartialEq<BddNode> for BddNode[src]
impl StructuralEq for BddNode[src]
impl StructuralPartialEq for BddNode[src]
Auto Trait Implementations
impl RefUnwindSafe for BddNode
impl Send for BddNode
impl Sync for BddNode
impl Unpin for BddNode
impl UnwindSafe for BddNode
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone, [src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub fn clone_into(&self, target: &mut T)[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,