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;
switch(type.factors[factor].series) {
case 'B': case 'C': case 'F': case 'G':
iota_r = r;
break;
case 'A':
iota_r = type.factors[factor].rank - 1 - r;
break;
case 'B': case 'C':
iota_r = r;
break;
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;
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);
break;
case 'F':
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);
if(type.factors[factor].rank == 6)
iota_r = r;
else
iota_r = r == 3 || r == 4 ? r : 5 - r;
break;
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
A[i] = &m[(i+offset)*rank + offset];
switch(type.factors[k].series) {
case 'A':
for(int i = 1; i < type.factors[k].rank; i++) {
A[i][i-1] = -1;
A[i-1][i] = -1;
}
switch(type.factors[k].series) {
case 'A':
break;
case 'B': // not sure at all about the order of B and C
if(type.factors[k].rank >= 2) {
case 'B':
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[1][0] = -1;
}
for(int i = 2; i < type.factors[k].rank; i++) {
A[i][i-1] = -1;
A[i-1][i] = -1;
}
break;
case 'C':
if(type.factors[k].rank >= 2) {
A[0][1] = -1;
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] = -2;
}
for(int i = 2; i < type.factors[k].rank; i++) {
A[i][i-1] = -1;
A[i-1][i] = -1;
}
break;
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;
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;
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;
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;
default: