Trait qsym2::group::class::ClassProperties

source ·
pub trait ClassProperties: GroupProperties
where Self::ClassSymbol: CollectionSymbol<CollectionElement = Self::GroupElement>, <Self as GroupProperties>::GroupElement: Inv<Output = <Self as GroupProperties>::GroupElement>,
{ type ClassSymbol; // Required methods fn compute_class_structure(&mut self) -> Result<(), Error>; fn get_cc_index(&self, cc_idx: usize) -> Option<&HashSet<usize>>; fn get_cc_of_element_index(&self, e_idx: usize) -> Option<usize>; fn get_cc_transversal(&self, cc_idx: usize) -> Option<Self::GroupElement>; fn get_index_of_cc_symbol( &self, cc_sym: &Self::ClassSymbol, ) -> Option<usize>; fn get_cc_symbol_of_index(&self, cc_idx: usize) -> Option<Self::ClassSymbol>; fn filter_cc_symbols<P: FnMut(&Self::ClassSymbol) -> bool>( &self, predicate: P, ) -> Vec<Self::ClassSymbol>; fn set_class_symbols(&mut self, cc_symbols: &[Self::ClassSymbol]); fn get_inverse_cc(&self, cc_idx: usize) -> Option<usize>; fn class_number(&self) -> usize; fn class_size(&self, cc_idx: usize) -> Option<usize>; // Provided method fn class_matrix( &self, ctb_opt: Option<&Array2<usize>>, r: usize, ) -> Array2<usize> { ... } }
Expand description

Trait for conjugacy class properties of a finite group.

Required Associated Types§

source

type ClassSymbol

The type of class symbols.

Required Methods§

source

fn compute_class_structure(&mut self) -> Result<(), Error>

Computes the class structure of the group and store the result.

source

fn get_cc_index(&self, cc_idx: usize) -> Option<&HashSet<usize>>

Given a class index, returns an optional shared reference to the set containing the indices of all elements in that class.

§Arguments
  • cc_idx - A class index.
§Returns

Returns a shared reference to the set containing the indices of all elements in that class, or None if cc_idx is not a valid class index of the group.

source

fn get_cc_of_element_index(&self, e_idx: usize) -> Option<usize>

Given an element index, returns an optional index of the conjugacy class to which the element belongs.

§Arguments
  • e_idx - An element index.
§Returns

Returns an index of the conjugacy class to which the element belongs, or None if either the element does not have a conjugacy class, or the index is out of range.

source

fn get_cc_transversal(&self, cc_idx: usize) -> Option<Self::GroupElement>

Given a class index, returns an optional representative element of that conjugacy class.

§Arguments
  • cc_idx - A class index.
§Returns

Returns a representative element of the class, or None if the class index is out of range.

source

fn get_index_of_cc_symbol(&self, cc_sym: &Self::ClassSymbol) -> Option<usize>

Given a conjugacy class symbol, returns the index of the corresponding conjugacy class.

§Arguments
  • cc_sym - A conjugacy class symbol.
§Returns

Returns an index corresponding to the conjugacy class of cc_sym, or None if cc_sym does not exist in the group.

source

fn get_cc_symbol_of_index(&self, cc_idx: usize) -> Option<Self::ClassSymbol>

Given a class index, returns its conjugacy class symbol, if any.

§Arguments
  • cc_idx - A class index.
§Returns

Returns a conjugacy class symbol, or None if such a symbol does not exist for the class, or if the class index is out of range.

source

fn filter_cc_symbols<P: FnMut(&Self::ClassSymbol) -> bool>( &self, predicate: P, ) -> Vec<Self::ClassSymbol>

Given a predicate, returns conjugacy class symbols satisfying it.

§Arguments
  • predicate - A predicate to filter conjugacy class symbols.
§Returns

Returns conjugacy class symbols satisfying predicate, or None if such a symbol does not exist for the class.

source

fn set_class_symbols(&mut self, cc_symbols: &[Self::ClassSymbol])

Sets the conjugacy class symbols for this group.

§Arguments

cc_symbols - A sliced of owned conjugacy class symbols.

source

fn get_inverse_cc(&self, cc_idx: usize) -> Option<usize>

Given a class index, returns an index for its inverse.

The inverse of a class contains the inverses of its elements.

§Arguments

cc_idx - A class index.

§Returns

The index of the inverse of cc_idx, or None if the class index is out of range.

source

fn class_number(&self) -> usize

Returns the number of conjugacy classes in the group.

source

fn class_size(&self, cc_idx: usize) -> Option<usize>

Given a class index, returns its size.

§Arguments

cc_idx - A class index.

§Returns

The size of the class with index cc_idx, or None if the class index is out of range.

Provided Methods§

source

fn class_matrix( &self, ctb_opt: Option<&Array2<usize>>, r: usize, ) -> Array2<usize>

The class matrix $\mathbf{N}_r$ for the conjugacy classes in the group.

Let $K_i$ be the $i^{\textrm{th}}$ conjugacy class of the group. The elements of the class matrix $\mathbf{N}_r$ are given by

    N_{r, st} = \lvert \{ (x, y) \in K_r \times K_s : xy = z \in K_t \} \rvert,

independent of any $z \in K_t$.

§Arguments
  • ctb_opt - An optional Cayley table.
  • r - The index $r$.
§Returns

The class matrix $\mathbf{N}_r$.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<T, RowSymbol, ColSymbol> ClassProperties for UnitaryRepresentedGroup<T, RowSymbol, ColSymbol>
where T: Mul<Output = T> + Inv<Output = T> + Hash + Eq + Clone + Sync + Debug + FiniteOrder, for<'a, 'b> &'b T: Mul<&'a T, Output = T>, <Self as GroupProperties>::GroupElement: Inv, RowSymbol: LinearSpaceSymbol, ColSymbol: CollectionSymbol<CollectionElement = T>,

§

type ClassSymbol = ColSymbol

source§

impl<T, UG, RowSymbol> ClassProperties for MagneticRepresentedGroup<T, UG, RowSymbol>
where T: Mul<Output = T> + Inv<Output = T> + Hash + Eq + Clone + Sync + Debug + FiniteOrder, for<'a, 'b> &'b T: Mul<&'a T, Output = T>, <Self as GroupProperties>::GroupElement: Inv, UG: Clone + GroupProperties<GroupElement = T> + CharacterProperties, RowSymbol: ReducibleLinearSpaceSymbol<Subspace = UG::RowSymbol> + Serialize + DeserializeOwned, <UG as ClassProperties>::ClassSymbol: Serialize + DeserializeOwned, <UG as CharacterProperties>::CharTab: Serialize + DeserializeOwned,