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, \cdot , 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).
This class implements all the groups considered by Coxeter and Assion as
finitely presented groups together with the classical realizations given
by the authors. It also contains the conversion maps between the two ways
of realization. In addition the user 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. The methods for all this functionality are
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 as instance of
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'
.For more information type
CubicBraidGroup?
INPUT:
n
– integer or None (default). The number of strands. This argument is passed to the corresponding argument of the classcall ofCubicBraidGroup
.names
– string or list/tuple/iterable of strings (default:’s’). This argument is passed to the corresponding argument of the classcall ofCubicBraidGroup
.
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'
.For more information type
CubicBraidGroup?
INPUT:
n
– integer or None (default). The number of strands. This argument is passed to the corresponding argument of the classcall ofCubicBraidGroup
.names
– string or list/tuple/iterable of strings (default:’u’). This argument is passed to the corresponding argument of the classcall ofCubicBraidGroup
.
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:
sage.groups.finitely_presented.FinitelyPresentedGroupElement
This class models elements of cubic factor groups of the braid group. It is the element class of the CubicBraidGroup.
For more information see the documentation of the parent
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 Object of the classBraid
.OUTPUT:
The preimage of
self
as instance ofBraid
.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 case reduced=’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
– base_ring for the Burau matrix (default is Cyclotomic Field of order 3 and degree 2, resp. the domain of \(root_bur\) if given).characteristic
- integer giving the characteristic of the domain (default is 0 or the characteristic of \(domain\) if given).var
– string used for the indeterminate name in case root_bur must be constructed in a splitting field.reduced
– boolean (default:False
) or string; 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:
sage.groups.finitely_presented.FinitelyPresentedGroup
This class implements factor groups of the Artin braid group mapping their generators to elements of order 3 (see the module header for more information on these groups).
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 (to the constructor):
names
– see the corresponding documentation ofBraidGroup_class
.cbg_type
– (optional keyword, default = CubicBraidGroup.type.Coxeter, see explanation below) of 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 of cbg_type (as finitely presented groups). But anyway, the instances forCubicBraidGroup.type.Coxeter, CubicBraidGroup.type.AssionS
andCubicBraidGroup.type.AssionU
are different, since they have different classical realizations implemented.The creation of instances of this class can also be done more easily by help of
CubicBraidGroup()
,AssionGroupS()
andAssionGroupU()
(similar toBraidGroup()
with respect toBraidGroup_class
).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)¶
Creates an isomorphic image of
self
as a classical group according to the construction given by Coxeter resp. Assion.INPUT (optional keyword):
embedded
– boolean (default = False). This boolean does effect 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 (all arguments are optional by keyword):
root_bur
– six (resp. twelfth) root of unity in some field (default root of unity over \(\QQ\)).domain
– base_ring for the Burau matrix (default is Cyclotomic Field of order 3 and degree 2, resp. the domain of \(root_bur\) if given).characteristic
- integer giving the characteristic of the domain (default is 0 or the characteristic of \(domain\) if given) If none of the keywords \(root_bur\), \(domain\) and \(characteristic\) is 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 case \(root_bur\) must be constructed in a splitting field.reduced
– boolean (default:False
); for more information see the documentation ofburau_matrix()
ofBraid
.
OUTPUT:
An instance of the class
FinitelyGeneratedMatrixGroup_gap
according to the input arguments together with a group homomorphism registered as a conversion fromself
to it.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)¶
This method returns a permutation group isomorphic to
self
together with group isomorphism fromself
as a conversion.INPUT (all arguments are optional by keyword):
use_classical
– (boolean, default True) by default the permutation group is calculated via the attached classical matrix group, since this results in a smaller degree. If set to False the permutation group will be calculated usingself
(as finitely presented group).
OUTPUT:
An instance of class
PermutationGroup_generic
together with a group homomorphism fromself
registered as a conversion.EXAMPLES:
sage: C3 = CubicBraidGroup(3) sage: PC3 = C3.as_permutation_group() sage: C3.is_isomorphic(PC3) #I Forcing finiteness test True sage: PC3.degree() 8 sage: c = C3([2,1-2]) sage: C3(PC3(c)) == c True
- as_reflection_group()¶
Creates an isomorphic image of
self
as irreducible complex reflection group. This is possible only for the finite cubic braid groups ofcbg_type CubicBraidGroup.type.Coxeter
.This method uses the sage implementation of reflection group via the gap3 CHEVIE package. To use this method you must have gap3 together with CHEVIE installed!
OUTPUT:
An instance of the class
IrreducibleComplexReflectionGroup
together with a group isomorphism fromself
registered as a conversion.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 an Instance of
BraidGroup
with identical generators, such that there exists an epimorphism toself
.OUTPUT:
Instance of
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 (optional):
embedded
– boolean (default = False). This boolean just 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) reps.n = 0 mod 3
(type U) is returned. Else-wise, the centralizing element is a matrix belonging toSp(n,3)
reps.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
- cubic_braid_subgroup(nstrands=None)¶
Creates a cubic braid group as subgroup of
self
on the firstnstrands
strands.INPUT:
nstrands
– integer > 0 and <self.strands()
giving the number of strands for the subgroup. The default is one strand less thanself
has.
OUTPUT:
An instance of this class realizing the subgroup.
Note
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
- is_finite()¶
Method from
GroupMixinLibGAP
overwritten because of performance reason.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
- 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¶
Bases:
enum.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 Assion.AssionU
– ‘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'>