owned this note
owned this note
Published
Linked with GitHub
# Notepad for GAP Days Summer 2022
*Beware that the contents of this notepad can be read and modified by anyone with access to the URL, so you should not share any sensitive information here.*
#### Table of contents:
[TOC]
# Practical information
# Main focus: Matrix Object
List of functionality we would like for Matrix Objects:
# Other project descriptions and reports
**For each project, please maintain a short description of the project and its progress.**
## Writing up MatrixObj specification
Revising how matrices and vectors are implemented in GAP has been in the works for over a decade now. We had two GAP meetings on this in the past few year
**People:**
## New Matrix Object Implementations
- [ ] SparseMatrixRep
- [ ] DiagonalMatrixRep
- [ ] (upper | lower) UnitriangularMatrixRep **→ Daniel**
- [ ] PermutationMatrixRep
- [ ] MonomialMatrixRep
- [ ] BlockMatrixRep
- [ ] WreathProductElementMatrixRep (Permuted Diagonal-Block Matrix)
- [x] Compressed
- [x] CVec
- [x] Generic pListRep
- [x] $\mathbb{Z}/n\mathbb{Z}$
- [ ] almost simple?
- [ ] minimal MatrixObject **→ Lucas**
**People:** Daniel, Lucas
## Generic Test Suite
Adapt Library Codes, but progress has been mostly stalled since then. A major blocker for this is that while we discussed how to go about things, we never finished writing up a specification for others to work with. The plan is to get that done this week to enable other people to contribute to this.
**People:** Max Horn, Lucas, Anna
## Use MatrixObjects and Document/Fix problems
**People:** Dominika
# GAP discussion topics and outcomes
Nothing so far.
# Programme
## Day 1: Monday 17th
### Schedule
10:00 - 10:20 Opening
10:20 - 10:50 Setup Session
11:00 - 11:30 Talk: Clique and design finding in parallel using GAP, GRAPE, DESIGN, and C; Leonard Soicher
11:30 - 17:40 Questions and Short break
12:00 - 13:00 Lunch break
13:30 - 14:00 Talk: Introduction to MatrixObj; Max Horn
14:30 - 16:30 Working session
16:30 - 16:45 Stand-up
## Day 2: Tuesday 18th
### Schedule
09:00 - 09:10 Stand-up
09:20 - 10:50 Package Session Part 1
10:50 - 12:00 Working session
12:00 - 13:00 Lunch break
13:20 - 13:30 Group photo (please be there)
13:00 - 13:30 Working session
13:30 - 15:00 Package Session Part 2
15:00 - 16:30 Working session
16:30 - 16:50 Stand-up
### Morning stand-up
- Max
- work on MatrixObj specification, tests, implementation ...
- help people
- Ruth
- automata package updates
- graphs
- Mun-See
- write my talk
- work on normalizers in `vole`
- help Ruth with graph stuff
- Lucas
- start work on generic test suit
- help people with new matrix objects
- Friedrich
- work on SnAnRecognition code for the recog package
- construct some graphs with Tom and Reymond
- Daniel
- Start a new type for MatrixObj (UpperTriangularMatrices) -> Constructor already working
- Marvin
- help Daniel
- ChrisJ
- Work on Vole
- Clean up emscripten code?
- Tom
- work on SimplicialSurface Package
- create some funny graphs related to quimp groups (with Friedrich and Reymond)
- Anna
- work on MatrixObj tests
- enjoy the package session :)
- other Anna
- work on the clique graph operator on triangulations of surfaces
- Leonard
- Install nauty and traces version 2.7r4 in GRAPE development version
- Iryna
- extend the library of local nearrings and publish on GitHub and Zenodo
- Maryna
- extend the library of local nearrings and publish on GitHub and Zenodo
- Eileen
- work on the SOTGrps package
- do some last-minute changes to my talk
### Afternoon stand-up / Results and accomplishments
- Lucas
- worked on the Generic Test Suite
- helped people getting started with their work on MatObj
- orga stuff
- Anna
- worked on the Generic Test Suite
- orga stuff
- Max
- discussions on Generic Test Suite and other MatrixObj stuff
- fixed bugs in GAP adn packages
- help Eileen with SOTGroup package
- work towards GAP 4.12.1 release (due this week)
- Mun See
- decided on recycling my old talk
- talked to Chris about normalisers in vole, but haven't started implementation
- worked on some graph stuff with Ruth
- Dominika
- went through MatrixObj documentation and functions
- Ruth
- Got the triangle merge in graphs to work
- (had the talk ready before the morning stand-up)
- Leonard
- nauty and traces: version 2.7 r4 seems to work with the development version of GRAPE
- Eileen
- gave a talk on SOTGrps package and continued working to improve the package (infrastructure and maths)
- Iryna
- prepared for published the libraries on GitHub and Zenodo
- restarted our tasks on the server
- Maryna
- prepared for published the libraries on GitHub and Zenodo
- restarted our tasks on the server
- Fatemeh
- worked on the MatrixObj functions
- other Anna
- stupid implementation of subgraph isomorphism testing -> too slow
## Day 3: Wednesday 19th
### Schedule
09:00 - 09:10 Stand-up
09:20 - 09:50 Talk: Mun See
09:50 - 10:00 Questions and short break
10:00 - 10:30 Talk: GAP for Permutation Pattern Classes; Ruth Hoffmann
10:39 - 10:40 Questions and short break
10:40 - 12:00 Working session
12:00 - 13:00 Lunch break
13:00 - 16:30 Working session
16:30 - 16:50 Stand-up
### Morning Stand-up
- Anna
- continue to work on generic test suite for MatrixObj
- Max
- work on MatrixObj (for real today)
- work towards GAP 4.12.1 release
- Lucas
- work on generic test suite for MatrixObj
- help others
- Daniel and Marvin
- Continue work on new MatObject Type triangular Matrices
- Mun See
- Work on normalisers in Vole
- Ruth
- Give a talk
- Work on automata PR
- Maybe some more graphs
- other Anna
- Learn about induced subraph isomorphism testing in the digraphs package
- Apply to the clique graphs of triangulations
- Tom and Meike
- Work on Simplicial Surface Package
- Fatemeh
- continue to work on checking MatrixObj functions and find problems
- ChrisJ
- Clean up orbital graphs related code in BacktrackKit
- Iryna
- extend the library of local nearrings and publish on GitHub and Zenodo
- Maryna
- extend the library of local nearrings and publish on GitHub and Zenodo
### Results and accomplishments
- other Anna
- found out how to apply the digraphs package and the glasgow subgraph solver to iterated clique graphs
- Anna
- work on generic test suite for MatrixObj
- Max
- helped with SimplicialSurfaces package, submitted a PR and a few issues
- helped people submit issues and pull requests related to MatrixObj and how to find what causes a bug
- wrote a CI test for GAP's `make install` feature and fixed the bug this revealed
- discussions about GAP and math problems with a bunch of people
- no MatrixObj work on my own
- Friedrich
- work on `RecogniseSnAnUnknownDegree`
- Ruth
- Gave talk
- Finished fixing automata PR (the first)
- Abandonned own graphs code for Mun See's
- ChrisJ
- Improve printing and creation code for HashMap/HashSet
- PR for utils package
- Lucas
- work on generic test suite for MatrixObj
- Fatemeh
- work on MatrixObj and working with functions in it
- disscution with Max and getting help on Matrixobj
- Iryna
- published the libraries of local nearrings of order 128 on GitHub and Zenodo
- prepared our report
- noted several questions with Sonata
- Maryna
- published the libraries of local nearrings of order 128 on GitHub and Zenodo
- prepared our report
- noted several questions with Sonata
- Daniel and Marvin
- Finished the code for new matrix obj type
- Tom
- worked on the SimplicialSurface Package
- constructing graphs
- Leonard
- Working on an algorithm and program to determine whether a given simple GRAPE graph gamma is gamma.group-undirected-edge-transitive, *without* forming an explicit orbit of edges
## Day 4: Thursday 20th
### Schedule
09:00 - 09:10 Stand-up
09:20 - 09:35 Talk: An algorithm for constructing all supercharacter theories of a finite group; Fatemeh Koorepazan-Moftakhar
09:45 - 10:15 Talk: Finite local nearrings and their classification; Iryna Raievska and Maryna Raievska:
10:15 - 10:30 Talk: Classification of Gyrogroups of Small Order; Kuroš Mavaddat Nežâd
10:30 - 10:40 Questions and short break
10:40 - 12:00 Working session
12:00 - 13:00 Lunch break
13:00 - 16:30 Working session
16:30 - 16:50 Stand-up
### Morning Stand-up
- Leonard
- finish a GAP function to determine whether a given simple GRAPE graph gamma is gamma.group-undirected-edge-transitive, *without* forming an explicit orbit of edges
- and check and test this function with some examples from Alice Niemeyer
- maybe start on a GAP function to determine whether a given simple GRAPE graph is locally gamma.group-t-arc-transitive
- Marvin
- adapt the previous days' work on upper triangular matrices to lower ones
- Lucas
- continue with the MatrixObj tests
- make a minimal MatrixObj example
- review some PRs
- Max
- review various PRs folks here made yesterday
- release GAP 4.12.1
- work with MatrixObj...
- help people
- Anna
- continue with the MatrixObj tests
- a little teaching...
- Tom
- work on the SimplicialSurface package:
- (DrawSurfaceToSVG + DrawSurfaceToSTL)
- Daniel
- Finish PR for new MatObj type (except Max has too many complaints)
- other Anna (Annegret)
- Construct examples to test second clique graph inclusions
- Fatemeh
- Give a talk
- work with MatrixObj test
- Iryna
- Give a talk
- extend (migrate) the library of local nearrings and publish on GitHub and Zenodo
- Maryna
- Give a talk
- extend (migrate) the library of local nearrings and publish on GitHub and Zenodo
### Results and accomplishments
- Lucas
- finished PR
- implemented minimal matrix obj (still needs testing)
- worked on generic test suite (PR imminent)
- Anna
- finished concept, implemented and tested generic test suite
- Friedrich
- further work on graph constructions with Reymond and Tom
- Daniel
- Pull request for infinite loop
- Draft Pull request for upper triangular matrices (waiting for the test suite)
- Started new issue for new matrix group categories
- Iryna
- Gave a talk
- continue to extend (migrate) the library of local nearrings on GitHub and Zenodo due to issue #11 Split into main archive and optional downloads https://github.com/gap-packages/LocalNR/issues/11
- Maryna
- Gave a talk
- continue to extend (migrate) the library of local nearrings on GitHub and Zenodo due to issue #11 Split into main archive and optional downloads https://github.com/gap-packages/LocalNR/issues/11
- Max
- finished (?) 4.12.1 preparations, and submitted PR with propose release notes
- helped folks with creating PRs, using GitHub
- discussed MatrixObj details with various people
- Leonard
- finished and tested first versions of the functions described above
- Fatemeh
- Gave a talk
- Creating PR with helping Max, using GitHub
- work on my package using PackageMaker and with Friedrich's help
## Day 5: Friday 21th
### Morning Stand-up
- Lucas
- make PR for MatObj test suite
- review Daniel & Marvins PR
- incorporate Max suggestions into implementation of IsFlistMatrixRep
- maybe talk to Chris about Kernel debugging
- Max
- recover from GAP 4.12.1 release
- review PRs
- work on some generic helper for MatrixObj
- look into fixes for various GAP packages sent to me by someone who packages GAP for a Linux distribution
- look with Friedrich & Alice into An/Sn recognition issues????
- Ruth
- Integrate the Glasgow SIP solver into Mun See's distillation code
- Anna
- test suite for MatObj
- Daniel
- Work on Issue #3568
- Marvin
- help Daniel
- Leonard
- install GAP 4.12.1 on my laptop
- perform further checks and tests of the functions written during the workshop
- other Anna (Annegret)
- implement the inverse Clique Operator
- Iryna
- Work on issue #11 https://github.com/gap-packages/LocalNR/issues/11
- Maryna
- Work on issue #11 https://github.com/gap-packages/LocalNR/issues/11
### Schedule
09:00 - 09:10 Stand-up
09:10 - 11:40 Working session
11:40 - 12:00 Time for Feedback
12:00 - 13:00 Lunch break
13:00 - 15:00 Working session
15:00 - 15:30 Closing
### Results and accomplishments
- other Anna (Annegret)
- finished implementing the reversed clique operator
# Scratchpad
Put your random notes here, minutes for discussions etc.
## MatrixObj
### Some random MatrixObj TODOs
#### documentation
- perhaps move `ChangedBaseDomain` documentation into the "Constructing Vector and Matrix Objects" section?
- "Implementing New Vector and Matrix Objects Types" used to be last sectionin [chapter 26](https://docs.gap-system.org/doc/ref/chap26_mj.html), now this is "Basic operations for row/column reductions" -- swap them again?
- `Matrix( <M1>, <M2> )` documentation is not helpful; we need to explain what `M1` and `M2` mean; better argument names would help (e.g. `Matrix( <dataMat>, <exampleMat> )` is not great but arguably at least a bit better)
#### Returning errors
- When operations in general return 'fail', or return an error?
- Example, for a non-invertible `IsPlistMatrixRep`, `M^(-1)` returns fail, but `M^(-2)` enters the break loop.
- Should all matrices (including ones with different fields / sizes / representations) be comparable with `=`, and/or `<` ?
#### constructors
- clarify difference between `NewMatrix` and `Matrix` (and likewise `NewVector` and `Vector`)
- Max thinks that at some point there idea here was that the "New*" constructors are internal, and the other ones (wittout `New`) are implemented generically in terms of the `New...` ones. The idea being that there are many variants for `Matrix` and we don't want every implementation to have to provide all of them
- if this is to be still the plan, let's make it very explicit in the documentation
- perhaps it would be even better to rename `NewMatrix`/`NewVector` to say `NewMatrixInternal` or `_NewMatrix` or so, to make accidental use less likely?
- though I am not sure accidental use is a problem at all?
- see also https://github.com/gap-system/gap/issues/4549 and https://github.com/gap-system/gap/pull/4584
- `CompatibleVector(M)` returns a vector of length `NrRows(M)`. Shouldn't it be possible to get one with length `NrCols(M)`, too? Perhaps an optional `length` argument would be a good idea?
- should user facing constructors perform input validation, e.g. check that all entries are really integers etc. (see https://github.com/gap-system/gap/issues/4884)
- Max thinks YES these days but have NC variants?? (Thomas works on this)
- inverting an Integer matrix: raise an error if result is not defined over integers? or return a matrix over Q? or what?
- Max favors the error...