# GAP-Singular 2019: GAP Days
[go back to main HackMD](https://hackmd.io/Ep88AzrNT62_MDuDLrI9EQ)
## TODO
- Join GAP Slack? Add your email here if you are interested:
- ... (5 people already invited)
- Want to help with GAP release notes by adding labels to PRs etc. (see below)? Then you need to be given the rights on GitHub. Please give your GitHub account below
- ...
## Time table
- Morning stand ups at 09:30
Tuesday:
- 11:00 Talk "What is MatrixObj?" (Max)
Wednesday:
- 9:30 Stand-up round
- 10:00 "Introduction to the GAP kernel" (Max)
- will be informal discussion for anybody interested; feel free to "bring along" questions about the kernel; otherwise I'll try to give a roundabout overview over various things
- you can prepare by reading up in the [GAP dev manual here](http://dev.quendi.de/gap/doc/chap3.html)
- 12:30 Lunch
- 13:30 "Introduction to the [LocalNR](https://github.com/gap-packages/LocalNR) package" (Maryna & Iryna)
Thursday:
- 9:30 Stand-up round
Friday:
- 9:30 Stand-up round
## Announcements
The next GAP Days will be held in St Andrews (Scotland) during one of the last two weeks of March 2020. So, either 16-20 or 23-27 March. The precise week hasn't been chosen yet.
The organisers will be Chris Jefferson and Ruth Hoffmann (who recently started a postdoc with Chris in St Andrews).
## Stand-ups:
For each stand-up meeting, stand up and briefly describe your results from previous day, and your plans for the current day
### Wednesday 21st:
- Max Horn
- Results from yesterday
- Organized session
- Gave presentation on MatrixObj
- Answered lots of GAP related questions
- Discussed MatrixObj/VectorObj with Thomas
- ...
- Plans for today
- Give presentation on GAP kernel
- Work on GAP 4.11
- Answer more questions
- (Make releases of AutoDoc, NormalizInterface?)
- ...
- Dominik Bernhardt
- Results from yesterday
- Reviewed Pull requests
- Helped people with Git and GitHub
- Worked on release notes for 4.11
- Discussed group theory with Johannes
- Listened to Max' presentation
- Plans for today
- Work on 4.11 release notes
- Work on a math question with Johannes
- Review Pull requests
- Discuss release notes and process with Max.
- Wilf Wilson
- Results from yesterday
- Mostly I am working towards the next major release of Digraphs. It has been a long time since the last major release, with many new features, functionality, and some changed behaviour. So there's a lot of checking and documentation to do to make it releasable.
- Review a few GAP PRs
- Plans for today
- Continue working on Digraphs. This will probably be my last day focusing on Digraphs.
- Thomas Breuer
- Results from yesterday
- Talked to Max about `MatrixObj` -> Documentation & Manual
- Plans for today
- Work on manual for `MatrixObj`
- Manuel Delgado
- Results from yesterday
- ...l
- Plans for today
- Release of `NumericalSemigroups`-package
- Lucas Wollenhaupt
- Results from yesterday
- Continued to work on my bachelor thesis
- Added a couple of release notes
- Finished(?) pull request [#3355](https://github.com/gap-system/gap/pull/3355)
- Plans for today
- Continue work on my thesis
- Add release notes
- Finish [#78](https://github.com/gap-system/gap-distribution/pull/78)
- Maybe make AutoDOC ready for the new date format (if it isn't already)
- Jens Brandt
- Results from yesterday
- Get used to the overhead of working on GAP
- Plans for today
- Worked on an Issue for printing pc groups
- Anna Sucker
- Results from yesterday
- Worked on database for bachelor thesis
- Plans for today
- Same today
- Listen to Max' talk
- Daniel Rademacher
- Results from yesterday
- Worked on bachelor thesis
- Worked on a package for Bruhat decomposition of classical groups (without orthogonal)in GAP
- Plans for today
- Continue working on this
- Surinder Kaur
- Results from yesterday
- Listened to Max' talk
- Looked at the `Laguna`-package for research
- Plans for today
- Fabian Zickgraf
- Results from yesterday
- Talked to GAP and Singular people for research
- Plans for today
- Talk about AutoDoc
- Talk to GAP and Singular people again
- Iryna & Maryna Raievska
- Results from yesterday
- Walked on technical stuff for `LocalNr`-package
- Plans for today
- Give presentation on `LocalNR`-package
### Thursday 22nd:
- Max Horn
- Results from yesterday
- Gave presentation on GAP kernel
- Worked a little bit on GAP 4.11
- Answered more questions
- (Did *not* make releases of AutoDoc, NormalizInterface -- today?
- Plans for today
- GAP 4.11: release notes, look at issues/PRs
- Find out about work Thomas' did on MatrixObj
- Based on that, work on [PR #2973 -- Improve IsPlistMatrixRep](https://github.com/gap-system/gap/pull/2973)
- Dominik Bernhardt
- Results from yesterday
- Learned about `Live fast and die young` of GAP objects during Max' talk
- ...
- Plans for today
- Work hardcore on release notes.
- Somebody wanted GitHub help from me. Who was it?
- Jens Brandt
- Results from yesterday
- Learned about `Live fast and die young` of GAP objects during Max' talk
- Used new knowledge about the kernel to play around with the kernel
- finished Issue for printing pc groups
- Plans for today
- work on GAP 4.11
- Wilf Wilson
- Results from yesterday
- Sanity-checked code in Digraphs and fixed several bugs.
- Plans for today
- More of that, and writing documentation.
- Also, I'll check in on GAP 4.11.
- Make announcement for next GAP days
- Lucas Wollenhaupt
- Results from yesterday
- Continued work on my thesis
- Listened to Max' talk
- Tried to understand `src/permutat.cc`
- Improved my git workflow
- Plans for today
- Finish work on my thesis
- Try to write some Code related to sparse permutations (with Anna and Daniel)
- Thomas Breuer
- Results from yesterday
- Worked on `MatrixObj`
- More fidly then expected
- Plans for today
- Continue work on MatrixObj
- Manuel Degado
- Results from yesterday
- Worked on my package
- Plans for today
- Continue doing that
- Giovanni
- Results from yesterday
- ...
- Plans for today
- Translate magma code to GAP
- Learned more GAP syntax
- Anna Sucker
- Results from yesterday
- Worked on database for Bachelor Thesis
- Plans for today
- Make database more human readable
- Daniel Rademacher
- Results from yesterday
- Worked on Bachelor thesis
- Used `PackageMaker` for package for Bachelor Thesis
- Plans for today
- Start to implement sparse permutation
- finish Bachelor thesis
- Iryna & Maryna
- Results from yesterday
- Gave talk
- Plans for today
- Continue
- Work on LocalNR issues [#13](https://github.com/gap-packages/LocalNR/issues/13) & [#10](https://github.com/gap-packages/LocalNR/issues/10)
- Fabian Zickgraf
- Results from yesterday
- Talked to Max
- presented [`FinGSetsForCAP`](https://www.mediamarkt.de/de/product/_samsung-860-evo-basic-2379387.html)
- Plans for today
- Continue with plan for yesterday
### Friday 23rd:
- Max Horn
- Results from yesterday
- ...
- Plans for today
- ...
- Wilf Wilson
- Results from yesterday:
- Finished checking and fixing Digraphs v1.0 code. I'm happy that it works properly. It just needs documenting now.
- Plans for today:
- Starting to document it.
- Herr D. Bernhardt
- Results from yesterday
- He finished (with Max) the release notes for GAP 4.11
- Made a PR (with Wilf) that lets you compile the GAP manuals with `make html`, without making the PDF version of the manual.
- Plans for today
- Go2Aachen
- Thomas Breuer
- Yesterday:
- Continued on MatrixObj
- Today:
- Hopes to continue with this, and push some stuff so that others can help/continue/see it
- Manuel Delgado
- Yesterday:
- Made a new release of numericalsgps and almost made a new release of intpic
- He's using ReleaseTools for this, he's very grateful
- Today:
- Hopefully can make the release of intpic
- Giovanni
- Yesterday:
- Translating some Magma code into GAP
- Today:
- Jens:
- Yesterday:
- Finished his work on pc-groups, made a PR
- Started to look at some kernel stuff, especially something about some kind of C handler.
- Today:
- Continue
- Daniel
- Yesterday:
- Finished Bachelor's thesis
- Started some sparse permutations implementation
- Iryna & Maryna
- Yesterday
- Made a PR
- Today
- Continue with documentation
- Fabian
- Yesterday
- Possibly found a bug in singular
- Today
- Talk to people
## Tasks
### Prepare GAP 4.11
> [name=Dominik Bernhardt] **This is done**
[GAP 4.11 Milestone at GitHub](https://github.com/gap-system/gap/milestone/20)
Specific tasks:
- Release notes for GAP 4.11 need to be done (EVERYBODY can help; see [Issue #3407](https://github.com/gap-system/gap/issues/3407))
- basically, the "pull requests" we merged need to be classified depending on whether they should go into release notes or not; and then also need to be put into release notes. The process is roughly this:
1. Go to [this query](https://github.com/gap-system/gap/pulls?utf8=✓&q=is%3Apr+-label%3A%22release+notes%3A+not+needed%22+-label%3A%22release+notes%3A+added%22+is%3Aclosed+merged%3A2018-09-10..2019-09-10+base%3Amaster+is%3Amerged)
2. Choose one of the PRs there
3. Look at it; decide whether it should be in the release notes or not
4. Add a label: either`release notes: not needed` or `release notes: to be added`
- PRs classified as `release notes: to be added` need to be added to [this wiki page](https://github.com/gap-system/gap/wiki/GAP-4.11-release-notes)
- hint: you can edit the Wiki in the browser; but you can also clone it as a git repository, and edit it locally
-`git clone https://github.com/gap-system/gap.wiki.git`
### MatrixObj
Specific tasks:
- Documentation in `lib/matobj2.gd`, `lib/matrix.gd`, `doc/ref/matrix.xml`, `doc/ref/matobj.xml`, `doc/ref/vector.xml`:
All this must eventually be consistent.
First steps:
- Are the operations described there what we want?
- What are reasonable default methods, which operations do not have defaults?
- Are there still open questions?
- Distribute the operation declarations to sections.
- Provide introductions to the manual chapters matrix.xml and matobj.xml.
- More generally:
Currently `IsPlistRep`, `Is8BitVectorRep`, `Is8BitMatrixRep`, ... are not documented.
In order to talk about the ideas behind vector and matrix objects, we should better document them.
- Which implementations of VectorObj/MatrixObj objects do we have already?
Such implementations can serve as test cases.
(The GAP library provides `IsPlistVectorRep` and `IsPlistMatrixRep`.
The MeatAxe64 package provides IsMeataxe64VecMatObjRep.)
Status:
- Thomas is working on a first version of the specification
### More?
Your ideas here:
- Shortcut to directly access the last element of a list
- This is done already! Use `Last`, which is available in the `master` branch of GAP (Thanks Max!)
- GAP Webpage using jekyll?
> [name=Max Horn] Indeed, that would be very nice. Some notes [on this HackMD](https://hackmd.io/EUtMx_2mRTaIYYlWSaVI6A)
> For some experimental initial code, see here: https://github.com/gap-system/GapWWW/pull/121
> It would also be nice to find students who can work on this; we have some funds to pay them
- Personal projects:
- Dan McVeagh: I want to find efficient ways to find automorphisms of order p of large p-groups where GAP doesn't know the full automorphism group.
- Wilf Wilson: working towards releasing Digraphs v1.0 (mostly involves sanity-checking and writing documentation).
### Questions:
Hi everyone my specific question is how to create 4 by 4 matrices with the entry of octonions if someone is interested or has the same experience please leave a note :)
> [name=Dominik Bernhardt] [See here](https://www.gap-system.org/Manuals/doc/ref/chap62.html#X78C88A38853A8443). This should work.
> THX
> You're welcome!
> [name=Max Horn] You can create octonions via a "structure constant table"; assuming you want them in characteristic 0, e.g. this:
T := EmptySCTable(8, 0);
# set entries; please refer to manual entry
# for SetEntrySCTable to see how to use it
SetEntrySCTable(T, 1, 1, [1,1]); # e_1^2 = e_1 = 1
for i in [2..8] do
SetEntrySCTable(T, i, i, [-1,1]); # e_i^2 = -e_1 = -1
od
# ... add the other relations ...
# Now you can construct the algebra from it
A := AlgebraByStructureConstants(Rationals, T);
# Now you can get elements of A, get a basis of A, etc.
# and use it to construct matrices
mat := [[ A.1, A.2, ], [ Zero(A), A.3 ]];
mat + mat;
mat * mat;
#... and so on
### Code snippet
> [name=Max Horn] The following code allows composing GAP function via `*`:
```gap
InstallOtherMethod(\*, [IsFunction, IsFunction], function(f,g)
if not NumberArgumentsFunction(f) in [1,-1,-2] then
Error("<f> must have one argument only");
fi;
return {x...} -> f(CallFuncList(g, x));
end);
InstallOtherMethod(\*, [IsFunction, IsObject], {f,v} -> f(v));
G:=SymmetricGroup(5);
List(ConjugacyClasses(G), x -> Order(Representative(x)));
List(ConjugacyClasses(G), Order * Representative);
Factorial*Size*SymmetricGroup(5);
```