Trait qsym2::group::GroupProperties

source ·
pub trait GroupProperties
where Self::GroupElement: Mul<Output = Self::GroupElement> + Inv<Output = Self::GroupElement> + Hash + Eq + Clone + Sync + Debug + FiniteOrder,
{ type GroupElement; type ElementCollection: Clone + IntoIterator<Item = Self::GroupElement>; // Required methods fn name(&self) -> String; fn finite_subgroup_name(&self) -> Option<&String>; fn elements(&self) -> &Self::ElementCollection; fn get_index(&self, index: usize) -> Option<Self::GroupElement>; fn get_index_of(&self, g: &Self::GroupElement) -> Option<usize>; fn contains(&self, g: &Self::GroupElement) -> bool; fn is_abelian(&self) -> bool; fn order(&self) -> usize; fn cayley_table(&self) -> Option<&Array2<usize>>; }
Expand description

Trait for purely group-theoretic properties.

Required Associated Types§

source

type GroupElement

The type of the elements in the group.

source

type ElementCollection: Clone + IntoIterator<Item = Self::GroupElement>

Required Methods§

source

fn name(&self) -> String

Returns the name of the group.

source

fn finite_subgroup_name(&self) -> Option<&String>

Returns the finite subgroup name of this group, if any.

source

fn elements(&self) -> &Self::ElementCollection

Returns an iterable collection of the elements in the group.

source

fn get_index(&self, index: usize) -> Option<Self::GroupElement>

Given an index, returns the element associated with it, or None if the index is out of range.

source

fn get_index_of(&self, g: &Self::GroupElement) -> Option<usize>

Given an element, returns its index in the group, or None if the element does not exist in the group.

source

fn contains(&self, g: &Self::GroupElement) -> bool

Checks if an element is a member of the group.

source

fn is_abelian(&self) -> bool

Checks if this group is abelian.

source

fn order(&self) -> usize

Returns the order of the group.

source

fn cayley_table(&self) -> Option<&Array2<usize>>

Returns the Cayley table of the group, if any.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<T> GroupProperties for EagerGroup<T>
where T: Mul<Output = T> + Inv<Output = T> + Hash + Eq + Clone + Sync + Debug + FiniteOrder, for<'a, 'b> &'b T: Mul<&'a T, Output = T>,

§

type GroupElement = T

§

type ElementCollection = IndexSet<T>

source§

impl<T, RowSymbol, ColSymbol> GroupProperties 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>, RowSymbol: LinearSpaceSymbol, ColSymbol: CollectionSymbol<CollectionElement = T>,

§

type GroupElement = T

§

type ElementCollection = IndexSet<<UnitaryRepresentedGroup<T, RowSymbol, ColSymbol> as GroupProperties>::GroupElement>

source§

impl<T, UG, RowSymbol> GroupProperties 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>, RowSymbol: ReducibleLinearSpaceSymbol<Subspace = UG::RowSymbol>, UG: Clone + GroupProperties<GroupElement = T> + CharacterProperties, <UG as ClassProperties>::ClassSymbol: Serialize + DeserializeOwned, CorepCharacterTable<RowSymbol, <UG as CharacterProperties>::CharTab>: Serialize + DeserializeOwned,

§

type GroupElement = T

§

type ElementCollection = IndexSet<T>