Skip to main content

StructureTree

Enum StructureTree 

Source
pub enum StructureTree {
    Coordinate {
        class: CubeStructure,
        num_vars: usize,
        bits: usize,
    },
    Permutation {
        sym: VariableSymmetry,
        num_vars: usize,
    },
    Residue {
        truth: Vec<bool>,
    },
    Separable {
        num_vars: usize,
        constant: bool,
        blocks: Vec<(Vec<usize>, StructureTree)>,
    },
    LinearReduced {
        num_vars: usize,
        invariance_basis: Vec<usize>,
        free_positions: Vec<usize>,
        inner: Box<StructureTree>,
    },
    AffineReduced {
        num_vars: usize,
        linear_form: usize,
        invariance_basis: Vec<usize>,
        free_positions: Vec<usize>,
        inner: Box<StructureTree>,
    },
}
Expand description

A recursive structural decomposition of a Boolean function: the fixed point of the deep finder.

Variants§

§

Coordinate

A coordinate-lens leaf (constant/junta/affine/symmetric/low-degree), reconstructable from class.

Fields

§num_vars: usize
§bits: usize
§

Permutation

A permutation-symmetry leaf: the orbit painting reconstructs it.

Fields

§num_vars: usize
§

Residue

The incompressible residue — stored raw (no axis compressed it).

Fields

§truth: Vec<bool>
§

Separable

Split into independent blocks, each recursively decomposed.

Fields

§num_vars: usize
§constant: bool
§

LinearReduced

Reduced by an invariance subspace; inner is the decomposition of the smaller function.

Fields

§num_vars: usize
§invariance_basis: Vec<usize>
§free_positions: Vec<usize>
§

AffineReduced

Peeled a linear form ⟨c,x⟩, then reduced; inner decomposes the residual h.

Fields

§num_vars: usize
§linear_form: usize
§invariance_basis: Vec<usize>
§free_positions: Vec<usize>

Implementations§

Source§

impl StructureTree

Source

pub fn depth(&self) -> usize

The nesting depth of the decomposition (0 for a leaf).

Source

pub fn total_description_bits(&self) -> usize

The total description size in bits: the sum over the leaves, with a small charge per structural node.

Source

pub fn reconstruct(&self) -> Option<Vec<bool>>

Rebuild the full 2ⁿ truth table by composing the recursive descriptions — the whole-tree witness.

Trait Implementations§

Source§

impl Clone for StructureTree

Source§

fn clone(&self) -> StructureTree

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for StructureTree

Source§

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

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

impl PartialEq for StructureTree

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 Eq for StructureTree

Source§

impl StructuralPartialEq for StructureTree

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