Skip to main content

GroupProperties

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

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl GroupProperties for PermutationGroup

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

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,

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