Trait 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.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§