Cubic Braid Groups#
This module is devoted to factor groups of the Artin braid groups, such that the images \(s_i\) of the braid generators have order three:
In general these groups have firstly been investigated by Coxeter, H.S.M. in: “Factor groups of the braid groups, Proceedings of the Fourth Canadian Mathematical Congress (Vancouver 1957), pp. 95-122”.
Coxeter showed, that these groups are finite as long as the number of strands is less than 6 and infinite else-wise. More explicitly the factor group on three strand braids is isomorphic to \(SL(2,3)\), on four strand braids to \(GU(3,2)\) and on five strand braids to \(Sp(4,3) \times C_3\). Today, these finite groups are known as irreducible complex reflection groups enumerated in the Shephard-Todd classification as \(G_{4}\), \(G_{25}\) and \(G_{32}\).
Coxeter realized these groups as subgroups of unitary groups with respect to a certain Hermitian form over the complex numbers (in fact over \(\QQ\) adjoined with a primitive 12-th root of unity).
In “Einige endliche Faktorgruppen der Zopfgruppen” (Math. Z., 163 (1978), 291-302) J. Assion considered two series \(S(m)\) and \(U(m)\) of finite factors of these groups. The additional relations on the braid group generators \(\{ s_1, \cdots, s_{m-1}\}\) are
where \(t_i = (s_i s_{i+1})^3\). He showed that each series of finite cubic braid group factors must be an epimorphic image of one of his two series, as long as the groups with less than 5 strands are the full cubic braid groups, whereas the group on 5 strands is not. He realized the groups \(S(m)\) as symplectic groups over \(GF(3)\) (resp. subgroups therein) and \(U(m)\) as general unitary groups over \(GF(4)\) (resp. subgroups therein).
All the groups considered by Coxeter and Assion are considered as finitely
presented groups together with the classical realizations. It also allows
for the conversion maps between the two realizations. In addition, we can
construct other realizations and maps to matrix groups with help of the
Burau representation. In case gap3
and CHEVIE
are installed, the
reflection groups (via the gap3
interface) are available, too. This can
be done using the methods as_classical_group()
, as_matrix_group()
,
as_permutation_group()
, and as_reflection_group()
.
REFERENCES:
AUTHORS:
Sebastian Oehms 2019-02-16, initial version.
- sage.groups.cubic_braid.AssionGroupS(n=None, names='s')#
Construct cubic braid groups
CubicBraidGroup
which have been investigated by J.Assion using the notation S(m). This function is a short hand cut for setting the construction argumentscbg_type=CubicBraidGroup.type.AssionS
and defaultnames='s'
.INPUT:
n
– integer (optional); the number of strandsnames
– (default:'s'
) string or list/tuple/iterable of strings
See also
EXAMPLES:
sage: S3 = AssionGroupS(3); S3 Assion group on 3 strands of type S sage: S3x = CubicBraidGroup(3, names='s', cbg_type=CubicBraidGroup.type.AssionS); S3x Assion group on 3 strands of type S sage: S3 == S3x True
- sage.groups.cubic_braid.AssionGroupU(n=None, names='u')#
Construct cubic braid groups as instance of
CubicBraidGroup
which have been investigated by J.Assion using the notation U(m). This function is a short hand cut for setting the construction argumentscbg_type=CubicBraidGroup.type.AssionU
and defaultnames='u'
.INPUT:
n
– integer (optional); the number of strandsnames
– (default:'s'
) string or list/tuple/iterable of strings
See also
EXAMPLES:
sage: U3 = AssionGroupU(3); U3 Assion group on 3 strands of type U sage: U3x = CubicBraidGroup(3, names='u', cbg_type=CubicBraidGroup.type.AssionU); U3x Assion group on 3 strands of type U sage: U3 == U3x True
- class sage.groups.cubic_braid.CubicBraidElement(parent, x, check=True)#
Bases:
FinitelyPresentedGroupElement
Elements of cubic factor groups of the braid group.
For more information see
CubicBraidGroup
.EXAMPLES:
sage: C4.<c1, c2, c3> = CubicBraidGroup(4); C4 Cubic Braid group on 4 strands sage: ele1 = c1*c2*c3^-1*c2^-1 sage: ele2 = C4((1, 2, -3, -2)) sage: ele1 == ele2 True
- braid()#
Return the canonical braid preimage of
self
as aBraid
.EXAMPLES:
sage: C3.<c1, c2> = CubicBraidGroup(3) sage: c1.parent() Cubic Braid group on 3 strands sage: c1.braid().parent() Braid group on 3 strands
- burau_matrix(root_bur=None, domain=None, characteristic=None, var='t', reduced=False)#
Return the Burau matrix of the cubic braid coset.
This method uses the same method belonging to
Braid
, but reduces the indeterminate to a primitive sixth (resp. twelfth in casereduced='unitary'
) root of unity.INPUT (all arguments are optional keywords):
root_bur
– six (resp. twelfth) root of unity in some field (default: root of unity over \(\QQ\))domain
– (default: cyclotomic field of order 3 and degree 2, resp. the domain of \(root_bur\) if given) base ring for the Burau matrixcharacteristic
– integer giving the characteristic of the domain (default: 0 or the characteristic ofdomain
if given)var
– string used for the indeterminate name in caseroot_bur
must be constructed in a splitting fieldreduced
– boolean or string (default:False
); for more information see the documentation ofburau_matrix()
ofBraid
OUTPUT:
The Burau matrix of the cubic braid coset with entries in the domain given by the options. In case the option
reduced='unitary'
is given a triple consisting of the Burau matrix, its adjoined and the Hermitian form is returned.EXAMPLES:
sage: C3.<c1, c2> = CubicBraidGroup(3) sage: ele = c1*c2*c1 sage: BuMa = ele.burau_matrix(); BuMa [ -zeta3 1 zeta3] [ -zeta3 zeta3 + 1 0] [ 1 0 0] sage: BuMa.base_ring() Cyclotomic Field of order 3 and degree 2 sage: BuMa == ele.burau_matrix(characteristic = 0) True sage: BuMa = ele.burau_matrix(domain=QQ); BuMa [-t + 1 1 t - 1] [-t + 1 t 0] [ 1 0 0] sage: BuMa.base_ring() Number Field in t with defining polynomial t^2 - t + 1 sage: BuMa = ele.burau_matrix(domain = QQ[I, sqrt(3)]); BuMa [ 1/2*sqrt3*I + 1/2 1 -1/2*sqrt3*I - 1/2] [ 1/2*sqrt3*I + 1/2 -1/2*sqrt3*I + 1/2 0] [ 1 0 0] sage: BuMa.base_ring() Number Field in I with defining polynomial x^2 + 1 over its base field sage: BuMa = ele.burau_matrix(characteristic=7); BuMa [3 1 4] [3 5 0] [1 0 0] sage: BuMa.base_ring() Finite Field of size 7 sage: BuMa = ele.burau_matrix(characteristic=2); BuMa [t + 1 1 t + 1] [t + 1 t 0] [ 1 0 0] sage: BuMa.base_ring() Finite Field in t of size 2^2 sage: F4.<r64> = GF(4) sage: BuMa = ele.burau_matrix(root_bur=r64); BuMa [r64 + 1 1 r64 + 1] [r64 + 1 r64 0] [ 1 0 0] sage: BuMa.base_ring() Finite Field in r64 of size 2^2 sage: BuMa = ele.burau_matrix(domain=GF(5)); BuMa [2*t + 2 1 3*t + 3] [2*t + 2 3*t + 4 0] [ 1 0 0] sage: BuMa.base_ring() Finite Field in t of size 5^2 sage: BuMa, BuMaAd, H = ele.burau_matrix(reduced='unitary'); BuMa [ 0 zeta12^3] [zeta12^3 0] sage: BuMa * H * BuMaAd == H True sage: BuMa.base_ring() Cyclotomic Field of order 12 and degree 4 sage: BuMa, BuMaAd, H = ele.burau_matrix(domain = QQ[I, sqrt(3)], reduced='unitary'); BuMa [0 I] [I 0] sage: BuMa.base_ring() Number Field in I with defining polynomial x^2 + 1 over its base field
- class sage.groups.cubic_braid.CubicBraidGroup(names, cbg_type=None)#
Bases:
FinitelyPresentedGroup
Factor groups of the Artin braid group mapping their generators to elements of order 3.
These groups are implemented as a particular case of finitely presented groups similar to the
BraidGroup_class
.A cubic braid group can be created by giving the number of strands, and the name of the generators in a similar way as it works for the
BraidGroup_class
.INPUT:
names
– see the corresponding documentation ofBraidGroup_class
.cbg_type
– (default:CubicBraidGroup.type.Coxeter
; see explanation below) enum typeCubicBraidGroup.type
Setting the keyword
cbg_type
to one on the valuesCubicBraidGroup.type.AssionS
orCubicBraidGroup.type.AssionU
, the additional relations due to Assion are added:\[\begin{split}\begin{array}{lll} \mbox{S:} & s_3 s_1 t_2 s_1 t_2^{-1} t_3 t_2 s_1 t_2^{-1} t_3^{-1} = 1 & \mbox{ for } m >= 5 \mbox{ in case } S(m), \\ \mbox{U:} & t_1 t_3 = 1 & \mbox{ for } m >= 5 \mbox{ in case } U(m), \end{array}\end{split}\]where \(t_i = (s_i s_{i+1})^3\). If
cbg_type == CubicBraidGroup.type.Coxeter
(default) only the cubic relation on the generators is active (Coxeter’s case of investigation). Note that for \(n = 2, 3, 4\), the groups do not differ between the three possible values ofcbg_type
(as finitely presented groups). However, theCubicBraidGroup.type.Coxeter
,CubicBraidGroup.type.AssionS
andCubicBraidGroup.type.AssionU
are different, so they have different classical realizations implemented.See also
Instances can also be constructed more easily by using
CubicBraidGroup()
,AssionGroupS()
andAssionGroupU()
.EXAMPLES:
sage: U3 = CubicBraidGroup(3, cbg_type=CubicBraidGroup.type.AssionU); U3 Assion group on 3 strands of type U sage: U3.gens() (c0, c1)
Alternative possibilities defining
U3
:sage: U3 = AssionGroupU(3); U3 Assion group on 3 strands of type U sage: U3.gens() (u0, u1) sage: U3.<u1,u2> = AssionGroupU(3); U3 Assion group on 3 strands of type U sage: U3.gens() (u1, u2)
Alternates naming the generators:
sage: U3 = AssionGroupU(3, 'a, b'); U3 Assion group on 3 strands of type U sage: U3.gens() (a, b) sage: C3 = CubicBraidGroup(3, 't'); C3 Cubic Braid group on 3 strands sage: C3.gens() (t0, t1) sage: U3.is_isomorphic(C3) #I Forcing finiteness test True sage: U3.as_classical_group() Subgroup generated by [(1,7,6)(3,19,14)(4,15,10)(5,11,18)(12,16,20), (1,12,13)(2,15,19)(4,9,14)(5,18,8)(6,21,16)] of (The projective general unitary group of degree 3 over Finite Field of size 2) sage: C3.as_classical_group() Subgroup with 2 generators ( [ E(3)^2 0] [ 1 -E(12)^7] [-E(12)^7 1], [ 0 E(3)^2] ) of General Unitary Group of degree 2 over Universal Cyclotomic Field with respect to positive definite hermitian form [-E(12)^7 + E(12)^11 -1] [ -1 -E(12)^7 + E(12)^11]
REFERENCES:
- Element#
alias of
CubicBraidElement
- as_classical_group(embedded=False)#
Create an isomorphic image of
self
as a classical group according to the construction given by Coxeter resp. Assion.INPUT:
embedded
– boolean (default:False
); this boolean effects the cases of Assion groups when they are realized as projective groups only. More precisely: ifself
is ofcbg_type CubicBraidGroup.type.AssionS
(for example) and the number of strandsn
is even, than its classical group is a subgroup ofPSp(n,3)
(being centralized by the elementself.centralizing_element(projective=True))
. By default this group will be given. Settingembedded = True
the classical realization is given as subgroup of its classical enlargement with one more strand (in this case as subgroup ofSp(n,3))
.
OUTPUT:
Depending on the type of
self
and the number of strands an instance ofSp(n-1,3)
,GU(n-1,2)
, subgroup ofPSp(n,3)
,PGU(n,2)
, or a subgroup ofGU(n-1, UCF)
(cbg_type == CubicBraidGroup.type.Coxeter
) with respect to a certain Hermitian form attached to the Burau representation (used by Coxeter and Squier). HereUCF
stands for the universal cyclotomic field.EXAMPLES:
sage: U3 = AssionGroupU(3) sage: U3Cl = U3.as_classical_group(); U3Cl Subgroup generated by [(1,7,6)(3,19,14)(4,15,10)(5,11,18)(12,16,20), (1,12,13)(2,15,19)(4,9,14)(5,18,8)(6,21,16)] of (The projective general unitary group of degree 3 over Finite Field of size 2) sage: U3Clemb = U3.as_classical_group(embedded=True); U3Clemb Subgroup with 2 generators ( [0 0 a] [a + 1 a a] [0 1 0] [ a a + 1 a] [a 0 a], [ a a a + 1] ) of General Unitary Group of degree 3 over Finite Field in a of size 2^2 sage: u = U3([-2,1,-2,1]); u (u1^-1*u0)^2 sage: uCl = U3Cl(u); uCl (1,16)(2,9)(3,10)(4,19)(6,12)(7,20)(13,21)(14,15) sage: uCle = U3Clemb(u); uCle [a + 1 a + 1 1] [a + 1 0 a] [ 1 a a] sage: U3(uCl) == u True sage: U3(uCle) == u True sage: U4 = AssionGroupU(4) sage: U4Cl = U4.as_classical_group(); U4Cl General Unitary Group of degree 3 over Finite Field in a of size 2^2 sage: U3Clemb.ambient() == U4Cl True sage: C4 = CubicBraidGroup(4) sage: C4Cl = C4.as_classical_group(); C4Cl Subgroup with 3 generators ( [ E(3)^2 0 0] [ 1 -E(12)^7 0] [-E(12)^7 1 0] [ 0 E(3)^2 0] [ 0 0 1], [ 0 -E(12)^7 1], [ 1 0 0] [ 0 1 -E(12)^7] [ 0 0 E(3)^2] ) of General Unitary Group of degree 3 over Universal Cyclotomic Field with respect to positive definite hermitian form [-E(12)^7 + E(12)^11 -1 0] [ -1 -E(12)^7 + E(12)^11 -1] [ 0 -1 -E(12)^7 + E(12)^11]
- as_matrix_group(root_bur=None, domain=None, characteristic=None, var='t', reduced=False)#
Creates an epimorphic image of
self
as a matrix group by use of the burau representation.INPUT:
root_bur
– (default: root of unity over \(\QQ\)) six (resp. twelfth) root of unity in some fielddomain
– (default: cyclotomic field of order 3 and degree 2, resp. the domain ofroot_bur
if given) base ring for the Burau matrixcharacteristic
– integer (optional); the characteristic of the domain; if none of the keywordsroot_bur
,domain
andcharacteristic
are given, the default characteristic is 3 (resp. 2) ifself
is ofcbg_type
CubicBraidGroup.type.AssionS
(resp.CubicBraidGroup.type.AssionU
)var
– string used for the indeterminate name in caseroot_bur
must be constructed in a splitting fieldreduced
– boolean (default:False
); for more information see the documentation ofBraid.burau_matrix()
EXAMPLES:
sage: C5 = CubicBraidGroup(5) sage: C5Mch5 = C5.as_matrix_group(characteristic=5); C5Mch5 Matrix group over Finite Field in t of size 5^2 with 4 generators ( [2*t + 2 3*t + 4 0 0 0] [ 1 0 0 0 0] [ 0 0 1 0 0] [ 0 0 0 1 0] [ 0 0 0 0 1], [ 1 0 0 0 0] [ 0 2*t + 2 3*t + 4 0 0] [ 0 1 0 0 0] [ 0 0 0 1 0] [ 0 0 0 0 1], [ 1 0 0 0 0] [ 0 1 0 0 0] [ 0 0 2*t + 2 3*t + 4 0] [ 0 0 1 0 0] [ 0 0 0 0 1], [ 1 0 0 0 0] [ 0 1 0 0 0] [ 0 0 1 0 0] [ 0 0 0 2*t + 2 3*t + 4] [ 0 0 0 1 0] ) sage: c = C5([3,4,-2,-3,1]); c c2*c3*c1^-1*c2^-1*c0 sage: m = C5Mch5(c); m [2*t + 2 3*t + 4 0 0 0] [ 0 0 0 1 0] [2*t + 1 0 2*t + 2 3*t 3*t + 3] [2*t + 2 0 0 3*t + 4 0] [ 0 0 2*t + 2 3*t + 4 0] sage: m_back = C5(m) sage: m_back == c True sage: U5 = AssionGroupU(5); U5 Assion group on 5 strands of type U sage: U5Mch3 = U5.as_matrix_group(characteristic=3) Traceback (most recent call last): ... ValueError: Burau representation does not factor through the relations
- as_permutation_group(use_classical=True)#
Return a permutation group isomorphic to
self
that has a group isomorphism fromself
as a conversion.INPUT:
use_classical
– boolean (default:True
); the permutation group is calculated via the attached classical matrix group as this results in a smaller degree; ifFalse
, the permutation group will be calculated usingself
(as finitely presented group)
EXAMPLES:
sage: C3 = CubicBraidGroup(3) sage: PC3 = C3.as_permutation_group() sage: assert C3.is_isomorphic(PC3) # random (with respect to the occurrence of the info message) #I Forcing finiteness test sage: PC3.degree() 8 sage: c = C3([2,1-2]) sage: C3(PC3(c)) == c True
- as_reflection_group()#
Return an isomorphic image of
self
as irreducible complex reflection group.This is possible only for the finite cubic braid groups of
cbg_type
CubicBraidGroup.type.Coxeter
.Note
This method uses the sage implementation of reflection group via the
gap3
CHEVIE
package. These must be installed in order to use this method.EXAMPLES:
sage: C3.<c1,c2> = CubicBraidGroup(3) # optional - gap3 sage: R3 = C3.as_reflection_group(); R3 # optional - gap3 Irreducible complex reflection group of rank 2 and type ST4 sage: R3.cartan_matrix() # optional - gap3 [-2*E(3) - E(3)^2 E(3)^2] [ -E(3)^2 -2*E(3) - E(3)^2] sage: R3.simple_roots() # optional - gap3 Finite family {1: (0, -2*E(3) - E(3)^2), 2: (2*E(3)^2, E(3)^2)} sage: R3.simple_coroots() # optional - gap3 Finite family {1: (0, 1), 2: (1/3*E(3) - 1/3*E(3)^2, 1/3*E(3) - 1/3*E(3)^2)}
Conversion maps:
sage: r = R3.an_element() # optional - gap3 sage: cr = C3(r); cr # optional - gap3 c1*c2 sage: mr = r.matrix(); mr # optional - gap3 [ 1/3*E(3) - 1/3*E(3)^2 2/3*E(3) + 1/3*E(3)^2] [-2/3*E(3) + 2/3*E(3)^2 2/3*E(3) + 1/3*E(3)^2] sage: C3Cl = C3.as_classical_group() # optional - gap3 sage: C3Cl(cr) # optional - gap3 [ E(3)^2 -E(4)] [-E(12)^7 0] The reflection groups can also be viewed as subgroups of unitary groups over the universal cyclotomic field. Note that the unitary group corresponding to the reflection group is isomorphic but different from the classical group due to different hermitian forms for the unitary groups they live in:: sage: C4 = CubicBraidGroup(4) # optional - gap3 sage: R4 = C4.as_reflection_group() # optional - gap3 sage: R4.invariant_form() # optional - gap3 [1 0 0] [0 1 0] [0 0 1] sage: _ == C4.classical_invariant_form() # optional - gap3 False
- braid_group()#
Return a
BraidGroup
with identical generators, such that there exists an epimorphism toself
.OUTPUT:
A
BraidGroup
having conversion maps to and fromself
(which is just a section in the latter case).EXAMPLES:
sage: U5 = AssionGroupU(5); U5 Assion group on 5 strands of type U sage: B5 = U5.braid_group(); B5 Braid group on 5 strands sage: b = B5([4,3,2,-4,1]) sage: u = U5([4,3,2,-4,1]) sage: u == b False sage: b.burau_matrix() [ 1 - t t 0 0 0] [ 1 - t 0 t 0 0] [ 1 - t 0 0 0 t] [ 1 - t 0 0 1 -1 + t] [ 1 0 0 0 0] sage: u.burau_matrix() [t + 1 t 0 0 0] [t + 1 0 t 0 0] [t + 1 0 0 0 t] [t + 1 0 0 1 t + 1] [ 1 0 0 0 0] sage: bU = U5(b) sage: uB = B5(u) sage: bU == u True sage: uB == b True
- cardinality()#
To avoid long wait-time on calculations the order will be obtained using the classical realization.
OUTPUT:
Cardinality of the group as Integer or infinity.
EXAMPLES:
sage: S15 = AssionGroupS(15) sage: S15.order() 109777561863482259035023554842176139436811616256000 sage: C6 = CubicBraidGroup(6) sage: C6.order() +Infinity
- centralizing_element(embedded=False)#
Return the centralizing element defined by the work of Assion (Hilfssatz 1.1.3 and 1.2.3).
INPUT:
embedded
– boolean (default;False
); this boolean only effects the cases of Assion groups when they are realized as projective groups. More precisely: ifself
is ofcbg_type CubicBraidGroup.type.AssionS
(for example) and the number of strandsn
is even, than its classical group is a subgroup ofPSp(n,3)
being centralized by the element return for optionembedded=False
. Otherwise the image of this element inside the embedded classical group will be returned (see option embedded ofclassical_group()
).
OUTPUT:
Depending on the optional keyword a permutation as an element of
PSp(n,3)
(type S) orPGU(n,2)
(type U) forn = 0 mod 2
(type S) resp.n = 0 mod 3
(type U) is returned. Otherwise, the centralizing element is a matrix belonging toSp(n,3)
resp.GU(n,2)
.EXAMPLES:
sage: U3 = AssionGroupU(3); U3 Assion group on 3 strands of type U sage: U3Cl = U3.as_classical_group(); U3Cl Subgroup generated by [(1,7,6)(3,19,14)(4,15,10)(5,11,18)(12,16,20), (1,12,13)(2,15,19)(4,9,14)(5,18,8)(6,21,16)] of (The projective general unitary group of degree 3 over Finite Field of size 2) sage: c = U3.centralizing_element(); c (1,16)(2,9)(3,10)(4,19)(6,12)(7,20)(13,21)(14,15) sage: c in U3Cl True sage: P = U3Cl.ambient_group() sage: P.centralizer(c) == U3Cl True
Embedded version:
sage: cm = U3.centralizing_element(embedded=True); cm [a + 1 a + 1 1] [a + 1 0 a] [ 1 a a] sage: U4 = AssionGroupU(4) sage: U4Cl = U4.as_classical_group() sage: cm in U4Cl True sage: [cm * U4Cl(g) == U4Cl(g) * cm for g in U4.gens()] [True, True, False]
- classical_invariant_form()#
Return the invariant form of the classical realization of
self
.OUTPUT:
A square matrix of dimension according to the space the classical realization is operating on. In the case of the full cubic braid groups and of the Assion groups of
cbg_type CubicBraidGroup.type.AssionU
the matrix is Hermitian. In the case of the Assion groups ofcbg_type CubicBraidGroup.type.AssionS
it is alternating. Note that the invariant form of the full cubic braid group on more than 5 strands is degenerated (causing the group to be infinite).In the case of Assion groups having projective classical groups, the invariant form corresponds to the ambient group of its classical embedding.
EXAMPLES:
sage: S3 = AssionGroupS(3) sage: S3.classical_invariant_form() [0 1] [2 0] sage: S4 = AssionGroupS(4) sage: S4.classical_invariant_form() [0 0 0 1] [0 0 1 0] [0 2 0 0] [2 0 0 0] sage: S5 = AssionGroupS(5) sage: S4.classical_invariant_form() == S5.classical_invariant_form() True sage: U4 = AssionGroupU(4) sage: U4.classical_invariant_form() [0 0 1] [0 1 0] [1 0 0] sage: C5 = CubicBraidGroup(5) sage: C5.classical_invariant_form() [-E(12)^7 + E(12)^11 -1 0 0] [ -1 -E(12)^7 + E(12)^11 -1 0] [ 0 -1 -E(12)^7 + E(12)^11 -1] [ 0 0 -1 -E(12)^7 + E(12)^11] sage: _.is_singular() False sage: C6 = CubicBraidGroup(6) sage: C6.classical_invariant_form().is_singular() True
- codegrees()#
Return the codegrees of
self
.This only makes sense when
self
is a finite reflection group.EXAMPLES:
sage: CubicBraidGroup(5).codegrees() (0, 6, 12, 18)
- cubic_braid_subgroup(nstrands=None)#
Return a cubic braid group as subgroup of
self
on the firstnstrands
strands.INPUT:
nstrands
– (default:self.strands() - 1
) integer at least 1 and at mostself.strands()
giving the number of strands of the subgroup
Warning
Since
self
is inherited fromUniqueRepresentation
, the obtained instance is identical to other instances created with the same arguments (see example below). The ambient group corresponds to the last call of this method.EXAMPLES:
sage: U5 = AssionGroupU(5) sage: U3s = U5.cubic_braid_subgroup(3) sage: u1, u2 = U3s.gens() sage: u1 in U5 False sage: U5(u1) in U5.gens() True sage: U3s is AssionGroupU(3) True sage: U3s.ambient() == U5 True
- degrees()#
Return the degrees of
self
.This only makes sense when
self
is a finite reflection group.EXAMPLES:
sage: CubicBraidGroup(4).degrees() (6, 9, 12)
- index_set()#
Return the index set of
self
.This is the set of integers \(0,\dots,n-2\) where \(n\) is the number of strands.
This is only used when
self
is a finite reflection group.EXAMPLES:
sage: CubicBraidGroup(3).index_set() [0, 1]
- is_finite()#
Return if
self
is a finite group or not.EXAMPLES:
sage: CubicBraidGroup(6).is_finite() False sage: AssionGroupS(6).is_finite() True
- order()#
To avoid long wait-time on calculations the order will be obtained using the classical realization.
OUTPUT:
Cardinality of the group as Integer or infinity.
EXAMPLES:
sage: S15 = AssionGroupS(15) sage: S15.order() 109777561863482259035023554842176139436811616256000 sage: C6 = CubicBraidGroup(6) sage: C6.order() +Infinity
- simple_reflections()#
Return the generators of
self
.This is only used when
self
is a finite reflection group.EXAMPLES:
sage: CubicBraidGroup(3).simple_reflections() (c0, c1)
- strands()#
Return the number of strands of the braid group whose image is
self
.OUTPUT:
Integer
EXAMPLES:
sage: C4 = CubicBraidGroup(4) sage: C4.strands() 4
- class type(value)#
Bases:
Enum
Enum class to select the type of the group:
Coxeter
–'C'
the full cubic braid group.AssionS
–'S'
finite factor group of type S considered by AssionAssionU
–'U'
finite factor group of type U considered by Assion
EXAMPLES:
sage: S2 = CubicBraidGroup(2, cbg_type=CubicBraidGroup.type.AssionS); S2 Assion group on 2 strands of type S sage: U3 = CubicBraidGroup(2, cbg_type='U') Traceback (most recent call last): ... TypeError: the cbg_type must be an instance of <enum 'CubicBraidGroup.type'>
- AssionS = 'S'#
- AssionU = 'U'#
- Coxeter = 'C'#