ClassProperties

Trait 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$.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl ClassProperties for PermutationGroup

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

Source§

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,