-
Notifications
You must be signed in to change notification settings - Fork 4
add ConformalSymplecticGroup and some generalizations
#80
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?
add ConformalSymplecticGroup and some generalizations
#80
Conversation
Add `ConformalSymplecticGroup`, essentially analogous to the implementation of `SymplecticGroup`: - introduce a plain function `ConformalSymplecticGroup` and a constructor `ConformalSymplecticGroupCons`, - install various methods for `ConformalSymplecticGroupCons`, - introduce a property `IsFullSubgroupGLRespectingBilinearFormUpToScalars` that is set in the groups returned by `ConformalSymplecticGroup`, - install a `\in` method for a matrix and a group in `IsFullSubgroupGLRespectingBilinearFormUpToScalars`, - add tests for the new code. The proposed implementation differs from that of `SymplecticGroup` and is intended as a pattern for changing the implementation of `SymplecticGroup` and the other classical groups, and for adding the other types of conformal groups. These are the differences: - Do *not* delegate from the variants where a finite field is given to the variants with given size of the field, but the other way round. This way, it will be possible to use elements from `StandardFiniteField( p, n )` instead of `GF( p, n )` in the matrices. - We might recommend to choose an `IsMatrixObj` representation for the matrices if the entries are from `StandardFiniteField( p, n )`. For that (and also in general), an "experimental" global option `ConstructingFilter` is supported that prescribes the internal format of the matrices. Currently one can use for example `IsPlistRepMatrix` as the value for this option, such that one can make experiments with matrix groups whose elements are in `IsMatrixObj`. More useful `IsMatrixObj` representations will hopefully become available. (Note: We can view `IsPlistRep` as the default for the `ConstructingFilter` option, but then the matrices need not be in `IsPlistRep` because the `ImmutableMatrix` calls in the code convert the generators to `IsGF2MatrixRep` or `Is8BitMatrixRep` if possible.) Once we decide about the setup that we want for `ConformalSymplecticGroup`, the implementation of `SymplecticGroup` etc. in the GAP library and the relevant methods in the Forms package can be rewritten accordingly.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #80 +/- ##
==========================================
- Coverage 81.05% 80.08% -0.97%
==========================================
Files 6 8 +2
Lines 3663 3786 +123
==========================================
+ Hits 2969 3032 +63
- Misses 694 754 +60
🚀 New features to boost your workflow:
|
|
Apparently we have the problem that the current matrix object machinery from GAP cannot be assumed because the Forms package wants to support also the GAP versions 4.9 to 4.12, which do not provide all functions needed here. The proposed code cannot be added to the GAP library because part of it deals with bilinear forms which are provided by the Forms package, and if we want to support matrix objects for the group generators then we have to support them also for the matrices of the forms, otherwise we would not be able to multiply a group element with a matrix of a form. It would be tempting to regard the proposed code as a package extension, depending on GAP 4.13.0 or newer; logically, this would fit. Unfortunately, it does not work because dependencies on the GAP version are not supported (yet). Pragmatically, we can also argue that the code would better be added to the Recog package, which is free to require good enough versions of GAP and of the Forms package. |
Now the declaration of `CSp` and those methods for it that do not involve forms will be added to the GAP library. Also, the implementation of `Sp` in GAP admits already an optional filter that defines the representation of the matrices, and the delegation between its methods has been changed as for `CSp` (the methods with argument `q` delegate to those with argument `GF(q)`, not the other way round). For this pull request, this means that - the files involving code and tests involving `CSp` are read only if GAP provides the variable `CSp`, - the delegation between methods for `Sp` that are provided by the Forms package has been changed as well, - the methods in the Forms package now support a `baseDomain` component in the attributes describing invariant forms, - calls of `FieldOfMatrixGroup` are replaced by access to the new `baseDomain` component of form records where applicable (for backwards compatibility with older GAP versions, the helper function `Forms_FieldOfDefinition` calls `FieldOfMatrixGroup` if no `baseDomain` component is available).
Add
ConformalSymplecticGroup(addresses #43),essentially analogous to the implementation of
SymplecticGroup:ConformalSymplecticGroupand a constructorConformalSymplecticGroupCons,ConformalSymplecticGroupCons,IsFullSubgroupGLRespectingBilinearFormUpToScalarsthat is set in the groups returned byConformalSymplecticGroup,\inmethod for a matrix and a group inIsFullSubgroupGLRespectingBilinearFormUpToScalars,The proposed implementation differs from that of
SymplecticGroupand is intended as a pattern for changing the implementation ofSymplecticGroupand the other classical groups, and for adding the other types of conformal groups.These are the differences:
Do not delegate from the variants where a finite field is given to the variants with given size of the field, but the other way round. This way, it will be possible to use elements from
StandardFiniteField( p, n )instead ofGF( p, n )in the matrices.We might recommend to choose an
IsMatrixObjrepresentation for the matrices if the entries are fromStandardFiniteField( p, n ).For that (and also in general), an "experimental" global option
ConstructingFilteris supported that prescribes the internal format of the matrices. Currently one can use for exampleIsPlistRepMatrixas the value for this option, such that one can make experiments with matrix groups whose elements are inIsMatrixObj. More usefulIsMatrixObjrepresentations will hopefully become available. (Note: We can viewIsPlistRepas the default for theConstructingFilteroption, but then the matrices need not be inIsPlistRepbecause theImmutableMatrixcalls in the code convert the generators toIsGF2MatrixReporIs8BitMatrixRepif possible.)Once we decide about the setup that we want for
ConformalSymplecticGroup, the implementation ofSymplecticGroupetc. in the GAP library and the relevant methods in the Forms package can be rewritten accordingly.