我们在课堂上设计了一个函数来测试一个组的幂等性是否是其 p-Sylows 的总和。原件是下面的第一个,没有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