Trait SddBuilder

Source
pub trait SddBuilder<'a>: BottomUpBuilder<'a, SddPtr<'a>> {
Show 28 methods // Required methods fn vtree_manager(&self) -> &VTreeManager; fn app_cache_get(&self, and: &SddAnd<'a>) -> Option<SddPtr<'a>>; fn app_cache_insert(&self, and: SddAnd<'a>, ptr: SddPtr<'a>); fn ite_cache_hash(&self, ite: &Ite<SddPtr<'_>>) -> u64; fn ite_cache_get( &self, ite: Ite<SddPtr<'a>>, hash: u64, ) -> Option<SddPtr<'_>>; fn ite_cache_insert(&self, ite: Ite<SddPtr<'a>>, res: SddPtr<'a>, hash: u64); fn get_or_insert_bdd(&'a self, bdd: BinarySDD<'a>) -> SddPtr<'a>; fn get_or_insert_sdd(&'a self, or: SddOr<'a>) -> SddPtr<'a>; fn node_iter(&self) -> Vec<SddPtr<'_>>; fn sdd_eq(&'a self, a: SddPtr<'a>, b: SddPtr<'a>) -> bool; fn set_compression(&mut self, b: bool); fn compress(&'a self, node: &mut Vec<SddAnd<'a>>); fn canonicalize( &'a self, node: Vec<SddAnd<'a>>, table: VTreeIndex, ) -> SddPtr<'a>; fn stats(&self) -> SddBuilderStats; fn log_recursive_call(&self); // Provided methods fn is_true(&'a self, a: SddPtr<'a>) -> bool { ... } fn is_false(&'a self, a: SddPtr<'a>) -> bool { ... } fn unique_or( &'a self, node: Vec<SddAnd<'a>>, table: VTreeIndex, ) -> SddPtr<'a> { ... } fn unique_bdd(&'a self, bdd: BinarySDD<'a>) -> SddPtr<'a> { ... } fn and_indep( &'a self, a: SddPtr<'a>, b: SddPtr<'a>, lca: VTreeIndex, ) -> SddPtr<'a> { ... } fn and_sub_desc(&'a self, r: SddPtr<'a>, d: SddPtr<'a>) -> SddPtr<'a> { ... } fn and_prime_desc(&'a self, r: SddPtr<'a>, d: SddPtr<'a>) -> SddPtr<'a> { ... } fn and_cartesian( &'a self, a: SddPtr<'a>, b: SddPtr<'a>, lca: VTreeIndex, ) -> SddPtr<'a> { ... } fn num_vars(&self) -> usize { ... } fn vtree(&self, ptr: SddPtr<'_>) -> &VTree { ... } fn vtree_index(&self, ptr: SddPtr<'_>) -> VTreeIndex { ... } fn compile_cnf_helper(&'a self, vec: &[SddPtr<'a>]) -> Option<SddPtr<'a>> { ... } fn print_sdd(&'a self, ptr: SddPtr<'a>) -> String { ... }
}

Required Methods§

Source

fn vtree_manager(&self) -> &VTreeManager

Source

fn app_cache_get(&self, and: &SddAnd<'a>) -> Option<SddPtr<'a>>

Source

fn app_cache_insert(&self, and: SddAnd<'a>, ptr: SddPtr<'a>)

Source

fn ite_cache_hash(&self, ite: &Ite<SddPtr<'_>>) -> u64

Source

fn ite_cache_get(&self, ite: Ite<SddPtr<'a>>, hash: u64) -> Option<SddPtr<'_>>

Source

fn ite_cache_insert(&self, ite: Ite<SddPtr<'a>>, res: SddPtr<'a>, hash: u64)

Source

fn get_or_insert_bdd(&'a self, bdd: BinarySDD<'a>) -> SddPtr<'a>

Source

fn get_or_insert_sdd(&'a self, or: SddOr<'a>) -> SddPtr<'a>

Source

fn node_iter(&self) -> Vec<SddPtr<'_>>

Source

fn sdd_eq(&'a self, a: SddPtr<'a>, b: SddPtr<'a>) -> bool

Source

fn set_compression(&mut self, b: bool)

Source

fn compress(&'a self, node: &mut Vec<SddAnd<'a>>)

Source

fn canonicalize( &'a self, node: Vec<SddAnd<'a>>, table: VTreeIndex, ) -> SddPtr<'a>

Source

fn stats(&self) -> SddBuilderStats

Source

fn log_recursive_call(&self)

Provided Methods§

Source

fn is_true(&'a self, a: SddPtr<'a>) -> bool

Source

fn is_false(&'a self, a: SddPtr<'a>) -> bool

Source

fn unique_or(&'a self, node: Vec<SddAnd<'a>>, table: VTreeIndex) -> SddPtr<'a>

Source

fn unique_bdd(&'a self, bdd: BinarySDD<'a>) -> SddPtr<'a>

Source

fn and_indep( &'a self, a: SddPtr<'a>, b: SddPtr<'a>, lca: VTreeIndex, ) -> SddPtr<'a>

conjoin two SDDs that are in independent vtrees a is prime to b

Source

fn and_sub_desc(&'a self, r: SddPtr<'a>, d: SddPtr<'a>) -> SddPtr<'a>

conjoin SDDs where d is a descendent of r, and d is sub to r i.e. for vtree 3 1 5 0 2 4 6 r might be wrt. node 3, and d wrt. node 5

Source

fn and_prime_desc(&'a self, r: SddPtr<'a>, d: SddPtr<'a>) -> SddPtr<'a>

conjoin SDDs where d is a descendent of r, and r is sub to d i.e. for vtree 3 1 5 0 2 4 6 r might be wrt. node 3, and d wrt. node 1

Source

fn and_cartesian( &'a self, a: SddPtr<'a>, b: SddPtr<'a>, lca: VTreeIndex, ) -> SddPtr<'a>

conjoin SDDs where a and b are wrt. the same vtree node

Source

fn num_vars(&self) -> usize

Source

fn vtree(&self, ptr: SddPtr<'_>) -> &VTree

Source

fn vtree_index(&self, ptr: SddPtr<'_>) -> VTreeIndex

Source

fn compile_cnf_helper(&'a self, vec: &[SddPtr<'a>]) -> Option<SddPtr<'a>>

Source

fn print_sdd(&'a self, ptr: SddPtr<'a>) -> String

Implementors§

Source§

impl<'a> SddBuilder<'a> for CompressionSddBuilder<'a>

Source§

impl<'a, const P: u128> SddBuilder<'a> for SemanticSddBuilder<'a, P>