MAGMA Nilpotency Class计算错误

时间:2014-12-16 15:12:35

标签: magma

我们在课堂上设计了一个函数来测试一个组的nilpotency类是否是它的p-Sylow的总和。原文是下面的第一个,没有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 个答案:

答案 0 :(得分:2)

这是MAGMA的一个错误;一旦为PC组建立了nilpotence,NilpotencyClass()的返回值就是垃圾。第一个调用给出了正确的值,但后来的调用将失败。

这已针对下一个补丁版本(5月份的某个时间)进行了修复。与此同时,解决方法是使用(例如)

> npclass := func<G | #LowerCentralSeries(G) - 1>;
> npclass(G);
2