/
dual-coxeter.magma
78 lines (70 loc) · 2.06 KB
/
dual-coxeter.magma
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
///////////////////////////////////////////////////////////////
//
// For certain specific root systems, record some constants and hightest weights
//
// in support of a paper by Maurice Chayet & Skip Garibaldi
//
// version of 7/9/2020
//
/////////////////////////////////////////////////////////////////
// ------------------------------------------
// dual Coxeter number
function hvee_function(family, rk);
if family in ["A", "C"] then
return rk + 1;
elif family eq "B" then
return 2*rk - 1;
elif family eq "D" then
return 2*rk - 2;
elif family eq "E" then
if rk eq 6 then
return 12;
elif rk eq 7 then
return 18;
elif rk eq 8 then
return 30;
end if;
elif family eq "F" and rk eq 4 then
return 9;
elif family eq "G" and rk eq 2 then
return 4;
end if;
return false;
end function;
// ------------------------------------------
// Coxeter number
function h_function(family, rk);
if family in ["A", "D", "E"] then
return hvee_function(family, rk); // for simply laced root systems h = hvee
elif family in ["B", "C"] then
return 2*rk;
elif family eq "F" and rk eq 4 then
return 12;
elif family eq "G" and rk eq 2 then
return 6;
end if;
return false;
end function;
// A(g)/k is irreducible with highest weight beta
beta := AssociativeArray();
beta["A2"] := [1,1];
beta["G2"] := [2,0];
beta["F4"] := [0,0,0,2];
beta["E6"] := [1,0,0,0,0,1];
beta["E7"] := [0,0,0,0,0,1,0];
beta["E8"] := [1,0,0,0,0,0,0,0];
// the highest weight of the "natural" representation
pi_array := AssociativeArray();
pi_array["A2"] := [1,0];
pi_array["G2"] := [1,0];
pi_array["F4"] := [0,0,0,1];
pi_array["E6"] := [1,0,0,0,0,0];
pi_array["E7"] := [0,0,0,0,0,0,1];
pi_array["E8"] := [0,0,0,0,0,0,0,1];
// the highest weight of the dual of the natural representation
pid := AssociativeArray();
pid["A2"] := [0,1];
pid["E6"] := [0,0,0,0,0,1];
for key in ["G2", "F4", "E7", "E8"] do
pid[key] := pi_array[key];
end for;