SmallTruthTable

Struct SmallTruthTable 

Source
pub struct SmallTruthTable { /* private fields */ }
Expand description

Small truth table with up to 6 input variables. The truth table is stored in a u64.

Implementations§

Source§

impl SmallTruthTable

Source

pub fn new<const NUM_INPUTS: usize>( f: impl Fn([bool; NUM_INPUTS]) -> bool, ) -> Self

Construct a truth table from a boolean function. The function can have at most 6 inputs.

Source

pub fn zero(num_inputs: usize) -> Self

Create a truth-table with all output bits set to zero.

Source

pub const fn from_table(table: u64, num_inputs: usize) -> Self

Create a new truth-table from the bits encoded in an u64.

Source

pub fn from_boolean_function<F: BooleanFunction>(f: &F) -> Self

Create a small truth table with up to 6 inputs from a generic boolean function.

§Panics

Panics if the boolean function has more than 6 inputs.

Trait Implementations§

Source§

impl BooleanFunction for SmallTruthTable

Source§

fn eval(&self, input_values: &[bool]) -> bool

Evaluate the boolean function with the given input values.
Source§

impl BooleanSystem for SmallTruthTable

Source§

fn evaluate_term(&self, _term: &(), input_values: &[bool]) -> bool

Compute the value of the term. The values of all needed literals must be defined by the input_values function.
Source§

impl Clone for SmallTruthTable

Source§

fn clone(&self) -> SmallTruthTable

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SmallTruthTable

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<const STATIC_NUM_INPUTS: usize> From<SmallStaticTruthTable<STATIC_NUM_INPUTS>> for SmallTruthTable

Source§

fn from(tt: SmallStaticTruthTable<STATIC_NUM_INPUTS>) -> Self

Convert a static number of inputs into a dynamic number of inputs.

Source§

impl Hash for SmallTruthTable

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl NumInputs for SmallTruthTable

Source§

fn num_inputs(&self) -> usize

Get the number of inputs of the boolean function.
Source§

impl NumOutputs for SmallTruthTable

Source§

fn num_outputs(&self) -> usize

Get the number of outputs of the boolean function.
Source§

impl Ord for SmallTruthTable

Source§

fn cmp(&self, other: &SmallTruthTable) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialBooleanFunction for SmallTruthTable

Source§

fn partial_eval(&self, input_values: &[bool]) -> Option<bool>

Evaluate the boolean function with the given input values.
Source§

impl PartialBooleanSystem for SmallTruthTable

Source§

type LiteralId = u32

An identifier for an input of the boolean formula.
Source§

type TermId = ()

An identifier of an intermediate value or output.
Source§

fn evaluate_term_partial( &self, term: &(), input_values: &[bool], ) -> Option<bool>

Compute the value of the term. The values of all needed literals must be defined by the input_values function. Returns None if the value is not specified for the given inputs.
Source§

impl PartialEq for SmallTruthTable

Source§

fn eq(&self, other: &SmallTruthTable) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for SmallTruthTable

Source§

fn partial_cmp(&self, other: &SmallTruthTable) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl PartialTruthTable for SmallTruthTable

Source§

fn partial_evaluate(&self, input_bits: u64) -> Option<bool>

Evaluate the boolean function with the given input bits encoded in an integer. The first bit is in the least significant bit. Returns None if the output is not specified for the given input.
Source§

impl SmallTT for SmallTruthTable

Source§

fn table(&self) -> u64

Get the the lookup-table encoded as a u64.
Source§

fn set_table(self, table: u64) -> Self

Set the output bits.
Source§

fn invert_if(self, condition: bool) -> Self

Invert the output bit iff the condition is true.
Source§

fn invert(self) -> Self

Invert the output bit.
Source§

fn bitwise_and(self, other: Self) -> Self

Compute the bitwise AND operation of the output bits.
Source§

fn swap_inputs(self, i: usize, j: usize) -> Self

Swap two inputs and permute the table accordingly.
Source§

fn invert_input(self, i: usize) -> Self

Create a new truth-table with the i-th input inverted.
Source§

fn count_ones(&self) -> usize

Return the number of true-values in the table.
Source§

impl TruthTable for SmallTruthTable

Source§

fn get_bit(&self, bits: u64) -> bool

Get a truth-table bit. Evaluate the boolean function with the given input bits encoded in an integer. The first bit is in the least significant bit.
Source§

fn size(&self) -> usize

Get the number of entries in this table.
Source§

impl TruthTableEdit for SmallTruthTable

Source§

fn set_bit(&mut self, bit_index: usize, value: bool)

Set the value of an output bit in the truth-table.
Source§

impl<const NUM_INPUTS: usize> TryFrom<SmallTruthTable> for SmallStaticTruthTable<NUM_INPUTS>

Source§

fn try_from(tt: SmallTruthTable) -> Result<Self, Self::Error>

Convert to a truth-table with static number of inputs. Returns an Err if the dynamic number of inputs does not match.

Source§

type Error = ()

The type returned in the event of a conversion error.
Source§

impl Copy for SmallTruthTable

Source§

impl Eq for SmallTruthTable

Source§

impl StaticNumOutputs<1> for SmallTruthTable

Source§

impl StructuralPartialEq for SmallTruthTable

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> IdType for T
where T: Copy + Clone + PartialEq + Eq + Hash + PartialOrd + Ord + Send + Sync + 'static,