netket.utils.group.FiniteGroup#

class netket.utils.group.FiniteGroup[source]#

Bases: netket.utils.group._semigroup.FiniteSemiGroup

Collection of Elements expected to satisfy group axioms. Unlike FiniteSemiGroup, product tables, conjugacy classes, etc. can be calculated.

Group elements can be implemented in any way, as long as a subclass of Group is able to implement their action. Subclasses must implement a _canonical() method that returns an array of integers for each acceptable Element such that two Elements are considered equal iff the corresponding matrices are equal.

Inheritance
Attributes
character_table_by_class#

Calculates the character table using Burnside’s algorithm.

Each row of the output lists the characters of one irrep in the order the conjugacy classes are listed in self.conjugacy_classes.

Assumes that Identity() == self[0], if not, the sign of some characters may be flipped. The irreps are sorted by dimension.

Return type

Union[ndarray, DeviceArray, Tracer]

conjugacy_classes#

The conjugacy classes of the group.

Return type

Tuple[Union[ndarray, DeviceArray, Tracer], Union[ndarray, DeviceArray, Tracer], Union[ndarray, DeviceArray, Tracer]]

Returns

The three arrays

• classes: a boolean array, each row indicating the elements that belong to one conjugacy class

• representatives: the lowest-indexed member of each conjugacy class

• inverse: the conjugacy class index of every group element

conjugacy_table#

The conjugacy table of this Permutation Group.

Assuming the definitions

g = self[idx_g]
h = self[idx_h]


self[self.conjugacy_table[idx_g,idx_h]] corresponds to $$h^{-1}gh$$.

Return type

Union[ndarray, DeviceArray, Tracer]

inverse#

Indices of the inverse of each element.

Assuming the definitions

g = self[idx_g]
h = self[self.inverse[idx_g]]


gh = product(g, h) is equivalent to Identity()

Return type

Union[ndarray, DeviceArray, Tracer]

product_table#

A table of indices corresponding to $$g^{-1} h$$ over the group.

Assuming the definitions

g = self[idx_g]
h = self[idx_h]
idx_u = self.product_table[idx_g, idx_h]


self[idx_u] corresponds to $$u = g^{-1} h$$ .

Return type

Union[ndarray, DeviceArray, Tracer]

elems: List[netket.utils.group._semigroup.Element]#
Methods
__call__(initial)#

Apply all group elements to all entries of initial along the last axis.

character_table()[source]#

Calculates the character table using Burnside’s algorithm.

Each row of the output lists the characters of all group elements for one irrep, i.e. self.character_table()[i,g] gives $$\chi_i(g)$$.

Assumes that Identity() == self[0], if not, the sign of some characters may be flipped. The irreps are sorted by dimension.

Return type

Union[ndarray, DeviceArray, Tracer]

Returns a conventional rendering of the character table.

Return type

Tuple[List[str], Union[ndarray, DeviceArray, Tracer]]

Returns

A tuple containing a list of strings and an array

• classes: a text description of a representative of each conjugacy class as a list

• characters: a matrix, each row of which lists the characters of one irrep

irrep_matrices()[source]#

Returns matrices that realise all irreps of the group.

Return type

List[Union[ndarray, DeviceArray, Tracer]]

Returns

A list of 3D arrays such that self.irrep_matrices()[i][g] contains the representation of self[g] consistent with the characters in self.character_table()[i].

remove_duplicates(*, return_inverse=False)[source]#

Returns a new FiniteGroup with duplicate elements (that is, elements with identical canonical forms) removed.

Parameters

return_inverse – If True, also return indices to reconstruct the original group from the result.

Return type

FiniteGroup

Returns

The group with duplicate elements removed. If return_inverse==True it also returns the list of indices needed to reconstruct the original group from the result.