Skip to main content

CollapsedDual

Struct CollapsedDual 

Source
pub struct CollapsedDual {
    pub types: Vec<Structure>,
    pub rows: BTreeSet<u64>,
}
Expand description

The collapsed dual system at one scale: columns = canonical orbit types of the degree-≤ d basis, rows = the distinct type-vectors of the admitted NS generators m·g, taken over one multiplier per orbit × every generator (complete by the invariance lemma: the row of σ(m)·g equals the row of m·σ⁻¹(g), and the group permutes the generator set). An invariant functional L (one bit per type, L(∅-type) = 1) is a valid degree-d pseudo-expectation iff it annihilates every row.

Fields§

§types: Vec<Structure>

Canonical types, the empty monomial’s type first; the column order of rows.

§rows: BTreeSet<u64>

Distinct constraint rows, each a bitmask over types (types ≤ 64 at the degrees this runs).

Implementations§

Source§

impl CollapsedDual

Source

pub fn solve(&self) -> Option<u64>

Does an invariant degree-d pseudo-expectation exist — is the system L ⊥ rows, L(∅) = 1 solvable? Returns the type-bitmask of a solution.

Source

pub fn lift( &self, inst: &SymmetricInstance, degree: usize, solution: u64, ) -> Vec<Mono>

Lift a type-solution back to the full monomial witness at a concrete scale.

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