MAGMA NilpotencyClass просчитывается

Мы разработали функцию в классе, чтобы проверить, является ли класс нильпотентности группы суммой ее классов p-силов. Оригинал был первым ниже, без n:=NilpotencyClass(G) линия. Я получил странный результат, как вы увидите ниже. Учитель получил другой странный результат: 3 1, Но группа G не был абелевым, поэтому мы бы нашли неабелеву нильпотентную группу 1-го класса, что абсурдно. Затем мы попытались изолировать функцию также потому, что у моего одноклассника эта функция работала правильно. Это решило проблему. Заинтересовавшись этой загадкой, я попытался изолировать проблему и обнаружил, что она вышла из-под контроля. Я пытался вычислить возвращенный NilpotencyClass в начале функции и все заработало. Если я этого не сделаю, даже за пределами функции я все равно получаю NilpotencyClass(G)=32767! Итак, у меня есть следующий код:

TestNilpotencyClass := function(G)
    n:=NilpotencyClass(G);
    if not IsNilpotent(G) then
        return 0;
    end if;
    N := #G;
    somma := 0;
    for pn in Factorisation(N) do
        p := pn[1];
        P := SylowSubgroup(G,p);
        c := NilpotencyClass(P);
        somma +:= c;
    end for;
    return somma, n;
end function;

TestNilpotencyClassb := function(G)
    if not IsNilpotent(G) then
        return 0;
    end if;
    NilpotencyClass(G);
    N := #G;
    somma := 0;
    for pn in Factorisation(N) do
        p := pn[1];
        P := SylowSubgroup(G,p);
        c := NilpotencyClass(P);
        somma +:= c;
    end for;
    return somma, NilpotencyClass(G);
end function;

TestNilpotencyClassc := function(G)
    if (not IsNilpotent(G)) then
        return 0;
    end if;
    NilpotencyClass(G);
    N := #G;
    somma := 0;
    for pn in Factorisation(N) do
        p := pn[1];
        P := SylowSubgroup(G,p);
        c := NilpotencyClass(P);
        somma +:= c;
    end for;
    return somma, NilpotencyClass(G);
end function;

TestNilpotencyClassd := function(G)
    if (not (IsNilpotent(G))) then
        return 0;
    end if;
    NilpotencyClass(G);
    N := #G;
    somma := 0;
    for pn in Factorisation(N) do
        p := pn[1];
        P := SylowSubgroup(G,p);
        c := NilpotencyClass(P);
        somma +:= c;
    end for;
    return somma, NilpotencyClass(G);
end function;

G:=SmallGroups(40)[11];
TestNilpotencyClass(G);
TestNilpotencyClassb(G);
TestNilpotencyClassc(G);
TestNilpotencyClassd(G);

Загрузка этого на MAGMA дает следующий результат:

3 2
32767
3 32767
32767
3 32767
32767
3 32767

Откуда этот 32767? Обратите внимание, как это 2^(15)-1. Почему этот просчет производится?

Обновление: я попытался скопировать код в MAGMA, и результат был тот же. Кроме того, после выхода и повторного открытия я попытался вставить копию только первой функции, а затем вычислить NilpotencyClass, затем с помощью функции, и вот результат:

host-001:~ michelegorini$ magma
Magma V2.20-4 (STUDENT)   Fri Dec 19 2014 17:29:45    [Seed = 1006321001]
Type ? for help.  Type <Ctrl>-D to quit.
TestNilpotencyClass := function(G)
    n:=NilpotencyClass(G);
    if not IsNilpotent(G) then
        return 0;
    end if;
    N := #G;
    somma := 0;
    for pn in Factorisation(N) do
        p := pn[1];
        P := SylowSubgroup(G,p);
        c := NilpotencyClass(P);
        somma +:= c;
    end for;
    return somma, n;
end function;> TestNilpotencyClass := function(G)
function>     n:=NilpotencyClass(G);
function>     if not IsNilpotent(G) then
function|if>         return 0;
function|if>     end if;
function>     N := #G;
function>     somma := 0;
function>     for pn in Factorisation(N) do
function|for>         p := pn[1];
function|for>         P := SylowSubgroup(G,p);
function|for>         c := NilpotencyClass(P);
function|for>         somma +:= c;
function|for>     end for;
function>     return somma, n;
function> end function;
> G:=SmallGroups(40)[11];
> TestNilpotencyClass(G);
3 2
> NilpotencyClass(G);
32767
> TestNilpotencyClass(G);
3 32767
> TestNilpotencyClass(SmallGroups(40)[11]);
3 2
> NilpotencyClass(SmallGroups(40)[11]);    
2

1 ответ

Решение

Это ошибка в MAGMA; как только nilpotence установлен для группы ПК, возвращаемое значение NilpotencyClass() становится мусором. Первый вызов дает правильное значение, но последующие вызовы не удастся.

Это было исправлено в следующем выпуске патча (некоторое время в мае). В то же время, обходной путь будет использовать (например)

> npclass := func<G | #LowerCentralSeries(G) - 1>;
> npclass(G);
2
Другие вопросы по тегам