Group

AbstractGroup

FiniteGroup

LatticeTools.FiniteGroupType
FiniteGroup

Finite group, with elements {1, 2, 3,..., n}. The identity element is always 1. Can be constructed using FiniteGroup(multiplication_table)

Fields

  • multiplication_table::Matrix{Int}: multiplication table
  • period_lengths::Vector{Int}: period length (order) of every element
  • inverses::Vector{Int}: inverse of every element
  • conjugacy_classes::Vector{Vector{Int}}: conjugacy classes

Examples

julia> using LatticeTools

julia> FiniteGroup([1 2; 2 1])
FiniteGroup([1 2; 2 1], [1, 2], [1, 2], [[1], [2]])
source
LatticeTools.elementMethod
element(group, idx)

Return the element of index idx. For FiniteGroup, this is somewhat meaningless since the idxth element is idx. The sole purpose of this function is the bounds checking.

source
LatticeTools.ishomomorphicMethod
ishomomorphic(group, representation; product=(*), equal=(==))

Check whether representation is homomorphic to group under product and equal, order preserved.

source

Permutation

LatticeTools.PermutationType
Permutation(perms; max_order=2048)

Create a permutation of integers from 1 to n. perms should be a permutation of 1:n.

Arguments

  • perms: an integer vector containing a permutation of integers from 1 to n
  • max_order: maximum order

Note

The convention for the permutation is that map[i] gets mapped to i. In other words, map tells you where each element is from.

source
Base.:*Method
*(p1 ::Permutation, p2 ::Permutation)

Multiply the two permutation. NOT THIS: (Return [p2.map[x] for x in p1.map].) BUT THIS: (Return [p1.map[x] for x in p2.map].)

Examples

julia> using LatticeTools

julia> Permutation([2,1,3]) * Permutation([1,3,2])
Permutation([2, 3, 1], 3)

julia> Permutation([1,3,2]) * Permutation([2,1,3])
Permutation([3, 1, 2], 3)
source
LatticeTools.generate_groupMethod
generate_group(generators...)

Return a FiniteGroup generated by the generators.

Arguments

  • generators::Permutation...: generating permutations
source