All Cartan matrices

This commit is contained in:
Florian Stecker 2016-12-13 21:26:48 +01:00
parent fc4ee42646
commit 32d0dc8da1

64
weyl.c
View File

@ -229,28 +229,26 @@ int weyl_opposition(semisimple_type_t type, int simple_root)
r = simple_root - offset; r = simple_root - offset;
switch(type.factors[factor].series) { switch(type.factors[factor].series) {
case 'B': case 'C': case 'F': case 'G':
iota_r = r;
break;
case 'A': case 'A':
iota_r = type.factors[factor].rank - 1 - r; iota_r = type.factors[factor].rank - 1 - r;
break; break;
case 'B': case 'C':
iota_r = r;
break;
case 'D': case 'D':
ERROR(1, "A Weyl group of type %c%d does not exist or is not implemented!\n", type.factors[factor].series, type.factors[factor].rank); if(type.factors[factor].rank % 2 == 0)
iota_r = r;
else
iota_r = r == 0 ? 1 : r == 1 ? 0 : r;
break; break;
case 'E': case 'E':
ERROR(1, "A Weyl group of type %c%d does not exist or is not implemented!\n", type.factors[factor].series, type.factors[factor].rank); if(type.factors[factor].rank == 6)
break; iota_r = r;
else
case 'F': iota_r = r == 3 || r == 4 ? r : 5 - r;
ERROR(1, "A Weyl group of type %c%d does not exist or is not implemented!\n", type.factors[factor].series, type.factors[factor].rank);
break;
case 'G':
ERROR(1, "A Weyl group of type %c%d does not exist or is not implemented!\n", type.factors[factor].series, type.factors[factor].rank);
break; break;
default: default:
@ -275,50 +273,46 @@ void weyl_cartan_matrix(semisimple_type_t type, int *m)
for(int i = 0; i < type.factors[k].rank; i++) // A is the submatrix corresponding to the current simple factor for(int i = 0; i < type.factors[k].rank; i++) // A is the submatrix corresponding to the current simple factor
A[i] = &m[(i+offset)*rank + offset]; A[i] = &m[(i+offset)*rank + offset];
switch(type.factors[k].series) {
case 'A':
for(int i = 1; i < type.factors[k].rank; i++) { for(int i = 1; i < type.factors[k].rank; i++) {
A[i][i-1] = -1; A[i][i-1] = -1;
A[i-1][i] = -1; A[i-1][i] = -1;
} }
switch(type.factors[k].series) {
case 'A':
break; break;
case 'B': // not sure at all about the order of B and C case 'B':
if(type.factors[k].rank >= 2) { ERROR(type.factors[k].rank < 2, "A Weyl group of type %c%d does not exist or is not implemented!\n", type.factors[k].series, type.factors[k].rank);
A[0][1] = -2; A[0][1] = -2;
A[1][0] = -1;
}
for(int i = 2; i < type.factors[k].rank; i++) {
A[i][i-1] = -1;
A[i-1][i] = -1;
}
break; break;
case 'C': case 'C':
if(type.factors[k].rank >= 2) { ERROR(type.factors[k].rank < 2, "A Weyl group of type %c%d does not exist or is not implemented!\n", type.factors[k].series, type.factors[k].rank);
A[0][1] = -1;
A[1][0] = -2; A[1][0] = -2;
}
for(int i = 2; i < type.factors[k].rank; i++) {
A[i][i-1] = -1;
A[i-1][i] = -1;
}
break; break;
case 'D': case 'D':
ERROR(1, "A Weyl group of type %c%d does not exist or is not implemented!\n", type.factors[k].series, type.factors[k].rank); ERROR(type.factors[k].rank < 3, "A Weyl group of type %c%d does not exist or is not implemented!\n", type.factors[k].series, type.factors[k].rank);
A[0][1] = A[1][0] = 0;
A[0][2] = A[2][0] = -1;
break; break;
case 'E': case 'E':
ERROR(1, "A Weyl group of type %c%d does not exist or is not implemented!\n", type.factors[k].series, type.factors[k].rank); ERROR(type.factors[k].rank < 6 || type.factors[k].rank > 8, "A Weyl group of type %c%d does not exist or is not implemented!\n", type.factors[k].series, type.factors[k].rank);
A[1][2] = A[2][1] = 0;
A[1][3] = A[3][1] = -1;
break; break;
case 'F': case 'F':
ERROR(1, "A Weyl group of type %c%d does not exist or is not implemented!\n", type.factors[k].series, type.factors[k].rank); ERROR(type.factors[k].rank != 4, "A Weyl group of type %c%d does not exist or is not implemented!\n", type.factors[k].series, type.factors[k].rank);
A[3][2] = -2;
break; break;
case 'G': case 'G':
ERROR(1, "A Weyl group of type %c%d does not exist or is not implemented!\n", type.factors[k].series, type.factors[k].rank); ERROR(type.factors[k].rank != 2, "A Weyl group of type %c%d does not exist or is not implemented!\n", type.factors[k].series, type.factors[k].rank);
A[1][0] = -3;
break; break;
default: default: