pub struct FiniteDimensionalModule<A: Algebra> {
algebra: Arc<A>,
pub name: String,
graded_dimension: BiVec<usize>,
gen_names: BiVec<Vec<String>>,
actions: BiVec<BiVec<Vec<Vec<FpVector>>>>,
}Fields§
§algebra: Arc<A>§name: String§graded_dimension: BiVec<usize>§gen_names: BiVec<Vec<String>>§actions: BiVec<BiVec<Vec<Vec<FpVector>>>>Implementations§
Source§impl<A: Algebra> FiniteDimensionalModule<A>
impl<A: Algebra> FiniteDimensionalModule<A>
pub fn test_equal(&self, other: &Self) -> Result<(), String>
Source§impl<A: Algebra> FiniteDimensionalModule<A>
impl<A: Algebra> FiniteDimensionalModule<A>
pub fn new( algebra: Arc<A>, name: String, graded_dimension: BiVec<usize>, ) -> Self
pub fn set_basis_element_name(&mut self, degree: i32, idx: usize, name: String)
fn allocate_actions( algebra: &Arc<A>, graded_dimension: &BiVec<usize>, ) -> BiVec<BiVec<Vec<Vec<FpVector>>>>
pub fn add_generator(&mut self, degree: i32, name: String)
pub fn string_to_basis_element(&self, string: &str) -> Option<(i32, usize)>
pub fn set_action( &mut self, operation_degree: i32, operation_idx: usize, input_degree: i32, input_idx: usize, output: &[u32], )
Source§impl<A: GeneratedAlgebra> FiniteDimensionalModule<A>
impl<A: GeneratedAlgebra> FiniteDimensionalModule<A>
pub fn from_json(algebra: Arc<A>, json: &Value) -> Result<Self>
pub fn to_json(&self, json: &mut Value)
pub fn parse_action( &mut self, gen_to_idx: impl for<'a> Fn(&'a str) -> Result<(i32, usize)>, entry: &str, overwrite: bool, ) -> Result<()>
pub fn check_validity( &self, input_deg: i32, output_deg: i32, ) -> Result<(), ModuleFailedRelationError>
pub fn extend_actions(&mut self, input_deg: i32, output_deg: i32)
fn actions_to_json(&self) -> Value
Trait Implementations§
Source§impl<A: Algebra> Clone for FiniteDimensionalModule<A>
impl<A: Algebra> Clone for FiniteDimensionalModule<A>
Source§impl<A: Algebra> Display for FiniteDimensionalModule<A>
impl<A: Algebra> Display for FiniteDimensionalModule<A>
Source§impl<A: Algebra> Module for FiniteDimensionalModule<A>
impl<A: Algebra> Module for FiniteDimensionalModule<A>
type Algebra = A
Source§fn min_degree(&self) -> i32
fn min_degree(&self) -> i32
The minimum degree of the module, which is required to be bounded below
Source§fn max_computed_degree(&self) -> i32
fn max_computed_degree(&self) -> i32
The maximum
t for which the module is fully defined at t. See Module documentation
for more details.Source§fn compute_basis(&self, _degree: i32)
fn compute_basis(&self, _degree: i32)
Compute internal data of the module so that we can query information up to degree
degree.
This should be run by the user whenever they want to query such information. Read moreSource§fn basis_element_to_string(&self, degree: i32, idx: usize) -> String
fn basis_element_to_string(&self, degree: i32, idx: usize) -> String
The name of a basis element. This is useful for debugging and printing results.
fn act_on_basis( &self, result: FpSliceMut<'_>, coeff: u32, op_degree: i32, op_index: usize, mod_degree: i32, mod_index: usize, )
Source§fn max_degree(&self) -> Option<i32>
fn max_degree(&self) -> Option<i32>
max_degree is the a degree such that if t > max_degree, then self.dimension(t) = 0.Source§fn prime(&self) -> ValidPrime
fn prime(&self) -> ValidPrime
The prime the module is over, which should be equal to the prime of the algebra.
Source§fn max_generator_degree(&self) -> Option<i32>
fn max_generator_degree(&self) -> Option<i32>
Maximum degree of a generator under the Steenrod action. Every element in higher degree
must be obtainable from applying a Steenrod action to a lower degree element.
fn total_dimension(&self) -> usize
Source§fn act(
&self,
result: FpSliceMut<'_>,
coeff: u32,
op_degree: i32,
op_index: usize,
input_degree: i32,
input: FpSlice<'_>,
)
fn act( &self, result: FpSliceMut<'_>, coeff: u32, op_degree: i32, op_index: usize, input_degree: i32, input: FpSlice<'_>, )
The length of
input need not be equal to the dimension of the module in said degree.
Missing entries are interpreted to be 0, while extra entries must be zero. Read morefn act_by_element( &self, result: FpSliceMut<'_>, coeff: u32, op_degree: i32, op: FpSlice<'_>, input_degree: i32, input: FpSlice<'_>, )
fn act_by_element_on_basis( &self, result: FpSliceMut<'_>, coeff: u32, op_degree: i32, op: FpSlice<'_>, input_degree: i32, input_index: usize, )
Source§fn element_to_string(&self, degree: i32, element: FpSlice<'_>) -> String
fn element_to_string(&self, degree: i32, element: FpSlice<'_>) -> String
Gives the name of an element. The default implementation is derived from
Module::basis_element_to_string in the obvious way.Source§impl<A: Algebra> PartialEq for FiniteDimensionalModule<A>
impl<A: Algebra> PartialEq for FiniteDimensionalModule<A>
Source§impl<A: Algebra> ZeroModule for FiniteDimensionalModule<A>
impl<A: Algebra> ZeroModule for FiniteDimensionalModule<A>
fn zero_module(algebra: Arc<A>, min_degree: i32) -> Self
impl<A: Algebra> Eq for FiniteDimensionalModule<A>
Auto Trait Implementations§
impl<A> Freeze for FiniteDimensionalModule<A>
impl<A> RefUnwindSafe for FiniteDimensionalModule<A>where
A: RefUnwindSafe,
impl<A> Send for FiniteDimensionalModule<A>
impl<A> Sync for FiniteDimensionalModule<A>
impl<A> Unpin for FiniteDimensionalModule<A>
impl<A> UnwindSafe for FiniteDimensionalModule<A>where
A: RefUnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more