gap-packages / wedderga

Wedderburn Decomposition of Group Algebras
https://gap-packages.github.io/wedderga/
GNU General Public License v2.0
3 stars 6 forks source link

modify defining group functions to use perm group instead of pc group #72

Closed drallenherman closed 4 years ago

drallenherman commented 4 years ago

Modify DefiningGroup functions to use PermGroup instead of SpecialPcGroup to improve performance

olexandr-konovalov commented 4 years ago

@drallenherman what this was? need help?

olexandr-konovalov commented 4 years ago

Tests are in. This may not be necessarily a good thing:

########> Diff in /home/travis/build/gap-packages/wedderga/gaproot/pkg/wedderg\
a/tst/wedderga07.tst:217
# Input is:
LocalIndicesOfCyclotomicAlgebra(W[27]);
# Expected output:
[ [ infinity, 2 ] ]
# But found:
Error, reached the pre-set memory limit
(change it with the -o command line option)
########

perhaps some heuristics depending on the properties of the group are needed?

drallenherman commented 4 years ago

Tests are in. This may not be necessarily a good thing:

########> Diff in /home/travis/build/gap-packages/wedderga/gaproot/pkg/wedderg\
a/tst/wedderga07.tst:217
# Input is:
LocalIndicesOfCyclotomicAlgebra(W[27]);
# Expected output:
[ [ infinity, 2 ] ]
# But found:
Error, reached the pre-set memory limit
(change it with the -o command line option)
########

perhaps some heuristics depending on the properties of the group are needed?

I do not understand why this happens. LocalIndexAtTwoByCharacter isn't working on this algebra, because at some point in the middle after the field is increased to the PSplitSubextension, when it tries to do SimpleComponentOfGroupRingByCharacter, GAP closes the window like what happens in a memory crash at that step. DefiningGroup returns a result almost immediately. I don't see how switching to a Permutation Group can cause the problem here and not with divalg, but I don't know how this change might interact with the change to SimpleAlgebraInfoByData that Angel made.

angeldelriomateos commented 4 years ago

Tests are in. This may not be necessarily a good thing:

########> Diff in /home/travis/build/gap-packages/wedderga/gaproot/pkg/wedderg\
a/tst/wedderga07.tst:217
# Input is:
LocalIndicesOfCyclotomicAlgebra(W[27]);
# Expected output:
[ [ infinity, 2 ] ]
# But found:
Error, reached the pre-set memory limit
(change it with the -o command line option)
########

perhaps some heuristics depending on the properties of the group are needed?

Can you give more information about what is the input in this calculation so that I can reproduce it in my computer and invetigate what is the problem?

drallenherman commented 4 years ago

Tests are in. This may not be necessarily a good thing:

########> Diff in /home/travis/build/gap-packages/wedderga/gaproot/pkg/wedderg\
a/tst/wedderga07.tst:217
# Input is:
LocalIndicesOfCyclotomicAlgebra(W[27]);
# Expected output:
[ [ infinity, 2 ] ]
# But found:
Error, reached the pre-set memory limit
(change it with the -o command line option)
########

perhaps some heuristics depending on the properties of the group are needed?

Can you give more information about what is the input in this calculation so that I can reproduce it in my computer and invetigate what is the problem?

LocalIndices on last component of QG for SG(480,600). divalg does it no problem. Using pr/72 with PermGroup replacing SpecialPcGroup in DefiningGroup and DefiningGroupAndCharacter functions (no other changes, and this is usually faster), there is a memory overload on one of the SimpleComponentOfGroupRingByCharacter steps in LocalIndexAtTwoByCharacter. It makes no sense.

angeldelriomateos commented 4 years ago

I don't have problems with this calculation:

gap> G:=SmallGroup(480,600); <pc group of size 480 with 7 generators> gap> QG:=GroupRing(Rationals,G); <algebra-with-one over Rationals, with 7 generators> gap> wd := WedderburnDecompositionInfo(QG); [ [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], [ 2, Rationals ], [ 2, Rationals ], [ 2, Rationals ], [ 2, NF(5,[ 1, 4 ]) ], [ 2, Rationals ], [ 2, Rationals ], [ 2, Rationals ], [ 2, NF(5,[ 1, 4 ]) ], [ 2, NF(5,[ 1, 4 ]) ], [ 2, NF(5,[ 1, 4 ]) ], [ 2, Rationals, 4, [ 2, 3, 2 ] ], [ 4, Rationals ], [ 4, NF(5,[ 1, 4 ]) ], [ 4, NF(5,[ 1, 4 ]) ], [ 1, NF(24,[ 1, 5, 7, 11 ]), 24, [ [ 2, 5, 18 ], [ 2, 7, 12 ] ], [ [ 6 ] ] ], [ 4, NF(5,[ 1, 4 ]) ], [ 1, NF(40,[ 1, 11, 29, 39 ]), 40, [ [ 2, 11, 20 ], [ 2, 29, 30 ] ], [ [ 10 ] ] ], [ 4, NF(15,[ 1, 14 ]) ], [ 1, NF(5,[ 1, 4 ]), 60, [ [ 2, 11, 0 ], [ 2, 19, 30 ], [ 2, 31, 30 ] ], [ [ 0, 45 ], [ 15 ] ] ] ] gap> A:=wd[27]; [ 1, NF(5,[ 1, 4 ]), 60, [ [ 2, 11, 0 ], [ 2, 19, 30 ], [ 2, 31, 30 ] ], [ [ 0, 45 ], [ 15 ] ] ] gap> LocalIndicesOfCyclotomicAlgebra(A); [ [ infinity, 2 ] ]

drallenherman commented 4 years ago

I don't have problems with this calculation:

gap> G:=SmallGroup(480,600); <pc group of size 480 with 7 generators> gap> QG:=GroupRing(Rationals,G); <algebra-with-one over Rationals, with 7 generators> gap> wd := WedderburnDecompositionInfo(QG); [ [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], [ 1, Rationals ], [ 2, Rationals ], [ 2, Rationals ], [ 2, Rationals ], [ 2, NF(5,[ 1, 4 ]) ], [ 2, Rationals ], [ 2, Rationals ], [ 2, Rationals ], [ 2, NF(5,[ 1, 4 ]) ], [ 2, NF(5,[ 1, 4 ]) ], [ 2, NF(5,[ 1, 4 ]) ], [ 2, Rationals, 4, [ 2, 3, 2 ] ], [ 4, Rationals ], [ 4, NF(5,[ 1, 4 ]) ], [ 4, NF(5,[ 1, 4 ]) ], [ 1, NF(24,[ 1, 5, 7, 11 ]), 24, [ [ 2, 5, 18 ], [ 2, 7, 12 ] ], [ [ 6 ] ] ], [ 4, NF(5,[ 1, 4 ]) ], [ 1, NF(40,[ 1, 11, 29, 39 ]), 40, [ [ 2, 11, 20 ], [ 2, 29, 30 ] ], [ [ 10 ] ] ], [ 4, NF(15,[ 1, 14 ]) ], [ 1, NF(5,[ 1, 4 ]), 60, [ [ 2, 11, 0 ], [ 2, 19, 30 ], [ 2, 31, 30 ] ], [ [ 0, 45 ], [ 15 ] ] ] ] gap> A:=wd[27]; [ 1, NF(5,[ 1, 4 ]), 60, [ [ 2, 11, 0 ], [ 2, 19, 30 ], [ 2, 31, 30 ] ], [ [ 0, 45 ], [ 15 ] ] ] gap> LocalIndicesOfCyclotomicAlgebra(A); [ [ infinity, 2 ] ]

I don't either on the current divalg branch. It's on pr/72 where DefiningGroup functions use PermGroup in place of SpecialPcGroup the problem occurs for me.