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

Speed improvements for automorphism groups #2383

Merged
merged 2 commits into from
Jun 8, 2018

Conversation

hulpke
Copy link
Contributor

@hulpke hulpke commented Apr 22, 2018

Improvements to element order, to SmallGeneratingSet for large degree permutation groups (that come up in the automorphisms groups code) and for isomorphism test in the case of solvable automorphism groups.

(This makes the issue in #2377 disappear)

@hulpke hulpke added kind: enhancement Label for issues suggesting enhancements; and for pull requests implementing enhancements do not merge PRs which are not yet ready to be merged (e.g. submitted for discussion, or test results) labels Apr 22, 2018
@fingolfin
Copy link
Member

Typo in commit message: shuitable

@@ -18,34 +18,101 @@ MORPHEUSELMS := 50000;

InstallMethod(Order,"for automorphisms",true,[IsGroupHomomorphism],0,
function(hom)
local map,phi,o,lo,i,start,img;
local map,phi,o,lo,i,j,start,img,d,nat,ser,jord,first;
d:=Source(hom);
Copy link
Member

Choose a reason for hiding this comment

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

A short comment here as to what this method does would be very helpful. Right now, I see the commit message, which heelps, but if I read that code in a year, I won't know about it... BTW the commit message says a "characteristic series" is computed, but in some cases it only checks if the series is invariant under hom (which of course is enough)

So, wow about this

# To compute the order, use a suitable characteristic series 'ser' and work in the factor groups.

(And perhaps "characteristic series" should be "series invariant under 'hom'" ?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

is in now

lib/morpheus.gi Outdated
lo:=lo+1;

# do the bijectivity test only if high local order, then it does not
# matter. IsBiojective is cached, sop second test is cheap.
Copy link
Member

Choose a reason for hiding this comment

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

typos: IsBiojective, sop

lib/morpheus.gi Outdated
lo:=lo+1;

# do the bijectivity test only if high local order, then it does not
# matter. IsBiojective is cached, sop second test is cheap.
Copy link
Member

Choose a reason for hiding this comment

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

again: typos

@olexandr-konovalov
Copy link
Member

@hulpke will this work in stable-4.9 too? We need to fix #2377 to release GAP 4.9.1.

@codecov
Copy link

codecov bot commented Apr 23, 2018

Codecov Report

Merging #2383 into master will increase coverage by <.01%.
The diff coverage is 62.96%.

@@            Coverage Diff             @@
##           master    #2383      +/-   ##
==========================================
+ Coverage   74.34%   74.34%   +<.01%     
==========================================
  Files         481      481              
  Lines      243429   243574     +145     
==========================================
+ Hits       180968   181084     +116     
- Misses      62461    62490      +29
Impacted Files Coverage Δ
lib/ctbl.gd 70.83% <ø> (ø) ⬆️
lib/teaching.g 79.6% <ø> (ø) ⬆️
lib/autsr.gi 31.39% <0%> (-0.14%) ⬇️
lib/grpperm.gi 86.47% <100%> (+0.13%) ⬆️
lib/morpheus.gi 81.83% <57.37%> (-1.05%) ⬇️
lib/csetperm.gi 88.27% <0%> (-3.09%) ⬇️
lib/tietze.gi 75.4% <0%> (-0.72%) ⬇️
lib/grppcint.gi 98.64% <0%> (-0.68%) ⬇️
lib/csetgrp.gi 58.78% <0%> (-0.38%) ⬇️
hpcgap/lib/hpc/stdtasks.g 64.45% <0%> (-0.26%) ⬇️
... and 11 more

@hulpke
Copy link
Contributor Author

hulpke commented Apr 23, 2018

@alex-konovalov
Yes, this should also work in 4.9

@fingolfin
Copy link
Member

@alex-konovalov Why do we need to backport this to 4.9? I am not convinced, and very reluctant to do so. See my comment on PR #2377 for details

@olexandr-konovalov
Copy link
Member

@fingolfin your reluctance definitely has some point. If this breaks manual examples, it may also break tests in packages. If we will decide to backport, then only after we will check which impact that may have on packages. If we do not backport, then we need to decide whether to release with #2377 unresolved or not.

@gap-system gap-system deleted a comment from hulpke Apr 23, 2018
lib/morpheus.gi Outdated
# this method calculates a chief series invariant under `hom` and calculates
# orders of group elements in factors of this series under action of `hom`.
# Every time an orbit length is found, `hom` is replaced by the appropriate
# power. Initiall small chief factors are preferred. In the end all
Copy link
Member

Choose a reason for hiding this comment

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

Initiall -> Initially ?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Corrected

Copy link
Member

@fingolfin fingolfin left a comment

Choose a reason for hiding this comment

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

Looks good to me (but we'll delay merging until the "DO NOT MERGE" tag is gone)

@hulpke
Copy link
Contributor Author

hulpke commented Apr 23, 2018

@fingolfin Thanks. I will wait until #2377 is in some way or another sorted out.

@hulpke hulpke removed the do not merge PRs which are not yet ready to be merged (e.g. submitted for discussion, or test results) label Jun 7, 2018
by working in suitable hom-stable factors first.
Includes improvements to `SmallGeneratingSet` for perm groups.

Also dealt with changed generators in manual examples
@hulpke hulpke merged commit 3362c7c into gap-system:master Jun 8, 2018
@fingolfin fingolfin added the release notes: added PRs introducing changes that have since been mentioned in the release notes label Jun 18, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind: enhancement Label for issues suggesting enhancements; and for pull requests implementing enhancements release notes: added PRs introducing changes that have since been mentioned in the release notes topic: library
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants