pub struct StructureCover {
pub num_vars: usize,
pub monomials_by_degree: Vec<usize>,
pub total_monomials: usize,
pub residue_degree: usize,
pub residue_monomials: usize,
pub description_bits: usize,
pub raw_bits: usize,
pub compressed: bool,
}Expand description
A cover of the cube by structural class: the ANF degree stratification of a Boolean function. Every
function is a XOR of monomials ∏_{i∈S} xᵢ, and each monomial is a structural class — its degree |S|
is the order of variable interaction it encodes. Peeling low-degree slices (constant, linear,
quadratic, …) covers most of the 2ⁿ corners with a handful of terms; what remains is the residue: the
high-degree core no lower-order slice explains. This is why the peel is more efficient than walking the
cube corner by corner — each class-slice accounts for many corners at once, and you reason about the
small residue directly instead of labeling all 2ⁿ of them.
Fields§
§num_vars: usize§monomials_by_degree: Vec<usize>monomials_by_degree[d] = ANF monomials of degree exactly d — the size of the degree-d slice.
total_monomials: usizeThe total ANF monomials across all slices — the whole description in monomials.
residue_degree: usizeThe highest degree present: the residue’s interaction order (0 if the function is a constant).
residue_monomials: usizeThe number of monomials at the residue degree — the irreducible high-degree core.
description_bits: usizeBits to store the ANF as monomial indices (total · n), against 2ⁿ raw.
raw_bits: usize§compressed: boolWhether the peel is a genuine compression — a sparse ANF beats storing the truth table.
Trait Implementations§
Source§impl Clone for StructureCover
impl Clone for StructureCover
Source§fn clone(&self) -> StructureCover
fn clone(&self) -> StructureCover
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more