Skip to content

CI failures against GAP master due to MatrixObj handling #85

@fingolfin

Description

@fingolfin

CC @ThomasBreuer

The CI tests in the forms package fail in tst/adv/conformal.tst with Error, <mat> * <matobj> is not defined

A self-contained reproducer:

F:=GF(2);
filt:=IsPlistMatrixRep;
permmat:= Matrix( filt, F, PermutationMat( (1,2), 2, F ) );
gg:= ConformalSymplecticGroup( 2, F, permmat );  # works
gg:= ConformalSymplecticGroup( 2, F, permmat : ConstructingFilter:= filt );  # error

gives

gap> F:=GF(2);
GF(2)
gap> filt:=IsPlistMatrixRep;
<Representation "IsPlistMatrixRep">
gap> permmat:= Matrix( filt, F, PermutationMat( (1,2), 2, F ) );
<2x2-matrix over GF(2)>
gap> gg:= ConformalSymplecticGroup( 2, F, permmat );
SL(2,2)
gap> gg:= ConformalSymplecticGroup( 2, F, permmat : ConstructingFilter:= filt );
Error, <mat> * <matobj> is not defined
*[1] Error( "<mat> * <matobj> is not defined" );
   @ /Users/mhorn/Projekte/GAP/gap/lib/matobj.gi:1177
 [2] mat2 * stored
   @ /Users/mhorn/Projekte/GAP/repos/pkg/gap-packages/forms/lib/conformal.gi:135
 [3] ConformalSymplecticGroupCons( filt, d, F, BilinearFormByMatrix( form, F ) )
   @ /Users/mhorn/Projekte/GAP/repos/pkg/gap-packages/forms/lib/conformal.gi:89
 [4] ConformalSymplecticGroupCons( filt, arg[1], arg[2], form )
   @ /Users/mhorn/Projekte/GAP/gap/grp/conformal.gi:38
<function "ConformalSymplecticGroup">( <arguments> )
 called from read-eval loop at *stdin*:85
you can 'quit;' to quit to outer loop, or
you can 'return;' to continue
brk>

It all boils down to the base changes:

F:= GF(2);
filt:=IsPlistMatrixRep;
PushOptions( rec( ConstructingFilter:= filt ) );

stored:=IdentityMatrix(filt, F, 2);
SwapMatrixRows(stored, 1, 2);

form:= BilinearFormByMatrix( stored, F );
mat1:= BaseChangeToCanonical( form );

mat1 * form!.matrix * TransposedMat( mat1 );   # works
mat1 * stored * TransposedMat( mat1 );         # does not

So at the core, the problem is that while we can now create a bilinear form from a matrixobj, internally it still stores an old-style matrix, and the base changes are then also old-style.

One approach to addressing this would be to extend the IsBilinearForm format to preserve the type of its input. I.e. if the form is constructed with a MatrixObj, then also store a MatrixObj inside.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions