Trait oxidd_core::function::PseudoBooleanFunction

source ·
pub trait PseudoBooleanFunction: Function {
    type Number: NumberBase;

Show 15 methods // Required methods fn new_var<'id>(manager: &mut Self::Manager<'id>) -> AllocResult<Self>; fn constant_edge<'id>( manager: &Self::Manager<'id>, value: Self::Number, ) -> AllocResult<EdgeOfFunc<'id, Self>>; fn add_edge<'id>( manager: &Self::Manager<'id>, lhs: &EdgeOfFunc<'id, Self>, rhs: &EdgeOfFunc<'id, Self>, ) -> AllocResult<EdgeOfFunc<'id, Self>>; fn sub_edge<'id>( manager: &Self::Manager<'id>, lhs: &EdgeOfFunc<'id, Self>, rhs: &EdgeOfFunc<'id, Self>, ) -> AllocResult<EdgeOfFunc<'id, Self>>; fn mul_edge<'id>( manager: &Self::Manager<'id>, lhs: &EdgeOfFunc<'id, Self>, rhs: &EdgeOfFunc<'id, Self>, ) -> AllocResult<EdgeOfFunc<'id, Self>>; fn div_edge<'id>( manager: &Self::Manager<'id>, lhs: &EdgeOfFunc<'id, Self>, rhs: &EdgeOfFunc<'id, Self>, ) -> AllocResult<EdgeOfFunc<'id, Self>>; fn min_edge<'id>( manager: &Self::Manager<'id>, lhs: &EdgeOfFunc<'id, Self>, rhs: &EdgeOfFunc<'id, Self>, ) -> AllocResult<EdgeOfFunc<'id, Self>>; fn max_edge<'id>( manager: &Self::Manager<'id>, lhs: &EdgeOfFunc<'id, Self>, rhs: &EdgeOfFunc<'id, Self>, ) -> AllocResult<EdgeOfFunc<'id, Self>>; // Provided methods fn constant<'id>( manager: &Self::Manager<'id>, value: Self::Number, ) -> AllocResult<Self> { ... } fn add(&self, rhs: &Self) -> AllocResult<Self> { ... } fn sub(&self, rhs: &Self) -> AllocResult<Self> { ... } fn mul(&self, rhs: &Self) -> AllocResult<Self> { ... } fn div(&self, rhs: &Self) -> AllocResult<Self> { ... } fn min(&self, rhs: &Self) -> AllocResult<Self> { ... } fn max(&self, rhs: &Self) -> AllocResult<Self> { ... }
}
Expand description

Pseudo-Boolean function 𝔹ⁿ → ℝ

Required Associated Types§

source

type Number: NumberBase

The number type used for the functions’ target set.

Required Methods§

source

fn new_var<'id>(manager: &mut Self::Manager<'id>) -> AllocResult<Self>

Get a fresh variable, i.e. a function that is 1 if the variable is true and 0 otherwise. This adds a new level to a decision diagram.

source

fn constant_edge<'id>( manager: &Self::Manager<'id>, value: Self::Number, ) -> AllocResult<EdgeOfFunc<'id, Self>>

Get the constant value, edge version

source

fn add_edge<'id>( manager: &Self::Manager<'id>, lhs: &EdgeOfFunc<'id, Self>, rhs: &EdgeOfFunc<'id, Self>, ) -> AllocResult<EdgeOfFunc<'id, Self>>

Point-wise addition self + rhs, edge version

source

fn sub_edge<'id>( manager: &Self::Manager<'id>, lhs: &EdgeOfFunc<'id, Self>, rhs: &EdgeOfFunc<'id, Self>, ) -> AllocResult<EdgeOfFunc<'id, Self>>

Point-wise subtraction self - rhs, edge version

source

fn mul_edge<'id>( manager: &Self::Manager<'id>, lhs: &EdgeOfFunc<'id, Self>, rhs: &EdgeOfFunc<'id, Self>, ) -> AllocResult<EdgeOfFunc<'id, Self>>

Point-wise multiplication self * rhs, edge version

source

fn div_edge<'id>( manager: &Self::Manager<'id>, lhs: &EdgeOfFunc<'id, Self>, rhs: &EdgeOfFunc<'id, Self>, ) -> AllocResult<EdgeOfFunc<'id, Self>>

Point-wise division self / rhs, edge version

source

fn min_edge<'id>( manager: &Self::Manager<'id>, lhs: &EdgeOfFunc<'id, Self>, rhs: &EdgeOfFunc<'id, Self>, ) -> AllocResult<EdgeOfFunc<'id, Self>>

Point-wise minimum min(self, rhs), edge version

source

fn max_edge<'id>( manager: &Self::Manager<'id>, lhs: &EdgeOfFunc<'id, Self>, rhs: &EdgeOfFunc<'id, Self>, ) -> AllocResult<EdgeOfFunc<'id, Self>>

Point-wise maximum max(self, rhs), edge version

Provided Methods§

source

fn constant<'id>( manager: &Self::Manager<'id>, value: Self::Number, ) -> AllocResult<Self>

Get the constant value

source

fn add(&self, rhs: &Self) -> AllocResult<Self>

Point-wise addition self + rhs

Locking behavior: acquires a shared manager lock

Panics if self and rhs do not belong to the same manager.

source

fn sub(&self, rhs: &Self) -> AllocResult<Self>

Point-wise subtraction self - rhs

Locking behavior: acquires a shared manager lock

Panics if self and rhs do not belong to the same manager.

source

fn mul(&self, rhs: &Self) -> AllocResult<Self>

Point-wise multiplication self * rhs

Locking behavior: acquires a shared manager lock

Panics if self and rhs do not belong to the same manager.

source

fn div(&self, rhs: &Self) -> AllocResult<Self>

Point-wise division self / rhs

Locking behavior: acquires a shared manager lock

Panics if self and rhs do not belong to the same manager.

source

fn min(&self, rhs: &Self) -> AllocResult<Self>

Point-wise minimum min(self, rhs)

Locking behavior: acquires a shared manager lock

Panics if self and rhs do not belong to the same manager.

source

fn max(&self, rhs: &Self) -> AllocResult<Self>

Point-wise maximum max(self, rhs)

Locking behavior: acquires a shared manager lock

Panics if self and rhs do not belong to the same manager.

Object Safety§

This trait is not object safe.

Implementors§