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§
Sourcefn generators(&self, degree: i32) -> Vec<usize>
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.
Sourcefn decompose_basis_element(
&self,
degree: i32,
idx: usize,
) -> Vec<(u32, (i32, usize), (i32, usize))>
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.
Sourcefn generating_relations(
&self,
degree: i32,
) -> Vec<Vec<(u32, (i32, usize), (i32, usize))>>
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§
Sourcefn generator_to_string(&self, degree: i32, idx: usize) -> String
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.