GeneratedAlgebra

Trait GeneratedAlgebra 

Source
pub trait GeneratedAlgebra: Algebra {
    // Required methods
    fn generators(&self, degree: i32) -> Vec<usize>;
    fn decompose_basis_element(
        &self,
        degree: i32,
        idx: usize,
    ) -> Vec<(u32, (i32, usize), (i32, usize))>;
    fn generating_relations(
        &self,
        degree: i32,
    ) -> Vec<Vec<(u32, (i32, usize), (i32, usize))>>;

    // Provided method
    fn generator_to_string(&self, degree: i32, idx: usize) -> String { ... }
}
Expand description

An Algebra equipped with a distinguished presentation.

These data can be used to specify finite modules as the actions of the distinguished generators.

Required Methods§

Source

fn generators(&self, degree: i32) -> Vec<usize>

Return generators in degree.

Generators are specified as basis element indices in that degree. The order of the list is not important.

This method need not be fast, because they will only be performed when constructing the module, and will often only involve low dimensional elements.

Source

fn decompose_basis_element( &self, degree: i32, idx: usize, ) -> Vec<(u32, (i32, usize), (i32, usize))>

Decomposes an element into generators.

Given a basis element $A$, this function returns a list of triples $(c_i, A_i, B_i)$, such that

$$ A = \sum_i c_i A_i B_i,$$

where either ($A_i$ and $B_i$ are basis elements of strictly smaller degree than $A$), or (one of them is a generator and the other is the identity).

Combined with actions for generators, this allows us to recursively compute the action of an element on a module.

This method need not be fast, because they will only be performed when constructing the module, and will often only involve low dimensional elements.

It is invalid to supply an element that is a generator.

Source

fn generating_relations( &self, degree: i32, ) -> Vec<Vec<(u32, (i32, usize), (i32, usize))>>

Returns relations that the algebra wants checked to ensure the consistency of module.

Relations are encoded as general multi-degree elements which are killed in the quotient: $$ \sum_i c_i \alpha_i \beta_i = 0. $$ where $c_i$ are coefficients and $\alpha_i$ and $\beta_i$ are basis elements of arbitrary degree.

Provided Methods§

Source

fn generator_to_string(&self, degree: i32, idx: usize) -> String

Returns the name of a generator.

Note: idx is the index within degree’s basis, not the list returned by GeneratedAlgebra::generators().

By default, this function will forward to Algebra::basis_element_to_string(), but may be overridden if more concise names are available.

Implementors§