| Hosted by CoCalc | Download
1
% generated by smc-sagews2pdf -- 2017-03-18 21:04:35.012732
2
\documentclass[
3
paper=A4,
4
pagesize,
5
fontsize=11pt,
6
%headings=small,
7
titlepage=false,
8
fleqn,
9
toc=flat,
10
bibliography=totoc, %totocnumbered,
11
index=totoc,
12
listof=flat]{scrartcl}
13
\usepackage{scrhack}
14
\setuptoc{toc}{leveldown}
15
16
\usepackage[utf8x]{inputenc}
17
\usepackage[T1]{fontenc}
18
\usepackage{xltxtra} % xelatex
19
20
\usepackage[
21
left=3cm,
22
right=2cm,
23
top=2cm,
24
bottom=2cm,
25
includeheadfoot]{geometry}
26
\usepackage[automark,headsepline,ilines,komastyle]{scrpage2}
27
\pagestyle{scrheadings}
28
29
\usepackage{fixltx2e}
30
31
\raggedbottom
32
33
% font tweaks
34
\usepackage{ellipsis,ragged2e,marginnote}
35
\usepackage{inconsolata}
36
\renewcommand{\familydefault}{\sfdefault}
37
\setkomafont{sectioning}{\normalcolor\bfseries}
38
\setkomafont{disposition}{\normalcolor\bfseries}
39
40
\usepackage{mathtools}
41
\mathtoolsset{showonlyrefs=true}
42
\usepackage{amssymb}
43
\usepackage{sfmath}
44
45
\usepackage[USenglish]{babel}
46
\usepackage{etoolbox}
47
\usepackage{url}
48
\usepackage{hyperref}
49
50
% use includegraphics directly, but beware, that this is actually ...
51
\usepackage{graphicx}
52
% ... adjust box! http://latex-alive.tumblr.com/post/81481408449
53
\usepackage[Export]{adjustbox}
54
\adjustboxset{max size={\textwidth}{0.7\textheight}}
55
56
\usepackage{textcomp}
57
\def\leftqquote{``}\def\rightqqoute{''}
58
\catcode`\"=13
59
\def"{\bgroup\def"{\rightqqoute\egroup}\leftqquote}
60
61
\makeatletter
62
\preto{\@verbatim}{\topsep=0pt \partopsep=0pt }
63
\makeatother
64
65
\usepackage{color}
66
\definecolor{midgray}{rgb}{0.5,0.5,0.5}
67
\definecolor{lightyellow}{rgb}{1,1,.92}
68
\definecolor{dblackcolor}{rgb}{0.0,0.0,0.0}
69
\definecolor{dbluecolor}{rgb}{.01,.02,0.7}
70
\definecolor{dredcolor}{rgb}{1,0,0}
71
\definecolor{dbrowncolor}{rgb}{0.625,0.3125,0}
72
\definecolor{dgraycolor}{rgb}{0.30,0.3,0.30}
73
\definecolor{graycolor}{rgb}{0.35,0.35,0.35}
74
75
\usepackage{listings}
76
\lstdefinelanguage{Sage}[]{Python}
77
{morekeywords={True,False,sage,singular},
78
sensitive=true}
79
\lstset{
80
showtabs=False,
81
showspaces=False,
82
showstringspaces=False,
83
commentstyle={\ttfamily\color{dbrowncolor}},
84
keywordstyle={\ttfamily\color{dbluecolor}\bfseries},
85
stringstyle ={\ttfamily\color{dgraycolor}\bfseries},
86
numberstyle ={\tiny\color{midgray}},
87
backgroundcolor=\color{lightyellow},
88
language = Sage,
89
basicstyle={\ttfamily},
90
extendedchars=true,
91
keepspaces=true,
92
aboveskip=1em,
93
belowskip=0.1em,
94
breaklines=true,
95
prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\backslash}},
96
%frame=single
97
}
98
99
% sagemath macros
100
\newcommand{\Bold}[1]{\mathbb{#1}}
101
\newcommand{\ZZ}{\Bold{Z}}
102
\newcommand{\NN}{\Bold{N}}
103
\newcommand{\RR}{\Bold{R}}
104
\newcommand{\CC}{\Bold{C}}
105
\newcommand{\FF}{\Bold{F}}
106
\newcommand{\QQ}{\Bold{Q}}
107
\newcommand{\QQbar}{\overline{\QQ}}
108
\newcommand{\CDF}{\Bold{C}}
109
\newcommand{\CIF}{\Bold{C}}
110
\newcommand{\CLF}{\Bold{C}}
111
\newcommand{\RDF}{\Bold{R}}
112
\newcommand{\RIF}{\Bold{I} \Bold{R}}
113
\newcommand{\RLF}{\Bold{R}}
114
\newcommand{\CFF}{\Bold{CFF}}
115
\newcommand{\GF}[1]{\Bold{F}_{#1}}
116
\newcommand{\Zp}[1]{\ZZ_{#1}}
117
\newcommand{\Qp}[1]{\QQ_{#1}}
118
\newcommand{\Zmod}[1]{\ZZ/#1\ZZ}
119
120
% mathjax has \lt and \gt
121
\newcommand{\lt}{<}
122
\newcommand{\gt}{>}
123
% also support HTML's &le; and &ge;
124
\newcommand{\lequal}{}
125
\newcommand{\gequal}{}
126
\newcommand{\notequal}{}
127
128
% defining utf8 characters for listings
129
\lstset{literate=
130
{á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
131
{Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
132
{à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
133
{À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
134
{ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
135
{Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
136
{â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
137
{Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
138
{œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
139
{ã}{{\~a}}1 {Ã}{{\~A}}1 {õ}{{\~o}}1 {Õ}{{\~O}}1
140
{ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
141
{}{{\EUR}}1 {£}{{\pounds}}1
142
}
143
144
\title{Introduction to the CubicBraidGroup class}
145
\author{Sebastian Oehms}
146
\date{18.3.2017}
147
\begin{document}
148
\maketitle
149
\tableofcontents
150
\begin{lstlisting}
151
\end{lstlisting}\section{Using the CubicBraidGroup class}
152
153
\subsection{Introduction}
154
155
156
157
{This module is devoted to factor groups of the Artin braid groups, such that the images $s_i$ of the braid generators
158
have order three:}
159
160
161
162
{$$ s_i^3 = 1 $$}
163
164
165
166
{In general these groups have firstly been investigated by Coxeter, H.S.M in: ``Factor groups of the braid groups, Proceedings of the Fourth Candian Mathematical Congress (Vancover 1957), pp. 95-122''.}
167
168
169
170
{Coxeter showed, that these groups are finite as long as the number of strands is less than 6 and infinite elsewise. More explicitely 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$. 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).}
171
172
173
174
{In ``Einige endliche Faktorgruppen der Zopfgruppen'' (Math. Z., 163 (1978), 291-302) J. Assion considered two series $S(m)$ and $U(m)$ of finite dimensional factors of these groups. The additional relations on the braid group generators $\{ s_1, \cdots , s_{m-1}\}$ are}
175
176
177
178
{$$ \begin{array}{rllll}
179
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 of} & S(m) \\
180
t_1 t_3 = 1 & \mbox{ for } & m >= 5 & \mbox{ in case of } & U(m)
181
\end{array} $$}
182
183
184
185
{where $t_i = (s_i s_{i+1})^3$. He showed that each series of finite cubic braid group factors must be an epimorhic 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).}
186
187
188
189
{This class implements all the groups conidered by Coxeter and Assion as finitely presented groups (via the gap interface) together with the classical realizations given by the authors. It also contains the coercion maps between the two ways of
190
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 under sage version 7.2 (or later) the reflection groups via the gap3
191
interface are availlable, too. The methods for all this functionality are:}
192
193
\begin{itemize}
194
\item{as\_classical\_group}
195
\item{as\_matrix\_group}
196
\item{as\_reflection\_group (needs sage version 7.2 up and gap3 + CHEVIE)}
197
\item{as\_permutation\_group}
198
\end{itemize}
199
200
201
202
{Further methods are:}
203
204
\begin{itemize}
205
\item{order }
206
\item{pre\_image\_braid\_group}
207
\item{cubic\_braid\_subgroup}
208
\item{character\_table}
209
\end{itemize}
210
211
212
213
{AUTHOR}
214
215
216
217
{Sebastian Oehms, Sept. 2016}
218
219
\begin{lstlisting}
220
\end{lstlisting}\subsection{Getting started}
221
222
223
224
{The CubicBraidGroup class is not integrated into the sage library, right now. If you are using sage on your own computer you may install the CubicBraidGoup class following the README.txt file
225
To use the CubicBraidGroup on this plattform you can create a jupyter notebook or a sage worksheet (like this) and start with a cell containing the first line of this:}
226
227
\begin{lstlisting}
228
%auto
229
from cubic_braid import *
230
\end{lstlisting}
231
\begin{lstlisting}
232
\end{lstlisting}
233
234
{To execute the command you must click on the ``play'' symbol (\gt |) above (instead of carriage return key in a shell sessiion)}
235
236
237
238
{On your own computer in a command-line sage-session you must start with this line, as well. For further information on how to get started see the README.txt-File.}
239
240
241
242
{The general documentation concerning the CubicBraidGroup class can be shown using the following command.}
243
244
\begin{lstlisting}
245
print CubicBraidGroup_class.__doc__
246
\end{lstlisting}\begin{verbatim}
247
Class to handel cubic factors of braid group on n strands
248
249
If you don't see this well formated type
250
251
sage: print CubicBraidGroup_class.__doc__
252
253
This class implements quotient groups of the braid group mapping their generators to
254
elements of order 3
255
(see the module header for more informations on these groups)
256
257
These groups are implemented as a particular case of finitely presented groups similar
258
to the BraidGroup class
259
260
A cubic braid group can be created by giving the number of strands, and the name of
261
the generators in a similar
262
way as it works for the BraidGroup class.
263
264
INPUT (to the constructor):
265
266
- "names": (see the BraidGroup_class docomentation)
267
268
- "AdditionalRelation": (keyword, explantaion see below)
269
270
- "verbose": (keyword, explantaion see below)
271
272
273
RAISE (on init):
274
275
- ValueError: "the number of strands must be an integer larger than one"
276
277
278
Setting the keyword 'AdditionalRelation' to one on the values 'S' or 'U' the
279
additional relations due to
280
Assion are added:
281
282
'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$ for $m >= 5$
283
'U': $t_1 t_3 = 1$ for $m >= 5$
284
285
286
where $t_i = (s_i s_{i+1})^3$. If AdditionalRelation='C' (default) only the cubic
287
relation on the generators is
288
active (Coxeters case of investigation). Note that for n=2,3,4 the groups do not
289
differ between the three possible
290
values of AdditionalRelation (as finitely presented groups). But anyway, the classes
291
for 'C', 'S' and 'U' are
292
different, since they have different classical realizations implemented .
293
294
Setting the keyword verbose it is possible to print time stamp messages in order to do
295
a performance or
296
call stack debugging. This keyword uses the timeStampControl class. For more
297
information on this type
298
299
print setupTimeStamp.__doc__
300
print timeStampControl.__doc__
301
print timeStampControl.print_timestamp.__doc__
302
print print_time_tb.__doc__
303
304
305
The creation of instances of this class can also be done more easy by help of the
306
functions CubicBraidGroup,
307
AssionGroupS and AssionGroupU (similar to the function BraidGroup with respect to the
308
BraidGroup_class)
309
310
311
EXAMPLES:
312
313
sage: from cubic_braid import *
314
sage: U3 = CubicBraidGroup(3, AdditionalRelation = 'U'); U3
315
Assion group on 3 strands of type U
316
sage: U3.gens()
317
(c0, c1)
318
319
alternate possibilities defining U3:
320
321
sage: U3 = AssionGroupU(3); U3
322
Assion group on 3 strands of type U
323
sage: U3.gens()
324
(u0, u1)
325
326
sage: U3.<u1,u2> = AssionGroupU(3); U3
327
Assion group on 3 strands of type U
328
sage: U3.gens()
329
(u1, u2)
330
331
alternates naming the generators:
332
333
sage: U3 = AssionGroupU(3, 'a, b'); U3
334
Assion group on 3 strands of type U
335
sage: U3.gens()
336
(a, b)
337
338
sage: C3 = CubicBraidGroup(3, 't'); C3
339
Cubic Braid group on 3 strands
340
sage: C3.gens()
341
(t0, t1)
342
343
sage: U3.is_isomorphic( C3 )
344
True
345
sage: U3.as_classical_group()
346
Subgroup of (The projective general unitary group of degree 3 over Finite Field of
347
size 2) generated by
348
[(1,7,6) (3,19,14)(4,15,10)(5,11,18)(12,16,20),
349
(1,12,13)(2,15,19)(4,9,14)(5,18,8)(6,21,16)]
350
sage: C3.as_classical_group()
351
Subgroup of General Unitary Group of degree 2 over Universal Cyclotomic Field with
352
respect to hermitian form
353
[-E(12)^7 + E(12)^11 -1]
354
[ -1 -E(12)^7 + E(12)^11]
355
generated by (
356
[ E(3) E(12)^11]
357
[ 0 1],
358
[ 1 0]
359
[E(12)^11 E(3)])
360
361
362
using verbose mode:
363
364
sage: C3.<c1,c2> = CubicBraidGroup(3, verbose=True); C3
365
L: StackInfo Elapse: 0, Total: 0 Ident: C3 In: __init__ Line: 403
366
L: StackInfo Elapse: 197, Total: 0 Begin In:
367
__create_classical_realization__ Line: 910
368
L: StackInfo Elapse: 8, Total: 0 Begin In: as_matrix_group Line: 1031
369
L: Body Elapse: 92, Total: 0 genList prepared In: as_matrix_group
370
Line: 1038
371
L: Body Elapse: 52, Total: 0 MatGroup defined In: as_matrix_group
372
Line: 1054
373
L: StackInfo Elapse: 356, Total: 0 Begin In: gap_hom Line: 143
374
L: Debug Elapse: 8, Total: 0 GroupHomomorphis In: gap_hom Line: 188
375
L: Debug Elapse: 17, Total: 0 checked if groupMap works In: gap_hom
376
Line: 199
377
L: StackInfo Elapse: 8, Total: 0 End In: gap_hom Line: 226
378
L: StackInfo Elapse: 44, Total: 0 Begin In: __check_homomorphism__ Line:
379
60
380
L: StackInfo Elapse: 52, Total: 0 End In: __check_homomorphism__ Line: 625
381
L: Body Elapse: 3, Total: 0 Hom from self defined In:
382
as_matrix_group Line: 1064
383
L: StackInfo Elapse: 62, Total: 0 Begin In: gap_hom Line: 143
384
L: Debug Elapse: 4, Total: 0 GroupHomomorphis In: gap_hom Line: 188
385
L: Debug Elapse: 20, Total: 0 checked if groupMap works In: gap_hom
386
Line: 199
387
L: StackInfo Elapse: 4, Total: 0 End In: gap_hom Line: 226
388
L: Body Elapse: 35, Total: 0 Section to self defined In:
389
as_matrix_group Line: 1077
390
L: StackInfo Elapse: 3, Total: 0 Ende In: as_matrix_group Line: 1102
391
L: StackInfo Elapse: 3, Total: 0 End In: __create_classical_realization__
392
Line: 975
393
L: StackInfo Elapse: 12, Total: 0 Ident: C3 In: __init__ Line: 472
394
Cubic Braid group on 3 strands
395
sage:
396
sage:
397
sage: C3.<c1,c2> = CubicBraidGroup(3, verbose=30); C3
398
L: StackInfo Elapse: 62, Total: 0 (truncated 1) Begin In:
399
__create_classical_realization__ Line: 910
400
---> __init__ In: lib/cubic_braid.py Line: 471
401
---> __classcall__ In: /opt/sage/sage-6.9-i686-Linux/local/lib/python2.7/site-
402
packages/sage/structure
403
/unique_representation.py Line: 1021
404
---> CubicBraidGroup In: lib/cubic_braid.py Line: 1231
405
L: StackInfo Elapse: 405, Total: 0 Begin In: as_matrix_group Line: 1031
406
---> __create_classical_realization__ In: lib/cubic_braid.py Line: 968
407
---> __init__ In: lib/cubic_braid.py Line: 471
408
---> __classcall__ In: /opt/sage/sage-6.9-i686-Linux/local/lib/python2.7/site-
409
packages/sage/structure
410
/unique_representation.py Line: 1021
411
L: Body Elapse: 145, Total: 0 genList prepared In: as_matrix_group
412
Line: 1038
413
---> __create_classical_realization__ In: lib/cubic_braid.py Line: 968
414
---> __init__ In: lib/cubic_braid.py Line: 471
415
---> __classcall__ In: /opt/sage/sage-6.9-i686-Linux/local/lib/python2.7/site-
416
packages/sage/structure
417
/unique_representation.py Line: 1021
418
Cubic Braid group on 3 strands
419
sage:
420
421
422
TESTS:
423
424
sage: C4 = CubicBraidGroup(4)
425
sage: TestSuite(C4).run()
426
sage: C5 = CubicBraidGroup(5)
427
sage: TestSuite(C5).run()
428
sage: C6 = CubicBraidGroup(6)
429
sage: TestSuite(C6).run()
430
sage: S3 = AssionGroupS(3)
431
sage: TestSuite(S3).run()
432
sage: S4 = AssionGroupS(4)
433
sage: TestSuite(S5).run()
434
sage: U3 = AssionGroupU(3)
435
sage: TestSuite(U3).run()
436
sage: U4 = AssionGroupU(4)
437
sage: TestSuite(U4).run()
438
sage: U5 = AssionGroupU(5)
439
sage: TestSuite(U5).run()
440
441
METHODS (implemented / overwriten here):
442
443
- as_classical_group(): type
444
sage: print CubicBraidGroup_class.as_classical_group.__doc__
445
- as_matrix_group(): type
446
sage: print CubicBraidGroup_class.as_matrix_group.__doc__
447
- as_refection_group(): type
448
sage: print CubicBraidGroup_class.as_refection_group.__doc__
449
- as_permutation_group(): type
450
sage: print CubicBraidGroup_class.as_permutation_group.__doc__
451
- pre_image_braid_group: type
452
sage: print CubicBraidGroup_class.pre_image_braid_group.__doc__
453
- cubic_braid_subgroup(): type
454
sage: print CubicBraidGroup_class.cubic_braid_subgroup.__doc__
455
- centralizing_element(): type
456
sage: print CubicBraidGroup_class.centralizing_element.__doc__
457
- order(): type
458
sage: print CubicBraidGroup_class.order.__doc__
459
- character_table(): type
460
sage: print CubicBraidGroup_class.character_table.__doc__
461
462
AUTHOR
463
464
- Sebastian Oehms, Sept. 2016
465
466
REFERENCES:
467
468
- Coxeter, H.S.M: "Factor groups of the braid groups, Proceedings of the Fourth
469
Candian Mathematical Congress
470
(Vancover 1957), pp. 95-122".
471
472
- J. Assion: "Einige endliche Faktorgruppen der Zopfgruppen" (Math. Z., 163 (1978),
473
291-302)
474
\end{verbatim}\begin{verbatim}\end{verbatim}
475
\begin{lstlisting}
476
\end{lstlisting}\subsection{First steps}
477
478
479
480
{To definine the cubic braid group on 3 strand, for example, type:}
481
482
\begin{lstlisting}
483
C3 = CubicBraidGroup( 3 ); C3
484
\end{lstlisting}\begin{verbatim}Cubic Braid group on 3 strands\end{verbatim}\begin{verbatim}\end{verbatim}
485
\begin{lstlisting}
486
\end{lstlisting}
487
488
{There are several ways to obtain the braid generators as variables: First using the pre defined names:}
489
490
\begin{lstlisting}
491
C3.inject_variables()
492
\end{lstlisting}\begin{verbatim}Defining c0, c1\end{verbatim}
493
\begin{lstlisting}
494
\end{lstlisting}
495
496
{Second, if you like to use your own names it is possiblbe to include a generator declaration inside the group declaration in two ways (caution: sage-kernel needed, this does no work for a pure python kernel):}
497
498
\begin{lstlisting}
499
C4.<c1, c2, c3> = CubicBraidGroup(4); print "Element of C4", c1*c2**2*c3
500
U4 = AssionGroupU(4, 'a, b, c' ); a, b, c = U4.gens(); print "Element of U4", a*b**2*c
501
\end{lstlisting}\begin{verbatim}Element of C4\end{verbatim}\begin{verbatim} c1*c2^2*c3\end{verbatim}\begin{verbatim}Element of U4\end{verbatim}\begin{verbatim} a*b^2*c\end{verbatim}
502
\begin{lstlisting}
503
\end{lstlisting}
504
505
{But, note:}
506
507
\begin{lstlisting}
508
S4 = AssionGroupS(4); x, y, z = S4.gens(); print "Element of S4", x*y**2*z
509
\end{lstlisting}\begin{verbatim}Element of S4\end{verbatim}\begin{verbatim} s0*s1^2*s2\end{verbatim}
510
\begin{lstlisting}
511
\end{lstlisting}\subsection{Classical realization}
512
513
514
515
{Now, lets define Coxeter's realization of the 3 strand cubic braid group:}
516
517
\begin{lstlisting}
518
C3Cl = C3.as_classical_group(); C3Cl
519
\end{lstlisting}\begin{verbatim}Subgroup of General Unitary Group of degree 2 over Universal Cyclotomic Field with respect
520
to hermitian form:
521
[-E(12)^7 + E(12)^11 -1]
522
[ -1 -E(12)^7 + E(12)^11] generated by:
523
([ E(3) E(12)^11]
524
[ 0 1], [ 1 0]
525
[E(12)^11 E(3)])\end{verbatim}
526
\begin{lstlisting}
527
\end{lstlisting}
528
529
{You may apply any method implemented for groups and finitely presented resp. finitely generated matrix groups in sage to C3 resp. C3Cl, for instance to check if they are isomorphic:}
530
531
\begin{lstlisting}
532
C3.is_isomorphic( C3Cl )
533
\end{lstlisting}\begin{verbatim}True\end{verbatim}\begin{verbatim}\end{verbatim}
534
\begin{lstlisting}
535
\end{lstlisting}
536
537
{To see which methods are available say:}
538
539
\begin{lstlisting}
540
print 'Attributes of C3:\n', dir(C3), '\n\n'
541
print 'Attributes of C3Cl:\n', dir(C3Cl), '\n\n'
542
\end{lstlisting}\begin{verbatim}Attributes of C3:
543
['CartesianProduct', 'Element', 'Hom', '_AdditionalRelation_', '_TimeStampSub_',
544
'_TimeStamp_', '__cached_methods', '__call__', '__check_homomorphism__', '__class__',
545
'__classcall__', '__contains__', '__copy__', '__create_classical_realization__',
546
'__deepcopy__', '__delattr__', '__dict__', '__dir__', '__div__', '__doc__', '__eq__',
547
'__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__',
548
'__hash__', '__init__', '__init_extra__', '__iter__', '__le__', '__len__', '__lt__',
549
'__make_element_class__', '__metaclass__', '__module__', '__mul__', '__ne__', '__new__',
550
'__nonzero__', '__print_timestamp__', '__pyx_vtable__', '__qualname__', '__rdiv__',
551
'__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__setstate__',
552
'__sizeof__', '__str__', '__subclasshook__', '__temporarily_change_names', '__weakref__',
553
'_abstract_element_class', '_ambient', '_an_element_', '_ascii_art_', '_assign_names',
554
'_axiom_', '_axiom_init_', '_b_', '_base', '_bi_', '_cache_an_element', '_cache_key',
555
'_centralizing_element_', '_centralizing_matrix_', '_checked_homomorphism_',
556
'_classical_base_group_', '_classical_base_group_gens_', '_classical_embedding_',
557
'_classical_group_', '_classical_group_gens_', '_clear_cache_', '_cmp_',
558
'_coerce_map_from_', '_coerce_map_via', '_coercions_used', '_convert_map_from_',
559
'_convert_method_name', '_defining_names', '_doccls', '_element_constructor',
560
'_element_constructor_', '_element_constructor_from_element_class',
561
'_element_init_pass_parent', '_factory_data', '_first_ngens', '_free_group',
562
'_free_group_', '_fricas_', '_fricas_init_', '_gap_', '_gap_gens', '_gap_init_',
563
'_generic_convert_map', '_get_action_', '_giac_', '_giac_init_', '_gp_', '_gp_init_',
564
'_ident_', '_included_private_doc_', '_init_category_', '_initial_action_list',
565
'_initial_coerce_list', '_initial_convert_list', '_interface_', '_interface_init_',
566
'_interface_is_cached_', '_internal_coerce_map_from', '_internal_convert_map_from',
567
'_introspect_coerce', '_is_category_initialized', '_is_valid_homomorphism_', '_kash_',
568
'_kash_init_', '_latex_', '_libgap', '_libgap_', '_macaulay2_', '_macaulay2_init_',
569
'_magma_init_', '_maple_', '_maple_init_', '_mathematica_', '_mathematica_init_',
570
'_maxima_', '_maxima_init_', '_maxima_lib_', '_maxima_lib_init_', '_names', '_nstrands_',
571
'_octave_', '_octave_init_', '_pari_', '_pari_init_', '_populate_coercion_lists_',
572
'_pre_image_braid_group_', '_r_init_', '_reduction', '_refine_category_', '_relations',
573
'_repr_', '_repr_option', '_richcmp', '_sage_', '_set_element_constructor', '_singular_',
574
'_singular_init_', '_subgroup_constructor', '_t_', '_test_an_element',
575
'_test_associativity', '_test_cardinality', '_test_category', '_test_constructions',
576
'_test_elements', '_test_elements_eq_reflexive', '_test_elements_eq_symmetric',
577
'_test_elements_eq_transitive', '_test_elements_neq', '_test_eq', '_test_inverse',
578
'_test_new', '_test_not_implemented_methods', '_test_one', '_test_pickling', '_test_prod',
579
'_test_some_elements', '_tester', '_ti_', '_unicode_art_', '_unset_category',
580
'_unset_coercions_used', '_unset_embedding', '_verbose_', 'abelian_invariants',
581
'alexander_matrix', 'algebra', 'ambient', 'an_element', 'as_classical_group',
582
'as_matrix_group', 'as_permutation_group', 'as_reflection_group', 'base', 'base_ring',
583
'cardinality', 'cartesian_product', 'categories', 'category', 'cayley_graph',
584
'cayley_table', 'center', 'centralizing_element', 'change_debug_options',
585
'character_table', 'class_function', 'coerce', 'coerce_embedding', 'coerce_map_from',
586
'conjugacy_class', 'conjugacy_class_representatives', 'conjugacy_classes', 'construction',
587
'convert_map_from', 'cubic_braid_subgroup', 'db', 'direct_product', 'dump', 'dumps',
588
'element_class', 'epimorphisms', 'free_group', 'gap', 'gen', 'generators', 'gens',
589
'gens_dict', 'gens_dict_recursive', 'get_action', 'group_generators', 'has_base',
590
'has_coerce_map_from', 'holomorph', 'hom', 'inject_variables', 'intersection',
591
'irreducible_characters', 'is_abelian', 'is_atomic_repr', 'is_coercion_cached',
592
'is_commutative', 'is_conversion_cached', 'is_empty', 'is_exact', 'is_finite',
593
'is_isomorphic', 'is_multiplicative', 'is_parent_of', 'is_subgroup', 'latex_name',
594
'latex_variable_names', 'list', 'magma_generators', 'monoid_generators',
595
'multiplication_table', 'ngens', 'normalize_names', 'objgen', 'objgens', 'one',
596
'one_element', 'order', 'parent', 'pre_image_braid_group', 'prod', 'product',
597
'product_from_element_class_mul', 'quotient', 'random_element', 'register_action',
598
'register_coercion', 'register_conversion', 'register_embedding',
599
'regular_representation', 'relations', 'rename', 'reset_name', 'rewriting_system', 'save',
600
'semidirect_product', 'semigroup_generators', 'simplification_isomorphism', 'simplified',
601
'some_elements', 'structure_description', 'subgroup', 'submonoid', 'subsemigroup',
602
'trivial_representation', 'variable_name', 'variable_names']\end{verbatim}\begin{verbatim}
603
604
\end{verbatim}\begin{verbatim}Attributes of C3Cl:
605
['CartesianProduct', 'Element', 'Hom', '_Hom_', '__cached_methods', '__call__',
606
'__class__', '__cmp__', '__contains__', '__delattr__', '__dict__', '__dir__', '__div__',
607
'__doc__', '__format__', '__getattribute__', '__getitem__', '__getstate__', '__hash__',
608
'__init__', '__init_extra__', '__iter__', '__len__', '__make_element_class__',
609
'__module__', '__mul__', '__new__', '__nonzero__', '__pyx_vtable__', '__qualname__',
610
'__rdiv__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__',
611
'__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__temporarily_change_names',
612
'__weakref__', '_abstract_element_class', '_ambient', '_an_element_', '_ascii_art_',
613
'_assign_names', '_axiom_', '_axiom_init_', '_base', '_cache_an_element', '_cache_key',
614
'_check_matrix', '_cmp_', '_cmp_generators', '_coerce_map_from_', '_coerce_map_via',
615
'_coercions_used', '_convert_map_from_', '_convert_method_name', '_defining_names',
616
'_deg', '_doccls', '_element_constructor', '_element_constructor_',
617
'_element_constructor_from_element_class', '_element_init_pass_parent', '_factory_data',
618
'_first_ngens', '_fricas_', '_fricas_init_', '_gap_', '_gap_gens', '_gap_init_',
619
'_generic_convert_map', '_get_action_', '_giac_', '_giac_init_', '_gp_', '_gp_init_',
620
'_init_category_', '_initial_action_list', '_initial_coerce_list',
621
'_initial_convert_list', '_interface_', '_interface_init_', '_interface_is_cached_',
622
'_internal_coerce_map_from', '_internal_convert_map_from', '_introspect_coerce',
623
'_is_category_initialized', '_is_valid_homomorphism_', '_kash_', '_kash_init_', '_latex_',
624
'_libgap', '_libgap_', '_macaulay2_', '_macaulay2_init_', '_magma_init_', '_maple_',
625
'_maple_init_', '_mathematica_', '_mathematica_init_', '_maxima_', '_maxima_init_',
626
'_maxima_lib_', '_maxima_lib_init_', '_names', '_octave_', '_octave_init_', '_pari_',
627
'_pari_init_', '_populate_coercion_lists_', '_r_init_', '_reduction', '_refine_category_',
628
'_repr_', '_repr_option', '_richcmp', '_sage_', '_set_element_constructor', '_singular_',
629
'_singular_init_', '_subgroup_constructor', '_test_an_element', '_test_associativity',
630
'_test_cardinality', '_test_category', '_test_elements', '_test_elements_eq_reflexive',
631
'_test_elements_eq_symmetric', '_test_elements_eq_transitive', '_test_elements_neq',
632
'_test_eq', '_test_inverse', '_test_new', '_test_not_implemented_methods', '_test_one',
633
'_test_pickling', '_test_prod', '_test_some_elements', '_tester', '_unicode_art_',
634
'_unset_category', '_unset_coercions_used', '_unset_embedding', 'algebra', 'ambient',
635
'an_element', 'as_matrix_group', 'as_permutation_group', 'base', 'base_ring',
636
'cardinality', 'cartesian_product', 'categories', 'category', 'cayley_graph',
637
'cayley_table', 'center', 'class_function', 'coerce', 'coerce_embedding',
638
'coerce_map_from', 'conjugacy_class', 'conjugacy_class_representatives',
639
'conjugacy_classes', 'construction', 'convert_map_from', 'db', 'degree', 'dump', 'dumps',
640
'element_class', 'gap', 'gen', 'generators', 'gens', 'gens_dict', 'gens_dict_recursive',
641
'get_action', 'group_generators', 'has_base', 'has_coerce_map_from', 'holomorph', 'hom',
642
'inject_variables', 'intersection', 'invariant_generators', 'irreducible_characters',
643
'is_abelian', 'is_atomic_repr', 'is_coercion_cached', 'is_commutative',
644
'is_conversion_cached', 'is_empty', 'is_exact', 'is_finite', 'is_isomorphic',
645
'is_multiplicative', 'is_parent_of', 'is_subgroup', 'latex_name', 'latex_variable_names',
646
'list', 'magma_generators', 'matrix_space', 'module_composition_factors',
647
'monoid_generators', 'multiplication_table', 'ngens', 'normalize_names', 'objgen',
648
'objgens', 'one', 'one_element', 'order', 'parent', 'prod', 'product',
649
'product_from_element_class_mul', 'quotient', 'random_element', 'register_action',
650
'register_coercion', 'register_conversion', 'register_embedding',
651
'regular_representation', 'rename', 'reset_name', 'save', 'semidirect_product',
652
'semigroup_generators', 'some_elements', 'structure_description', 'subgroup', 'submonoid',
653
'subsemigroup', 'trivial_representation', 'variable_name', 'variable_names']
654
655
\end{verbatim}
656
\begin{lstlisting}
657
\end{lstlisting}
658
659
{The above used method ``as\_classical\_group'' is a special method of the CubicBraidGroup class. It returns the realization of the cubic braid group as classical group. These are (in principal) symplectic groups over $GF(3)$ resp. unitary groups over $GF(4)$ in the case of Assion groups of type ``S'' and ``U'' respectively (realization of Assion) and subgroups of the unitary groups over $\QQ$ adjoined with a primitive 12-th root of unity with respect to a certain hermitian form in the case of the ordinary cubic braid groups (Coxeters realization):}
660
661
\begin{lstlisting}
662
S3 = AssionGroupS(3); print S3; print ""
663
S3Cl = S3.as_classical_group(); print S3Cl; print ""
664
U3 = AssionGroupU(3); print U3; print ""
665
U3Cl = U3.as_classical_group(); print U3Cl
666
\end{lstlisting}\begin{verbatim}Assion group on 3 strands of type S\end{verbatim}\begin{verbatim}
667
\end{verbatim}\begin{verbatim}Symplectic Group of degree 2 over Finite Field of size 3
668
\end{verbatim}\begin{verbatim}Assion group on 3 strands of type U\end{verbatim}\begin{verbatim}
669
\end{verbatim}\begin{verbatim}Subgroup of (The projective general unitary group of degree 3 over Finite Field of size 2)
670
generated by [(1,7,6)(3,19,14)(4,15,10)(5,11,18)(12,16,20),
671
(1,12,13)(2,15,19)(4,9,14)(5,18,8)(6,21,16)]\end{verbatim}
672
\begin{lstlisting}
673
\end{lstlisting}\subsection{Exceptions in Assions series}
674
675
676
677
{U3Cl is an exception to the statement above! It is not identical to the unitary group of degree 2. This exception occurs if the number of strands is zero mululo three in the case of Assion groups of type U resp. if the number of strands is even concerning the Assion groups of type S. But, since U3Cl is a subgroup of U4Cl (the unitary group of degree 3 over $GF(4)$ ) you may obtain it like this:}
678
679
\begin{lstlisting}
680
U3Clemb = U3.as_classical_group( embedded = True); print U3Clemb; print ""
681
um1, um2 =U3Clemb.gens()
682
683
U4 = AssionGroupU(4)
684
U4Cl = U4.as_classical_group(); print U4Cl; print ""
685
686
print 'first generator in U4Cl?', um1 in U4Cl
687
print 'second generator in U4Cl?', um2 in U4Cl
688
\end{lstlisting}\begin{verbatim}Matrix group over Finite Field in a of size 2^2 with 2 generators (
689
[0 0 a] [a + 1 a a]
690
[0 1 0] [ a a + 1 a]
691
[a 0 a], [ a a a + 1]
692
)
693
\end{verbatim}\begin{verbatim}General Unitary Group of degree 3 over Finite Field in a of size 2^2 with respect to
694
hermitian form:
695
[0 0 1]
696
[0 1 0]
697
[1 0 0]
698
\end{verbatim}\begin{verbatim}first generator in U4Cl? True\end{verbatim}\begin{verbatim}second generator in U4Cl? True\end{verbatim}
699
\begin{lstlisting}
700
\end{lstlisting}
701
702
{Don't confuse about the difference with respect to the base field concerning GU(3,2) (size 2²) and PGU(3,2) (size 2) which is caused by non conform conventions inside sage.}
703
704
\subsubsection{Description of the exceptions as centralizer}
705
706
707
708
{Assion described the exceptional cases of the groups $S(m)$ and $U(m)$ as centralizer groups of certain elements in the projective counterpart of the corresponding classical group. These elements can be obtained by the following method:}
709
710
\begin{lstlisting}
711
u3cent = U3.centralizing_element(); print "centalizing element (u3cent):\n%s\n" %( u3cent )
712
print "u3cent in U3Cl? %s" %( u3cent in U3Cl )
713
print "u3cent in U3Clemb? %s\n" %(u3cent in U3Clemb )
714
715
u3centP = U3.centralizing_element(projective = True ); print "projective centalizing element (u3centP):\n%s\n" %( u3centP )
716
print "u3centP in U3Cl? %s" %(u3centP in U3Cl)
717
print "u3centP in U3Clemb? %s\n" %(u3centP in U3Clemb)
718
719
PU3 = U3Cl.ambient_group(); print "Ambient Group of U3Cl (PU3):\n%s\n" %(PU3)
720
PU3cent = PU3.centralizer(u3centP); print "Centralizer of u3centP in PU3 (PU3cent):\n%s\n" %(PU3cent)
721
722
print "Check PU3cent == U3Cl: %s" %( U3Cl == PU3cent)
723
\end{lstlisting}\begin{verbatim}centalizing element (u3cent):
724
[a + 1 a + 1 1]
725
[a + 1 0 a]
726
[ 1 a a]
727
\end{verbatim}\begin{verbatim}u3cent in U3Cl? True\end{verbatim}\begin{verbatim}u3cent in U3Clemb? True
728
\end{verbatim}\begin{verbatim}projective centalizing element (u3centP):
729
(1,16)(2,9)(3,10)(4,19)(6,12)(7,20)(13,21)(14,15)
730
\end{verbatim}\begin{verbatim}u3centP in U3Cl? True\end{verbatim}\begin{verbatim}u3centP in U3Clemb? False
731
\end{verbatim}\begin{verbatim}Ambient Group of U3Cl (PU3):
732
The projective general unitary group of degree 3 over Finite Field of size 2
733
\end{verbatim}\begin{verbatim}Centralizer of u3centP in PU3 (PU3cent):
734
Subgroup of (The projective general unitary group of degree 3 over Finite Field of size 2)
735
generated by [(2,3,4)(6,13,20)(7,12,21)(8,11,18)(9,10,19),
736
(1,6,7)(3,14,19)(4,10,15)(5,18,11)(12,20,16),
737
(1,16)(2,9)(3,10)(4,19)(6,12)(7,20)(13,21)(14,15)]
738
\end{verbatim}\begin{verbatim}Check PU3cent == U3Cl: True\end{verbatim}
739
\begin{lstlisting}
740
\end{lstlisting}\subsection{Conversion maps}
741
742
743
744
{Observe, that the cubic braid groups do not differ from the corresponding Assion groups in terms of isomorphism as long as the number of strand is less than five:}
745
746
\begin{lstlisting}
747
print 'C3 isomorphic to S3?', C3.is_isomorphic(S3)
748
print 'C3 isomorphic to U3?', C3.is_isomorphic(U3)
749
print 'C3 isomorphic to S3Cl?', C3.is_isomorphic(S3Cl)
750
print 'C3 isomorphic to U3Cl?', C3.is_isomorphic(U3Cl)
751
print 'C3 isomorphic to U3Clemb?', C3.is_isomorphic(U3Clemb)
752
\end{lstlisting}\begin{verbatim}C3 isomorphic to S3?\end{verbatim}\begin{verbatim}True\end{verbatim}\begin{verbatim}C3 isomorphic to U3?\end{verbatim}\begin{verbatim}True\end{verbatim}\begin{verbatim}C3 isomorphic to S3Cl? True\end{verbatim}\begin{verbatim}C3 isomorphic to U3Cl? True\end{verbatim}\begin{verbatim}C3 isomorphic to U3Clemb? True\end{verbatim}\begin{verbatim}True\end{verbatim}\begin{verbatim}C3 isomorphic to S3Cl? True\end{verbatim}\begin{verbatim}C3 isomorphic to U3Cl? True\end{verbatim}\begin{verbatim}C3 isomorphic to U3Clemb? True\end{verbatim}
753
\begin{lstlisting}
754
\end{lstlisting}
755
756
{These isomorphisms are canonical in the case of S3 and U3 since all these groups are defined as finitely presented groups with identical number of generators and according relations:}
757
758
\begin{lstlisting}
759
print 'Relations of C3:\n%s\n'%( list(C3.relations()) )
760
print 'Relations of S3:\n%s\n'%( list(S3.relations()) )
761
\end{lstlisting}\begin{verbatim}Relations of C3:
762
[c0*c1*c0*c1^-1*c0^-1*c1^-1, c0^3, c1^3]
763
\end{verbatim}\begin{verbatim}Relations of S3:
764
[s0*s1*s0*s1^-1*s0^-1*s1^-1, s0^3, s1^3]
765
\end{verbatim}
766
\begin{lstlisting}
767
\end{lstlisting}
768
769
{In the other cases the maps are realized as conversion maps, that is:}
770
771
\begin{lstlisting}
772
C3.inject_variables(); element = c0*c1**2; image_element = C3Cl(element)
773
print 'Image of %s in C3Cl:\n%s\n' %(element, image_element)
774
U3.inject_variables(); element = u0*u1**2; image_element = U3Cl(element)
775
print 'Image of %s in U3Cl:\n%s\n' %(element, image_element)
776
image_element = U3Clemb(element)
777
print 'Image of %s in U3Clemb:\n%s\n' %(element, image_element)
778
\end{lstlisting}\begin{verbatim}Defining c0, c1\end{verbatim}\begin{verbatim}Image of c0*c1^2 in C3Cl:
779
[ -E(3)^2 E(12)^7]
780
[-E(12)^7 E(3)^2]
781
\end{verbatim}\begin{verbatim}Defining u0, u1\end{verbatim}\begin{verbatim}Image of u0*u1^2 in U3Cl:
782
(1,7,16,20)(2,19,9,4)(3,15,10,14)(5,11)(6,13,12,21)(8,18)
783
\end{verbatim}\begin{verbatim}Image of u0*u1^2 in U3Clemb:
784
[ 1 1 a + 1]
785
[a + 1 a a + 1]
786
[ a 0 a]
787
\end{verbatim}
788
\begin{lstlisting}
789
\end{lstlisting}
790
791
{You may also convert in the opposite direction:}
792
793
\begin{lstlisting}
794
elements = list(S3Cl.some_elements())
795
image_elements = [ S3(element) for element in elements ]
796
797
print 'Images of\n\n%s\n\nand\n\n%s\n\nin S3:\n\n%s\n' %(elements[0], elements[1], image_elements)
798
\end{lstlisting}\begin{verbatim}Images of
799
800
[1 1]
801
[0 1]
802
803
and
804
805
[0 1]
806
[2 0]
807
808
in S3:
809
810
[s1, s0*s1*s0]
811
\end{verbatim}
812
\begin{lstlisting}
813
\end{lstlisting}\subsection{Preimages in the Artin braid group}
814
815
816
817
{For each element of a cubic braid group you can define a preimage in the braid group as instance of the element class of the braid group class:}
818
819
\begin{lstlisting}
820
braid_elements = [element.braid() for element in image_elements ]
821
print 'Braid preimages of\n%s\nand\n%s:\n\n%s\n' %(elements[0], elements[1], braid_elements)
822
type(braid_elements[0])
823
jones_polynomial = [element.jones_polynomial() for element in braid_elements ]
824
print 'Coresponding Jones polynomials:\n%s\n' %(jones_polynomial)
825
burau_matrix = braid_elements[1].burau_matrix()
826
print 'Burau matrix to second braid preimage:\n%s' %(burau_matrix)
827
\end{lstlisting}\begin{verbatim}Braid preimages of
828
[1 1]
829
[0 1]
830
and
831
[0 1]
832
[2 0]:
833
834
[s1, s0*s1*s0]
835
\end{verbatim}\begin{verbatim}<class 'lib.local_braid.local_BraidGroup_class_with_category.element_class'>\end{verbatim}\begin{verbatim}Coresponding Jones polynomials:
836
[-sqrt(t) - 1/sqrt(t), -t^(5/2) - sqrt(t)]
837
\end{verbatim}\begin{verbatim}Burau matrix to second braid preimage:
838
[ 1 - t t - t^2 t^2]
839
[ 1 - t t 0]
840
[ 1 0 0]\end{verbatim}
841
\begin{lstlisting}
842
\end{lstlisting}\subsection{Burau matrices for the cubic braid groups}
843
844
845
846
{You can calculate the burau matrix correspondig to elements of the cubic braid groups, as well. By default you will get it as matrix over {\textbackslash}QQ adjoint with a third root of unity (zeta3):}
847
848
\begin{lstlisting}
849
elem = image_elements[1]
850
print "Burau:\n%s" %(elem.burau_matrix())
851
\end{lstlisting}\begin{verbatim}Burau:
852
[ -zeta3 1 zeta3]
853
[ -zeta3 zeta3 + 1 0]
854
[ 1 0 0]\end{verbatim}\begin{verbatim}\end{verbatim}
855
\begin{lstlisting}
856
\end{lstlisting}
857
858
{Using the additional options of this method, you can construct representations in finite matrix groups, as well:}
859
860
\begin{lstlisting}
861
bur_mat = elem.burau_matrix(characteristic = 5)
862
print "Burau in characteristic 5:\n%s\nbase_ring: %s" %(bur_mat, bur_mat.base_ring())
863
\end{lstlisting}\begin{verbatim}Burau in characteristic 5:
864
[2*rI + 2 1 3*rI + 3]
865
[2*rI + 2 3*rI + 4 0]
866
[ 1 0 0]
867
base_ring: Finite Field in rI of size 5^2\end{verbatim}
868
\begin{lstlisting}
869
\end{lstlisting}
870
871
{To see all possible options type (but again, note that carriage return is ignored in the sage worksheet. To see it better use jupyter notebook or command line):}
872
873
\begin{lstlisting}
874
print CubicBraidElement.burau_matrix.__doc__
875
\end{lstlisting}\begin{verbatim}
876
Return the Burau matrix of the cubic braid coset.
877
878
If you don't see this well formated type
879
880
sage: print CubicBraidElement.burau_matrix.__doc_
881
882
This method uses the same method belonging to the Braid class, but reduces the
883
parameter to a primitive six
884
root of unity, respectivly an element vanishing on the polynomial $x^2-x+1$
885
886
INPUT: (all parameters are optional by keyword )
887
888
- "rootBur": six root of unity in some field (default six root of unity over
889
$\QQ$)
890
- "Domain": base_ring for the burau matrix (default is Cyclotomic Field of order
891
3 and degree 2, resp. the
892
domain of rootBur if given)
893
- "reduced": boolean (default: False); whether to return the reduced or unreduced
894
Burau representation
895
(see Braid class )
896
- "characteristic": integer giving the characteristic of the domain (default is 0
897
or the characteristic of
898
the doamain if given)
899
- "version": values:
900
'unitary': gives the unitary form according to Squier (see
901
Braid._unitary_burau_matrix_() )
902
'default': the method behaves like the original one of the Braid
903
-class
904
any value else: gives the reduced form given on wikipedia
905
906
907
OUTPUT:
908
909
The Burau matrix of the cubic braid coset with entries in the domain given by
910
the options
911
912
If you need the values of the reconstructed keywords "rootBur", "Domain" or
913
"characteristic" use the internal
914
version _burau_matrix_ of this method
915
916
RAISE:
917
918
- ValueError: 'characteristic must be in integer'
919
920
- ValueError: 'characteristic must be a prime'
921
922
- ValueError: 'characteristic of Domain does not match given characteristic'
923
924
- ValueError: 'rootBur must belong to a domain containing 1'
925
926
- ValueError: 'rootBur must vanish on $x^2-x+1$ default case
927
928
- ValueError: 'rootBur must vanish on $x^4-x^2+1$ in case of call with version
929
= 'unitary'
930
931
932
933
EXAMPLES::
934
935
sage: C3.<c1, c2> = CubicBraidGroup(3)
936
sage: ele1 = c1*c2*c1
937
sage: BurauTest = ele1.burau_matrix(); print BurauTest
938
[ -zeta3 1 zeta3]
939
[ -zeta3 zeta3 + 1 0]
940
[ 1 0 0]
941
sage: BurauTest.base_ring()
942
Cyclotomic Field of order 3 and degree 2
943
sage:
944
sage: BurauTest = ele1.burau_matrix( characteristic = 0 ); print BurauTest
945
[ -zeta3 1 zeta3]
946
[ -zeta3 zeta3 + 1 0]
947
[ 1 0 0]
948
sage: BurauTest.base_ring()
949
Cyclotomic Field of order 3 and degree 2
950
sage:
951
sage: BurauTest = ele1.burau_matrix( Domain = QQ ); print BurauTest
952
Warning: Domain extended to splitting field of tT^2 - tT + 1
953
[-rI + 1 1 rI - 1]
954
[-rI + 1 rI 0]
955
[ 1 0 0]
956
sage: BurauTest.base_ring()
957
Number Field in rI with defining polynomial tT^2 - tT + 1
958
sage:
959
sage: BurauTest = ele1.burau_matrix( Domain = QQ[I, sqrt(3)] ); print
960
BurauTest
961
[ 1/2*sqrt3*I + 1/2 1 -1/2*sqrt3*I - 1/2]
962
[ 1/2*sqrt3*I + 1/2 -1/2*sqrt3*I + 1/2 0]
963
[ 1 0 0]
964
sage: BurauTest.base_ring()
965
Number Field in I with defining polynomial x^2 + 1 over its base field
966
sage:
967
sage: BurauTest = ele1.burau_matrix( characteristic = 7 ); print BurauTest
968
[3 1 4]
969
[3 5 0]
970
[1 0 0]
971
sage: BurauTest.base_ring()
972
Finite Field of size 7
973
sage:
974
sage: BurauTest = ele1.burau_matrix( characteristic = 2 ); print BurauTest
975
[rI + 1 1 rI + 1]
976
[rI + 1 rI 0]
977
[ 1 0 0]
978
sage: BurauTest.base_ring()
979
Finite Field in rI of size 2^2
980
sage:
981
sage:
982
sage: F4.<r64> = GF(4)
983
sage: BurauTest = ele1.burau_matrix( rootBur=r64 ); print BurauTest
984
[r64 + 1 1 r64 + 1]
985
[r64 + 1 r64 0]
986
[ 1 0 0]
987
sage: BurauTest.base_ring()
988
Finite Field in r64 of size 2^2
989
sage:
990
sage: BurauTest = ele1.burau_matrix( Domain = GF(5) ); print BurauTest
991
Warning: Domain extended to splitting field of tT^2 + 4*tT + 1
992
[2*rI + 2 1 3*rI + 3]
993
[2*rI + 2 3*rI + 4 0]
994
[ 1 0 0]
995
sage: BurauTest.base_ring()
996
Finite Field in rI of size 5^2
997
sage:
998
sage: BurauTest = ele1.burau_matrix( version = 'unitary' ); print BurauTest
999
[ 0 -zeta12^3]
1000
[-zeta12^3 0]
1001
sage: BurauTest.base_ring()
1002
Cyclotomic Field of order 12 and degree 4
1003
sage:
1004
sage: BurauTest = ele1.burau_matrix( Domain = QQ[I, sqrt(3)], version =
1005
'unitary' ); print BurauTest
1006
[ 0 -I]
1007
[-I 0]
1008
sage: BurauTest.base_ring()
1009
Number Field in I with defining polynomial x^2 + 1 over its base field
1010
1011
AUTHOR:
1012
1013
- Sebastian Oehms, Sept. 2016
1014
1015
1016
REFERENCES:
1017
1018
- :wikipedia: "Burau_representation"
1019
1020
1021
for more inormation type
1022
sage: print Braid.burau_matrix.__doc__
1023
sage: print local_Braid.burau_matrix.__doc__
1024
sage: print local_Braid.__burau_matrix_wikipedia__.__doc__
1025
sage: print local_Braid.__burau_matrix_unitary__.__doc__
1026
1027
\end{verbatim}\begin{verbatim}\end{verbatim}
1028
\begin{lstlisting}
1029
\end{lstlisting}\subsection{Other matrix group realizations via the Burau representation}
1030
1031
1032
1033
{If you want to create the image of the Burau representation as as matrix group together with the corresponding group homorphism you just need to type, for instance:}
1034
1035
\begin{lstlisting}
1036
C3c7 = C3.as_matrix_group( Domain = GF(7) ); C3c7
1037
\end{lstlisting}\begin{verbatim}Matrix group over Finite Field of size 7 with 2 generators (
1038
[3 5 0] [1 0 0]
1039
[1 0 0] [0 3 5]
1040
[0 0 1], [0 1 0]
1041
)\end{verbatim}\begin{verbatim}\end{verbatim}
1042
\begin{lstlisting}
1043
\end{lstlisting}
1044
1045
{Conversion maps are availlable as in the case of the classical groups:}
1046
1047
\begin{lstlisting}
1048
c1, c2 = C3.gens(); elemC3 = c1*c2
1049
elemC3c7 = C3c7( elemC3 ); print "elemC3c7:\n", elemC3c7
1050
elemC3back = C3( elemC3c7 ); print "elemC3back:\n", elemC3back
1051
print "Check: ", elemC3back == elemC3
1052
\end{lstlisting}\begin{verbatim}elemC3c7:
1053
[3 1 4]
1054
[1 0 0]
1055
[0 1 0]\end{verbatim}\begin{verbatim}elemC3back:
1056
c0*c1\end{verbatim}\begin{verbatim}Check: True\end{verbatim}
1057
\begin{lstlisting}
1058
\end{lstlisting}
1059
1060
{Of course, the map backwards is a group homomorphism only if the representation is faithfull. In general this conversion map is a section.
1061
Further, note that the Burau representation does factor through the relations of Assion, just for certain characteristic.}
1062
1063
\subsection{Realization as complex reflection groups}
1064
1065
1066
1067
{A third kind of realization of the cubic braid groups leads to complex reflection groups. This realization is availlable starting wirh sage version 7.2 if in addition gap3 with the CHEVIE package is installed. In this case the complex reflection group is obtained by:}
1068
1069
\begin{lstlisting}
1070
1071
R3 = C3.as_reflection_group(); R3
1072
\end{lstlisting}\begin{verbatim}Irreducible complex reflection group of rank 2 and type ST4\end{verbatim}\begin{verbatim}\end{verbatim}
1073
\begin{lstlisting}
1074
\end{lstlisting}
1075
1076
{All methods implemented for the IrreduclibeComplexReflectionGroup class can be used for R3, for example:}
1077
1078
\begin{lstlisting}
1079
ctmat = R3.cartan_matrix(); print "Cartan matrix corresponding to %s:\n%s\n" %(C3, ctmat)
1080
simproots = R3.simple_roots(); print "simple roots corresponding to %s:\n%s\n" %(C3, simproots)
1081
reflhplanes = R3.reflection_hyperplanes(); print "reflection hyperplanes corresponding to %s:\n%s\n" %(C3, reflhplanes)
1082
coxele = R3.coxeter_element(); print "Coxeter element corresponding to %s:\n%s" %(C3, coxele)
1083
\end{lstlisting}\begin{verbatim}Cartan matrix corresponding to Cubic Braid group on 3 strands:
1084
[-2*E(3) - E(3)^2 E(3)^2]
1085
[ -E(3)^2 -2*E(3) - E(3)^2]
1086
\end{verbatim}\begin{verbatim}simple roots corresponding to Cubic Braid group on 3 strands:
1087
Finite family {1: (0, -2*E(3) - E(3)^2), 2: (2*E(3)^2, E(3)^2)}
1088
\end{verbatim}\begin{verbatim}reflection hyperplanes corresponding to Cubic Braid group on 3 strands:
1089
Finite family {1: Vector space of degree 2 and dimension 1 over Universal Cyclotomic Field
1090
Basis matrix:
1091
[1 0], 2: Vector space of degree 2 and dimension 1 over Universal Cyclotomic Field
1092
Basis matrix:
1093
[ 1 -1], 3: Vector space of degree 2 and dimension 1 over Universal Cyclotomic Field
1094
Basis matrix:
1095
[ 1 -E(3)], 4: Vector space of degree 2 and dimension 1 over Universal Cyclotomic Field
1096
Basis matrix:
1097
[ 1 -E(3)^2]}\end{verbatim}\begin{verbatim}\end{verbatim}\begin{verbatim}Coxeter element corresponding to Cubic Braid group on 3 strands:
1098
(1,7,6,12,23,20)(2,8,17,24,9,5)(3,16,10,19,15,21)(4,14,11,22,18,13)\end{verbatim}
1099
\begin{lstlisting}
1100
\end{lstlisting}
1101
1102
{Elements in R3 may be interpreted as element of the cubic braid group or the classical realization via conversion:}
1103
1104
\begin{lstlisting}
1105
1106
coxeleC3 = C3(coxele); print "Coxeter element as element of %s:\n%s\n" %(C3, coxeleC3)
1107
coxeleC3Cl = C3Cl(coxele); print "Coxeter element as element of the classical group corresponding to the %s:\n%s\n" %(C3, coxeleC3Cl)
1108
\end{lstlisting}\begin{verbatim}Coxeter element as element of Cubic Braid group on 3 strands:
1109
c0*c1\end{verbatim}\begin{verbatim}\end{verbatim}\begin{verbatim}Coxeter element as element of the classical group corresponding to the Cubic Braid group
1110
on 3 strands:
1111
[ 0 E(4)]
1112
[E(12)^11 E(3)]\end{verbatim}\begin{verbatim}\end{verbatim}
1113
\begin{lstlisting}
1114
\end{lstlisting}
1115
1116
{Conversion backwards is posible, as well:}
1117
1118
\begin{lstlisting}
1119
c1, c2 = C3.gens()
1120
element = c1*c2/c1/c2; elementcl = C3Cl(element)
1121
image = R3(element); print "Image of %s in %s:\n%s\n" %(element, R3, image)
1122
image = R3(elementcl); print "Image of \n%s\nin %s:\n%s\n" %(elementcl, R3, image)
1123
\end{lstlisting}\begin{verbatim}Image of c0*c1*c0^-1*c1^-1 in Irreducible complex reflection group of rank 2 and type ST4:
1124
(1,15,12,16)(2,18,24,14)(3,17,19,5)(4,20,22,6)(7,9,23,8)(10,11,21,13)
1125
\end{verbatim}\begin{verbatim}Image of
1126
[ E(3) E(12)^11]
1127
[-E(12)^11 -E(3)]
1128
in Irreducible complex reflection group of rank 2 and type ST4:
1129
(1,15,12,16)(2,18,24,14)(3,17,19,5)(4,20,22,6)(7,9,23,8)(10,11,21,13)\end{verbatim}\begin{verbatim}\end{verbatim}
1130
\begin{lstlisting}
1131
\end{lstlisting}\subsection{Realization as permutation groups}
1132
1133
1134
1135
{A third kind of realization of the cubic braid groups is that as permutation groups. This realization is in sage available for all finetely presented groups via the gap interface. In addition you will get coercion maps here, as well and a permutation group constructed with respect to the classical realization. This is the default in the call:}
1136
1137
\begin{lstlisting}
1138
C3.as_permutation_group()
1139
\end{lstlisting}\begin{verbatim}Subgroup of (Symmetric group of order 8! as a permutation group) generated by
1140
[(2,3,5)(4,6,8), (1,2,4)(5,7,6)]\end{verbatim}\begin{verbatim}\end{verbatim}
1141
\begin{lstlisting}
1142
\end{lstlisting}
1143
1144
{To obtain the permutation group calculated for the finitely presented group you must type:}
1145
1146
\begin{lstlisting}
1147
C3.as_permutation_group( native = True )
1148
\end{lstlisting}\begin{verbatim}Subgroup of (Symmetric group of order 8! as a permutation group) generated by
1149
[(2,4,5)(3,6,7), (1,2,3)(5,8,6)]\end{verbatim}\begin{verbatim}\end{verbatim}
1150
\begin{lstlisting}
1151
\end{lstlisting}\subsection{Other useful methods}
1152
1153
1154
1155
{In principal you can use all gap functions being available for these types of groups and being implemented via the gap interface of sage. Use the online help ("print dir(C3)" for example) as shown above to see them all. Here are some examples:}
1156
1157
\begin{lstlisting}
1158
S3.character_table()
1159
1160
\end{lstlisting}\begin{verbatim}[ 1 1 1 1 1 1 1]
1161
[ 1 -zeta3 - 1 zeta3 1 zeta3 -zeta3 - 1 1]
1162
[ 1 zeta3 -zeta3 - 1 1 -zeta3 - 1 zeta3 1]
1163
[ 2 -1 -1 -2 1 1 0]
1164
[ 2 -zeta3 zeta3 + 1 -2 -zeta3 - 1 zeta3 0]
1165
[ 2 zeta3 + 1 -zeta3 -2 zeta3 -zeta3 - 1 0]
1166
[ 3 0 0 3 0 0 -1]\end{verbatim}\begin{verbatim}\end{verbatim}
1167
\begin{lstlisting}
1168
U7 = AssionGroupU( 7 ); print "Order of U7:", U7.order()
1169
\end{lstlisting}\begin{verbatim}Order of U7:\end{verbatim}\begin{verbatim} 82771476480\end{verbatim}
1170
\begin{lstlisting}
1171
conCls1s2 = S4.conjugacy_class( x*y**2*z ); conCls1s2
1172
\end{lstlisting}\begin{verbatim}Conjugacy class of s0*s1^2*s2 in Assion group on 4 strands of type S\end{verbatim}
1173
\begin{lstlisting}
1174
\end{lstlisting}
1175
1176
1177
\end{document}
1178
%sagemathcloud={"latex_command":"xelatex -synctex=1 -interact=nonstopmode 'tmp.tex'"}
1179
1180