-
Notifications
You must be signed in to change notification settings - Fork 9
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
PSL #94
PSL #94
Conversation
Thanks for opening a PR! And apologies in advance that I am a bit bandwidth-limited at the moment, so it might take me some time to review this. Some immediate questions:
|
I can answer my last question: it looks like |
The finite groups SL and PSL are this big:
|
|
You are right, I don't actually construct a linear representation of |
Okay now |
Sorry again for the delay. To clarify: is it currently the case that Group.from_generating_mats(*PSL(dim, field).get_generator_mats()) essentially returns (Incidentally, I should probably make the naming of |
Yes, that is the case :) |
Great! There is a bit of cleanup (formatting, typing, etc.) that would be required before merging into Thanks again for the contribution! |
Welcome! |
#root generates the cyclic subgroup of roots of unity of order 'dimension' of the multiplicative group of self.field. | ||
num_roots = galois.gcd(self.dimension, self.field.order - 1 ) | ||
root = self.field.primitive_element ** ( ( self.field.order - 1 ) // num_roots ) | ||
roots = [ root ** k for k in range(num_roots) ] | ||
|
||
# PSL acts on the quotient of the target space of SL by roots of unity of order 'dimension'. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@michaelontiveros can you help me understand why we use roots of unity here, rather than all non-zero scalars (1, 2, ..., self.field.order - 1
)?
PSL should be SL mod scalars, no? I guess I'm missing what that implies for the target space of PSL (or rather, I'm missing why it implies that the target space of PSL is equal to [target space of SL] mod [roots of unity of order dimension
]).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, I cleaned up this contribution a bit on the PSL
branch. Do you want to open a new PR from PSL
to main
to have an "official" contribution into main
? 🙂
I would also a appreciate a quick review (if you have the time) to make sure that I did not make any incorrect modifications to the code or comments.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We mod out by roots of unity of order dimension
because the scalar matrix rI
is in the group SL(dimension)
if and only if the determinant is 1
, and the determinant is r**dimension
, which is 1
if and only if r
is a root of unity of order dimension
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is a typo in test_PSL()
:
Line 185 in 3ce4ca2
order = order_SL // math.gcd(2, field - 1) |
The 2
should be dimension
.
Otherwise looks great, thanks!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome, that makes sense. Thanks!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Super, I think it's ready.
I will draft a PR to merge PSL
to main
:)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I get an error
Pull request creation failed. Validation failed: must be a collaborator
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm... can you maybe fork the repo and make a PR from michaelontiveros:PSL
into Infleqtion:main
(similarly to how you did with this PR)?
No description provided.