Fix: inverse symmetries
All symmetries except 90L and 270L are equal to their inverse.
Currently EventWindow.getSiteNumber(Atom&) returns wrong sites for 90R and 270R: A.ulam.txt
I don't know enough group theory, so I just mapped site numbers 1 to 4 under different symmetries and checked their inverses this way: inverse.txt. Full multiplication table for the group:
(s1 * s2)(x) = s1(s2(x))
|---------+------+------+------+------+------+------+------+------|
| s1 \ s2 | 0L | 90L | 180L | 270L | 0R | 90R | 180R | 270R |
|---------+------+------+------+------+------+------+------+------|
| 0L | 0L | 90L | 180L | 270L | 0R | 90L | 180R | 270R |
|---------+------+------+------+------+------+------+------+------|
| 90L | 90L | 180L | 270L | 0L | 90R | 180R | 270R | 0R |
|---------+------+------+------+------+------+------+------+------|
| 180L | 180L | 270L | 0L | 90L | 180R | 270R | 0R | 90R |
|---------+------+------+------+------+------+------+------+------|
| 270L | 270L | 0L | 90L | 180L | 270R | 0R | 90R | 180R |
|---------+------+------+------+------+------+------+------+------|
| 0R | 0R | 270R | 180R | 90R | 0L | 270L | 180L | 90L |
|---------+------+------+------+------+------+------+------+------|
| 90R | 90R | 0R | 270R | 180R | 90L | 0L | 270L | 180L |
|---------+------+------+------+------+------+------+------+------|
| 180R | 180R | 90R | 0R | 270R | 180L | 90L | 0L | 270L |
|---------+------+------+------+------+------+------+------+------|
| 270R | 270R | 180R | 90R | 0R | 270L | 180L | 90L | 0L |
|---------+------+------+------+------+------+------+------+------|
Also, comment in PSym.h doesn't match how the symmetries currently work, but I ignored it for now.
Well I'm finally digging in here. Apologies for the huge delay, and all the mess to begin with. Software guy lost in algebra land.
So I'm guessing that the intended function of the symmetries shifted over time and the code never tracked that all clearly. For one thing, EW.getSiteNumber(Atom&) didn't exist until ulam 3 or 4.
In any case, A.ulam seems pretty convincing that there's an internal inconsistency.
My worry is that something caused me to do this commit, which appears to be the smoking gun here..
No problem, I should have found that commit myself and just ask in Discord or create an issue. Maybe it is related to SPOT code?
Return to original and seemingly 'more consistent' interpretation of inverse symmetries.
doh did I not actually pull this? or is it not on me to pull? doh