Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changes in Unitary and Orthogonal from Summerschool 2019 by Cheryl an… #223

Draft
wants to merge 8 commits into
base: master
Choose a base branch
from

Conversation

aniemeyer
Copy link

…d Alice

@codecov
Copy link

codecov bot commented Dec 9, 2020

Codecov Report

Merging #223 (79f19cb) into master (0401141) will increase coverage by 0.81%.
The diff coverage is 77.77%.

❗ Current head 79f19cb differs from pull request most recent head 349df2c. Consider uploading reports for the commit 349df2c to get more accurate results

@@            Coverage Diff             @@
##           master     #223      +/-   ##
==========================================
+ Coverage   77.87%   78.69%   +0.81%     
==========================================
  Files          43       37       -6     
  Lines       18398    17205    -1193     
==========================================
- Hits        14328    13539     -789     
+ Misses       4070     3666     -404     
Impacted Files Coverage Δ
gap/matrix/classical.gi 76.66% <77.77%> (+1.08%) ⬆️
gap/matrix/matimpr.gi 64.05% <0.00%> (-4.98%) ⬇️
gap/matrix.gi 91.30% <0.00%> (-2.89%) ⬇️
gap/base/methsel.gi 94.80% <0.00%> (-2.07%) ⬇️
gap/projective/d247.gi 75.24% <0.00%> (-0.95%) ⬇️
gap/projective/tensor.gi 55.39% <0.00%> (-0.94%) ⬇️
gap/projective/c6.gi 61.58% <0.00%> (-0.60%) ⬇️
gap/projective/c3c5.gi 87.75% <0.00%> (-0.12%) ⬇️
gap/projective/almostsimple/lietype.gi 47.96% <0.00%> (-0.08%) ⬇️
gap/perm/giant.gi 90.31% <0.00%> (-0.05%) ⬇️
... and 24 more

@fingolfin
Copy link
Member

Sporadic test failures due to TestSporadic sigh @ssiccha I am tempted to say we should just disable all of those for now until your replacement code lands (i.e. that PR should add them back)

## 2.July.2019: There is a mistake in the paper here
## There are maximal subgroups of Omega+(8,5) that contain
## elements of order 7,13,3
if not HasElementsMultipleOf( recognise.orders, [7,13,3,312]) then
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So where does the 312 come from? It's not a prime, and I just had a look at POmega(8,5) and based on a random sampling it only contains elements of order 156, not 312.

Wouldn't 31 make more sense?

return fail;
fi;

pgrp := ProjectiveActionOnFullSpace( grp, recognise.field, d );
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On my laptop I get:

gap> ProjectiveActionOnFullSpace( Omega(+1,8,5), GF(5), 8);; time;
648

So this takes more than half a second. That seems rather slow. We also may end up re-computing this action later on... As it is, it caused a severe slowdown of our test suite, because now testing with the input O(+1,8,5) is very slow. Before this PR:

gap> ReadPackage("recog", "tst/naming.g");
gap> TestNaming("SO", +1, 8, 5); time;
645

With this PR:

gap> ReadPackage("recog", "tst/naming.g");
gap> TestNaming("SO", +1, 8, 5); time;
212476

So it goes in total from 0.6 seconds to 3.5 minutes!!!

Do we really need the whole orbit? Perhaps we can instead just check the length of the orbit of a single vector or so?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just noticed that we do the same computation in other cases too. So is this slower because the dimension is bigger or do we maybe not test the other cases?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The other cases are indeed significantly smaller; just computing the orbit takes some time. Moreover 5^7 > 2^16 so "big" permutations have to be used; 4*5^7 = 320kb per permutation kills most caches quickly.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@aniemeyer and I are looking at this.

I'll use magma to compute the maximal subgroups of GO+(8,5). Then we can see how to distinguish them from the Omega+(8,5).

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, we should write down which theorem this code is based upon.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some thoughts:

  • It should be possible to compute only one orbit. I've tried it and unfortunately that also takes half a second.
  • I haven't figured out yet how to compute the maximal sugroups of GO+(8,5) in Magma. I can get the maximal ones of Omega+(8,5), but that's it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you know by now what the relevant "bad" maximal subgroup is?

Also, I noticed that while I complained that pgrp := ProjectiveActionOnFullSpace(...) takes half a second, the call Size(pgrp) later actually takes 5 seconds ... So yeah, we need to work on this :-)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

gap> orb:=Orbit(G,One(G)[1], OnLines);; time;
90
gap> Length(orb);
19656
gap> pg:=Action(G,orb,OnLines);; time;
223
gap> Size(pg2); time;
8911539000000000000
1369

So perhaps this would work:

orb:=Orbit(grp, One(grp)[1], OnLines);
if not Length(orb) in [ 19656, 39000 ] then  ... return false; fi
pgrp:=Action(G,orb,OnLines);
if Size(pgrp) ...

Of course pgrp may underestimate the actual size of the group. In order to understand whether the above is sufficient or not, I'd need to better understand what the group is we want to distinguish. @aniemeyer just told me that it is O(7,5) which is of course muuuch smaller; it has size 914004000000000. So perhaps it suffices to test whether grp resp. pgrp has more than 914004000000000 elements; for this, one could abort the random schreier sims early as soon as one has a group bigger than that.

Copy link
Collaborator

@ssiccha ssiccha Feb 15, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@fingolfin Oh, interesting! Aborting the schreier sims computation if we found enough elements then seems like the way to go. Cheryl and Alice had a chat about how to do this case last week (I think) and we'll try to put it into code after the GAP days.

@ssiccha
Copy link
Collaborator

ssiccha commented Jan 13, 2021

I added some "work in progress" code how we are fixing Omega+(8,5). We're not finished yet though.

@ssiccha ssiccha marked this pull request as draft April 7, 2021 10:15
@ssiccha
Copy link
Collaborator

ssiccha commented Apr 20, 2021

Here is our Hack.md. I haven't updated it for some time:
https://hackmd.io/ZwPI13VVQQuvdG1lSdMhCw

@ssiccha
Copy link
Collaborator

ssiccha commented Aug 21, 2021

Rebased onto master. I think I'll go ahead and compare the gap and magma code for the classical groups on a case by case basis and, unless they differ substantially, just take over the magma version. Since the magma code is fairly well tested, that might be good enough for us.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants