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
Inheritance diagram of netket.utils.group.FiniteGroup
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]

character_table_readable()[source]#

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.

replace(**updates)#

Returns a new object replacing the specified fields with new values.