-
Notifications
You must be signed in to change notification settings - Fork 4
Work towards fixing PreservedSesquilinearForms
#52
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
base: master
Are you sure you want to change the base?
Conversation
951fd3b to
757807e
Compare
Codecov Report
Additional details and impacted files@@ Coverage Diff @@
## master #52 +/- ##
=======================================
Coverage 82.35% 82.35%
=======================================
Files 5 5
Lines 3475 3475
=======================================
Hits 2862 2862
Misses 613 613 |
| ############################################################################# | ||
| ## | ||
| #F ClassicalForms_InvariantFormDual( <module>, <dmodule> ) | ||
| #F ClassicalForms_InvariantFormDual( <gens_scalars> ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually the recog package calls ClassicalForms_InvariantFormDual, so changing this here breaks recog. It would be great if we could avoid that. That could also include changing recog to call ClassicalForms_InvariantFormDual differently, but that's a lot more work and has to be carefully coordinated. Perhaps the old ClassicalForms_InvariantFormDual can be kept and the new code be added under a new name?
Or perhaps recog should be changed to not call these functions and instead call some alternative higher level functions, whatever they might be (perhaps they don't exist yet...)
Here is how recog calls this and a few other forms functions:
# now try to find an invariant form
if recognise.maybeDual then
dmodule := ClassicalForms_GeneratorsWithoutScalarsDual(grp);
if dmodule <> false then
form := ClassicalForms_InvariantFormDual(module,dmodule);
if form <> false then
Add( recognise.ClassicalForms,
BilinearFormByMatrix(form[2], field));
if Length(form)=4 then
recognise.QuadraticFormType := form[1];
recognise.QuadraticForm := QuadraticFormByMatrix(form[4]);
fi;
return false;
else
recognise.maybeDual := false;
fi;
fi;
fi;
if recognise.maybeFrobenius then
fmodule := ClassicalForms_GeneratorsWithoutScalarsFrobenius(grp);
if fmodule <> false then
form := ClassicalForms_InvariantFormFrobenius(module,fmodule);
if form <> false then
Add( recognise.ClassicalForms,
HermitianFormByMatrix(form[2], field));
return false;
else
recognise.maybeFrobenius := false;
fi;
fi;
fi;| champion := [gens[i],AsList(Group(PrimitiveElement(field)))]; | ||
| len := Length(champion[2]); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Isn't this the same as the following?
| champion := [gens[i],AsList(Group(PrimitiveElement(field)))]; | |
| len := Length(champion[2]); | |
| champion := [gens[i],AsList(Units(field))]; | |
| len := Size(field)-1; |
@jdebeule as discussed, I reverted the
PreservedSesquilinearFormschanges frommasterand put them into a new branchfix_recognition. This PR tracks that branch, so if you make updates, they get tested by our CI.Another advantage: I can leave code comments here :-)