Skip to content

Conversation

@fingolfin
Copy link
Member

@jdebeule as discussed, I reverted the PreservedSesquilinearForms changes from master and put them into a new branch fix_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 :-)

@codecov
Copy link

codecov bot commented Dec 13, 2023

Codecov Report

Merging #52 (757807e) into master (dc34bfb) will not change coverage.
Report is 1 commits behind head on master.
The diff coverage is n/a.

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> )
Copy link
Member Author

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;

Comment on lines +287 to +288
champion := [gens[i],AsList(Group(PrimitiveElement(field)))];
len := Length(champion[2]);
Copy link
Member Author

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?

Suggested change
champion := [gens[i],AsList(Group(PrimitiveElement(field)))];
len := Length(champion[2]);
champion := [gens[i],AsList(Units(field))];
len := Size(field)-1;

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.

2 participants