Cubic Hecke matrix representations#

This module contains the class CubicHeckeMatrixRep which is used to treat the matrix representations of the elements of the cubic Hecke algebra (CubicHeckeAlgebra) together with its parent class CubicHeckeMatrixSpace. Furthermore, it contains enums for their types (RepresentationType) and names (AbsIrreducibeRep).

AUTHORS:

  • Sebastian Oehms May 2020: initial version

class sage.algebras.hecke_algebras.cubic_hecke_matrix_rep.AbsIrreducibeRep(value)#

Bases: Enum

Enum class to select an absolutely irreducible representation for the cubic Hecke algebra (CHAn) on \(n\)-strands.

The names are build as follows: Take the determinant of one of the generators of the CHAn. This is a monomial in the generic extension ring (GER) of CHA, say a^ib^jc^k where a, b and c are the generators of GER. This does not depend on the choice of the generator of CHA, since these are conjugated to each other. This monomial might be looked as the weight of the representation. Therefore we use it as a name:

Wn_ijk

The only ambiguity among the available irreducible representations occurs for the two nine-dimensional modules, which are conjugated to each other and distinguished by these names:

W4_333 and W4_333bar

Examples of names:

  • W2_100 – one dimensional representation of the cubic Hecke algebra on 2 strands corresponding to the first root of the cubic equation

  • W3_111 – three dimensional irreducible representation of the cubic Hecke algebra on 3 strands

  • W4_242 – eight dimensional irreducible representation of the cubic Hecke algebra on 4 strands having the second root of the cubic equation as weight of dimension 4

Alternative names are taken from [MW2012] and can be shown by alternative_name().

EXAMPLES:

sage: import sage.algebras.hecke_algebras.cubic_hecke_matrix_rep as chmr
sage: [irr.name for irr in chmr.AbsIrreducibeRep]
['W2_100', 'W2_001', 'W2_010', 'W3_100', 'W3_001', 'W3_010', 'W3_011', 'W3_110',
 'W3_101', 'W3_111', 'W4_100', 'W4_001', 'W4_010', 'W4_011', 'W4_110', 'W4_101',
 'W4_111', 'W4_120', 'W4_201', 'W4_012', 'W4_102', 'W4_210', 'W4_021', 'W4_213',
 'W4_132', 'W4_321', 'W4_231', 'W4_123', 'W4_312', 'W4_422', 'W4_224', 'W4_242',
 'W4_333', 'W4_333bar', 'W5_100', 'W5_001', 'W5_010', 'W5_013', 'W5_130', 'W5_301',
 'W5_031', 'W5_103', 'W5_310', 'W5_203', 'W5_032', 'W5_320', 'W5_230', 'W5_023',
 'W5_302', 'W5_033', 'W5_330', 'W5_303', 'W5_163', 'W5_631', 'W5_316', 'W5_136',
 'W5_613', 'W5_361', 'W5_366', 'W5_663', 'W5_636', 'W5_933', 'W5_339', 'W5_393']

REFERENCES:

W2_001 = {'alt_name': 'Sc', 'dim': 1, 'gap_ind': 1, 'intern_ind': 1, 'len_orbit': 3, 'ngens': 1}#
W2_010 = {'alt_name': 'Sb', 'dim': 1, 'gap_ind': 2, 'intern_ind': 2, 'len_orbit': 3, 'ngens': 1}#
W2_100 = {'alt_name': 'Sa', 'dim': 1, 'gap_ind': 0, 'intern_ind': 0, 'len_orbit': 3, 'ngens': 1}#
W3_001 = {'alt_name': 'Sc', 'dim': 1, 'gap_ind': 1, 'intern_ind': 1, 'len_orbit': 3, 'ngens': 2}#
W3_010 = {'alt_name': 'Sb', 'dim': 1, 'gap_ind': 2, 'intern_ind': 2, 'len_orbit': 3, 'ngens': 2}#
W3_011 = {'alt_name': 'Tbc', 'dim': 2, 'gap_ind': 3, 'intern_ind': 3, 'len_orbit': 3, 'ngens': 2}#
W3_100 = {'alt_name': 'Sa', 'dim': 1, 'gap_ind': 0, 'intern_ind': 0, 'len_orbit': 3, 'ngens': 2}#
W3_101 = {'alt_name': 'Tac', 'dim': 2, 'gap_ind': 5, 'intern_ind': 5, 'len_orbit': 3, 'ngens': 2}#
W3_110 = {'alt_name': 'Tab', 'dim': 2, 'gap_ind': 4, 'intern_ind': 4, 'len_orbit': 3, 'ngens': 2}#
W3_111 = {'alt_name': 'V', 'dim': 3, 'gap_ind': 6, 'intern_ind': 6, 'len_orbit': 1, 'ngens': 2}#
W4_001 = {'alt_name': 'Sc', 'dim': 1, 'gap_ind': 1, 'intern_ind': 1, 'len_orbit': 3, 'ngens': 3}#
W4_010 = {'alt_name': 'Sb', 'dim': 1, 'gap_ind': 2, 'intern_ind': 2, 'len_orbit': 3, 'ngens': 3}#
W4_011 = {'alt_name': 'Tbc', 'dim': 2, 'gap_ind': 3, 'intern_ind': 3, 'len_orbit': 3, 'ngens': 3}#
W4_012 = {'alt_name': 'Ucb', 'dim': 3, 'gap_ind': 9, 'intern_ind': 9, 'len_orbit': 6, 'ngens': 3}#
W4_021 = {'alt_name': 'Ubc', 'dim': 3, 'gap_ind': 12, 'intern_ind': 12, 'len_orbit': 6, 'ngens': 3}#
W4_100 = {'alt_name': 'Sa', 'dim': 1, 'gap_ind': 0, 'intern_ind': 0, 'len_orbit': 3, 'ngens': 3}#
W4_101 = {'alt_name': 'Tac', 'dim': 2, 'gap_ind': 5, 'intern_ind': 5, 'len_orbit': 3, 'ngens': 3}#
W4_102 = {'alt_name': 'Uca', 'dim': 3, 'gap_ind': 10, 'intern_ind': 10, 'len_orbit': 6, 'ngens': 3}#
W4_110 = {'alt_name': 'Tab', 'dim': 2, 'gap_ind': 4, 'intern_ind': 4, 'len_orbit': 3, 'ngens': 3}#
W4_111 = {'alt_name': 'V', 'dim': 3, 'gap_ind': 6, 'intern_ind': 6, 'len_orbit': 1, 'ngens': 3}#
W4_120 = {'alt_name': 'Uba', 'dim': 3, 'gap_ind': 7, 'intern_ind': 7, 'len_orbit': 6, 'ngens': 3}#
W4_123 = {'alt_name': 'Vcba', 'dim': 6, 'gap_ind': 17, 'intern_ind': 17, 'len_orbit': 6, 'ngens': 3}#
W4_132 = {'alt_name': 'Vbca', 'dim': 6, 'gap_ind': 14, 'intern_ind': 14, 'len_orbit': 6, 'ngens': 3}#
W4_201 = {'alt_name': 'Uac', 'dim': 3, 'gap_ind': 8, 'intern_ind': 8, 'len_orbit': 6, 'ngens': 3}#
W4_210 = {'alt_name': 'Uab', 'dim': 3, 'gap_ind': 11, 'intern_ind': 11, 'len_orbit': 6, 'ngens': 3}#
W4_213 = {'alt_name': 'Vcab', 'dim': 6, 'gap_ind': 13, 'intern_ind': 13, 'len_orbit': 6, 'ngens': 3}#
W4_224 = {'alt_name': 'Wc', 'dim': 8, 'gap_ind': 20, 'intern_ind': 20, 'len_orbit': 3, 'ngens': 3}#
W4_231 = {'alt_name': 'Vbac', 'dim': 6, 'gap_ind': 16, 'intern_ind': 16, 'len_orbit': 6, 'ngens': 3}#
W4_242 = {'alt_name': 'Wb', 'dim': 8, 'gap_ind': 21, 'intern_ind': 21, 'len_orbit': 3, 'ngens': 3}#
W4_312 = {'alt_name': 'Vacb', 'dim': 6, 'gap_ind': 18, 'intern_ind': 18, 'len_orbit': 6, 'ngens': 3}#
W4_321 = {'alt_name': 'Vabc', 'dim': 6, 'gap_ind': 15, 'intern_ind': 15, 'len_orbit': 6, 'ngens': 3}#
W4_333 = {'alt_name': 'X', 'dim': 9, 'gap_ind': 22, 'intern_ind': 22, 'len_orbit': 2, 'ngens': 3}#
W4_333bar = {'alt_name': 'Xbar', 'dim': 9, 'gap_ind': 23, 'intern_ind': 23, 'len_orbit': 2, 'ngens': 3}#
W4_422 = {'alt_name': 'Wa', 'dim': 8, 'gap_ind': 19, 'intern_ind': 19, 'len_orbit': 3, 'ngens': 3}#
W5_001 = {'alt_name': None, 'dim': 1, 'gap_ind': 1, 'intern_ind': 1, 'len_orbit': 3, 'ngens': 4}#
W5_010 = {'alt_name': None, 'dim': 1, 'gap_ind': 2, 'intern_ind': 2, 'len_orbit': 3, 'ngens': 4}#
W5_013 = {'alt_name': None, 'dim': 4, 'gap_ind': 3, 'intern_ind': 3, 'len_orbit': 6, 'ngens': 4}#
W5_023 = {'alt_name': None, 'dim': 5, 'gap_ind': 13, 'intern_ind': 13, 'len_orbit': 6, 'ngens': 4}#
W5_031 = {'alt_name': None, 'dim': 4, 'gap_ind': 6, 'intern_ind': 6, 'len_orbit': 6, 'ngens': 4}#
W5_032 = {'alt_name': None, 'dim': 5, 'gap_ind': 10, 'intern_ind': 10, 'len_orbit': 6, 'ngens': 4}#
W5_033 = {'alt_name': None, 'dim': 6, 'gap_ind': 15, 'intern_ind': 15, 'len_orbit': 3, 'ngens': 4}#
W5_100 = {'alt_name': None, 'dim': 1, 'gap_ind': 0, 'intern_ind': 0, 'len_orbit': 3, 'ngens': 4}#
W5_103 = {'alt_name': None, 'dim': 4, 'gap_ind': 7, 'intern_ind': 7, 'len_orbit': 6, 'ngens': 4}#
W5_130 = {'alt_name': None, 'dim': 4, 'gap_ind': 4, 'intern_ind': 4, 'len_orbit': 6, 'ngens': 4}#
W5_136 = {'alt_name': None, 'dim': 10, 'gap_ind': 21, 'intern_ind': 21, 'len_orbit': 6, 'ngens': 4}#
W5_163 = {'alt_name': None, 'dim': 10, 'gap_ind': 18, 'intern_ind': 18, 'len_orbit': 6, 'ngens': 4}#
W5_203 = {'alt_name': None, 'dim': 5, 'gap_ind': 9, 'intern_ind': 9, 'len_orbit': 6, 'ngens': 4}#
W5_230 = {'alt_name': None, 'dim': 5, 'gap_ind': 12, 'intern_ind': 12, 'len_orbit': 6, 'ngens': 4}#
W5_301 = {'alt_name': None, 'dim': 4, 'gap_ind': 5, 'intern_ind': 5, 'len_orbit': 6, 'ngens': 4}#
W5_302 = {'alt_name': None, 'dim': 5, 'gap_ind': 14, 'intern_ind': 14, 'len_orbit': 6, 'ngens': 4}#
W5_303 = {'alt_name': None, 'dim': 6, 'gap_ind': 17, 'intern_ind': 17, 'len_orbit': 3, 'ngens': 4}#
W5_310 = {'alt_name': None, 'dim': 4, 'gap_ind': 8, 'intern_ind': 8, 'len_orbit': 6, 'ngens': 4}#
W5_316 = {'alt_name': None, 'dim': 10, 'gap_ind': 20, 'intern_ind': 20, 'len_orbit': 6, 'ngens': 4}#
W5_320 = {'alt_name': None, 'dim': 5, 'gap_ind': 11, 'intern_ind': 11, 'len_orbit': 6, 'ngens': 4}#
W5_330 = {'alt_name': None, 'dim': 6, 'gap_ind': 16, 'intern_ind': 16, 'len_orbit': 3, 'ngens': 4}#
W5_339 = {'alt_name': None, 'dim': 15, 'gap_ind': 28, 'intern_ind': 28, 'len_orbit': 3, 'ngens': 4}#
W5_361 = {'alt_name': None, 'dim': 10, 'gap_ind': 23, 'intern_ind': 23, 'len_orbit': 6, 'ngens': 4}#
W5_366 = {'alt_name': None, 'dim': 15, 'gap_ind': 24, 'intern_ind': 24, 'len_orbit': 3, 'ngens': 4}#
W5_393 = {'alt_name': None, 'dim': 15, 'gap_ind': 29, 'intern_ind': 29, 'len_orbit': 3, 'ngens': 4}#
W5_613 = {'alt_name': None, 'dim': 10, 'gap_ind': 22, 'intern_ind': 22, 'len_orbit': 6, 'ngens': 4}#
W5_631 = {'alt_name': None, 'dim': 10, 'gap_ind': 19, 'intern_ind': 19, 'len_orbit': 6, 'ngens': 4}#
W5_636 = {'alt_name': None, 'dim': 15, 'gap_ind': 27, 'intern_ind': 26, 'len_orbit': 3, 'ngens': 4}#
W5_663 = {'alt_name': None, 'dim': 15, 'gap_ind': 26, 'intern_ind': 25, 'len_orbit': 3, 'ngens': 4}#
W5_933 = {'alt_name': None, 'dim': 15, 'gap_ind': 25, 'intern_ind': 27, 'len_orbit': 3, 'ngens': 4}#
alternative_name()#

Return the name of the split irreducible representation for cubic Hecke algebras for up to four strands as given in [MW2012].

EXAMPLES:

sage: import sage.algebras.hecke_algebras.cubic_hecke_matrix_rep as chmr
sage: chmr.AbsIrreducibeRep.W3_011.alternative_name()
'Tbc'
dimension()#

Return the dimension of the representation.

EXAMPLES:

sage: import sage.algebras.hecke_algebras.cubic_hecke_matrix_rep as chmr
sage: chmr.AbsIrreducibeRep.W3_111.dimension()
3
gap_index()#

Return the array index of this representation for the access to the GAP3 package CHEVIE.

EXAMPLES:

sage: import sage.algebras.hecke_algebras.cubic_hecke_matrix_rep as chmr
sage: chmr.AbsIrreducibeRep.W3_111.gap_index()
6
internal_index()#

Return the array index of this representation for the internal access.

EXAMPLES:

sage: import sage.algebras.hecke_algebras.cubic_hecke_matrix_rep as chmr
sage: chmr.AbsIrreducibeRep.W3_111.internal_index()
6
length_orbit()#

Return the length of the orbit of this representation under the action of the Galois group of the cubic equation.

EXAMPLES:

sage: import sage.algebras.hecke_algebras.cubic_hecke_matrix_rep as chmr
sage: chmr.AbsIrreducibeRep.W3_001.length_orbit()
3
sage: chmr.AbsIrreducibeRep.W3_111.length_orbit()
1
number_gens()#

Return the number of generators of the underlying cubic Hecke algebra.

EXAMPLES:

sage: import sage.algebras.hecke_algebras.cubic_hecke_matrix_rep as chmr
sage: chmr.AbsIrreducibeRep.W3_001.number_gens()
2
sage: chmr.AbsIrreducibeRep.W4_001.number_gens()
3
class sage.algebras.hecke_algebras.cubic_hecke_matrix_rep.CubicHeckeMatrixRep#

Bases: Matrix_generic_dense

Class to supervise the diagonal block matrix structure arising from cubic Hecke algebra-representations.

EXAMPLES:

sage: import sage.algebras.hecke_algebras.cubic_hecke_matrix_rep as chmr
sage: CHA2.<c1> = algebras.CubicHecke(2)
sage: MS = chmr.CubicHeckeMatrixSpace(CHA2)
sage: m1 = MS(c1); m1
[         a          0          0]
[         0          b          0]
[         0          0 -b - a + u]
sage: type(m1)
<class 'sage.algebras.hecke_algebras.cubic_hecke_matrix_rep.CubicHeckeMatrixSpace_with_category.element_class'>
sage: m1.block_diagonal_list()
[[a], [b], [-b - a + u]]

sage: MSo = chmr.CubicHeckeMatrixSpace(CHA2, original=True)
sage: MSo(c1)
[a 0 0]
[0 b 0]
[0 0 c]

sage: reg_left = chmr.RepresentationType.RegularLeft
sage: MSreg = chmr.CubicHeckeMatrixSpace(CHA2, representation_type=reg_left)
sage: MSreg(c1)
[ 0 -v  1]
[ 1  u  0]
[ 0  w  0]
sage: len(_.block_diagonal_list())
1
block_diagonal_list()#

Return the list of sub-matrix blocks of self considered as block diagonal matrix.

OUTPUT:

A list of instances of Matrix_generic_dense each of which represents a diagonal block of self.

EXAMPLES:

sage: CHA2.<c1> = algebras.CubicHecke(2)
sage: c1.matrix().block_diagonal_list()
[[a], [b], [-b - a + u]]
reduce_to_irr_block(irr)#

Return a copy of self with zeroes outside the block corresponding to irr but the block according to the input identical to that of self.

INPUT:

  • irr – an AbsIrreducibeRep specifying an absolute irreducible representation of the cubic Hecke algebra; alternatively, it can be specified by list index (see internal_index() respectively gap_index())

OUTPUT:

An instance of Matrix_generic_dense with exactly one non zero block according to irr.

EXAMPLES:

sage: CHA2.<c1> = algebras.CubicHecke(2)
sage: m1 = c1.matrix()
sage: m1.reduce_to_irr_block(0)
[a 0 0]
[0 0 0]
[0 0 0]
sage: m1.reduce_to_irr_block(CHA2.irred_repr.W2_001)
[0 0 0]
[0 b 0]
[0 0 0]
class sage.algebras.hecke_algebras.cubic_hecke_matrix_rep.CubicHeckeMatrixSpace(base_ring, dimension, cubic_hecke_algebra, representation_type, subdivide)#

Bases: MatrixSpace

The matrix space of cubic Hecke algebra representations.

INPUT:

  • cubic_hecke_algebra – (optional) CubicHeckeAlgebra must be given if element fails to be an instance of its element class

  • representation_type – (default: RepresentationType.SplitIrredChevie) RepresentationType specifying the type of the representation

  • subdivide – boolean (default: False); whether or not to subdivide the resulting matrices

  • original – boolean (default: False) if True, the matrix will have coefficients in the generic base / extension ring

EXAMPLES:

sage: CHA2.<c1> = algebras.CubicHecke(2)
sage: c1.matrix()      # indirect doctest
[         a          0          0]
[         0          b          0]
[         0          0 -b - a + u]
sage: c1.matrix(original=True)
[a 0 0]
[0 b 0]
[0 0 c]
sage: c1.matrix(representation_type = CHA2.repr_type.RegularLeft)   # indirect doctest
[ 0 -v  1]
[ 1  u  0]
[ 0  w  0]
construction()#

Return None since this construction is not functorial.

EXAMPLES:

sage: CHA2.<c1> = algebras.CubicHecke(2)
sage: MS = c1.matrix().parent()
sage: MS._test_category()   # indirect doctest
one()#

Return the one element of self.

EXAMPLES:

sage: CHA2.<c1> = algebras.CubicHecke(2)
sage: m1   = c1.matrix()
sage: m1rl = c1.matrix(representation_type = CHA2.repr_type.RegularLeft)
sage: o   = m1.parent().one()
sage: orl = m1rl.parent().one()
sage: matrix(o) == matrix(orl), o.is_one(), orl.is_one()
(True, True, True)
sage: o.block_diagonal_list()
[[1], [1], [1]]
sage: orl.block_diagonal_list()
[
[1 0 0]
[0 1 0]
[0 0 1]
]
some_elements()#

Return a generator of elements of self.

EXAMPLES:

sage: CHA2.<c1> = algebras.CubicHecke(2, cubic_equation_roots=(2, 3, 5))
sage: M = c1.matrix(); M
[2 0 0]
[0 3 0]
[0 0 5]
sage: MS = M.parent()
sage: MS.some_elements()
(
[ 94/3     0     0]
[    0 187/3     0]
[    0     0 373/3]
)
sage: MS.some_elements() == tuple(MS(x) for x in CHA2.some_elements())
True
zero()#

Return the zero element of self.

EXAMPLES:

sage: CHA2.<c1> = algebras.CubicHecke(2)
sage: m1   = c1.matrix()
sage: m1rl = c1.matrix(representation_type = CHA2.repr_type.RegularLeft)
sage: z   = m1.parent().zero()
sage: zrl = m1rl.parent().zero()
sage: matrix(z) == matrix(zrl), z.is_zero(), zrl.is_zero()
(True, True, True)
sage: z.block_diagonal_list()
[[0], [0], [0]]
sage: zrl.block_diagonal_list()
[
[0 0 0]
[0 0 0]
[0 0 0]
]
class sage.algebras.hecke_algebras.cubic_hecke_matrix_rep.GenSign(value)#

Bases: Enum

Enum class to select the braid generators sign.

EXAMPLES:

sage: import sage.algebras.hecke_algebras.cubic_hecke_matrix_rep as chmr
sage: chmr.GenSign.pos
<GenSign.pos: 1>
sage: chmr.GenSign.neg
<GenSign.neg: -1>
neg = -1#
pos = 1#
class sage.algebras.hecke_algebras.cubic_hecke_matrix_rep.RepresentationType(value)#

Bases: Enum

Enum class to select a representation type for the cubic Hecke algebra.

  • RegularLeft – left regular representations

  • RegularRight – right regular representations

  • SplitIrredMarin – split irreducible representations obtained from Ivan Marin’s data

  • SplitIrredChevie – the split irreducible representations obtained from CHEVIE via the GAP3 interface

EXAMPLES:

sage: import sage.algebras.hecke_algebras.cubic_hecke_matrix_rep as chmr
sage: chmr.RepresentationType.RegularLeft.is_regular()
True
RegularLeft = {'data': CubicHeckeDataSection.regular_left, 'num_rep': [1, 1, 1, 1], 'regular': True, 'split': False}#
RegularRight = {'data': CubicHeckeDataSection.regular_right, 'num_rep': [1, 1, 1, 1], 'regular': True, 'split': False}#
SplitIrredChevie = {'data': None, 'num_rep': [1, 3, 7, 24, 30], 'regular': False, 'split': True}#
SplitIrredMarin = {'data': CubicHeckeDataSection.split_irred, 'num_rep': [1, 3, 7, 24], 'regular': False, 'split': True}#
data_section()#

Return the name of the data file. For more information see CubicHeckeDataBase.

EXAMPLES:

sage: import sage.algebras.hecke_algebras.cubic_hecke_matrix_rep as chmr
sage: reg_left = chmr.RepresentationType.RegularLeft
sage: reg_left.data_section()
<CubicHeckeDataSection.regular_left: 'regular_left'>
is_regular()#

Return True if this representation type is regular, False else-wise.

EXAMPLES:

sage: import sage.algebras.hecke_algebras.cubic_hecke_matrix_rep as chmr
sage: reg_left = chmr.RepresentationType.RegularLeft
sage: reg_left.is_regular()
True
is_split()#

Return True if this representation type is absolutely split, False else-wise.

EXAMPLES:

sage: import sage.algebras.hecke_algebras.cubic_hecke_matrix_rep as chmr
sage: chevie = chmr.RepresentationType.SplitIrredChevie
sage: chevie.is_split()
True
number_of_representations(nstrands)#

Return the number of representations existing to that type.

EXAMPLES:

sage: import sage.algebras.hecke_algebras.cubic_hecke_matrix_rep as chmr
sage: chmr.RepresentationType.SplitIrredChevie.number_of_representations(4)
24
sage: chmr.RepresentationType.SplitIrredMarin.number_of_representations(4)
24