-
Notifications
You must be signed in to change notification settings - Fork 49
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
add QuantumCliffordOscarExt to provide convenient API for finitely presented groups via specific group presentation #400
base: master
Are you sure you want to change the base?
Conversation
a8527f4
to
9c0767f
Compare
Thank you, this is wonderful! |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #400 +/- ##
==========================================
+ Coverage 83.06% 84.04% +0.98%
==========================================
Files 70 75 +5
Lines 4410 4945 +535
==========================================
+ Hits 3663 4156 +493
- Misses 747 789 +42 ☔ View full report in Codecov by Sentry. |
Since we use these |
This looks really great! I have a bit of a backlog of reviews, so I will probably not be able to merge this until late next week, but I am very grateful you guys spent time on providing something so neatly polished here. @royess , if you have a chance, could you also check this out, as it is building upon a lot of the infrastructure you contributed. |
@Krastanov, We have identified an inconsistency in the implementation of the As a result, we have temporarily removed the additional functionality for the semidirect product of groups from the PR we introduced today. We plan to reintroduce this feature once the inconsistency is resolved, as it is unrelated to this PR. |
I would like to help but perhaps not very soon. I will aim to do that next week. |
Changelog:
The mermaid diagram included in documentation for specific group presentations via Finitely Presented Groups: graph TD
A[Group Presentation <br> ⟨S ∣ R⟩] --> B{Are there <br> extra relations?}
B -- No --> C[Small groups <br> Hecke/Oscar.small_group]
C --> D[Independent generators]
C --> E["Example: <br> ⟨r, s ∣ s⁴, r⁹⟩"]
B -- Yes --> F[Finitely presented groups <br> Oscar.free_group]
F --> G[Defined by interactions]
F --> H["Example: <br> ⟨r, s ∣ s⁴, r⁹, s⁻¹rsr⟩"]
|
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.
Thanks folks! As I am reading through this, I have a couple of background questions about the Oscar/Hecke ecosystem (of which I know very little):
-
What does Oscar provide that is not in Hecke? Why is it necessary? I am not knowledgeable of that ecosystem.
-
Why list notation instead of just a sum? E.g. why
[one(GA), x^7]
instead ofone(GA) + x^7
-- the later seems simpler to read to me and the only operation that seems to be done on the list is to sum it. -
QuantumCliffordOscarExt.twobga_from_direct_product
introduced here seems almost identical to the already existingQuantumCliffordHeckeExt.two_block_group_algebra_codes
. Semantically, why should they be two different functions? -
I see that Oscar 1.2 was recently released. Does that mean that the tests can now also run on Windows?
I see that the mermaid diagram by Feroz above seems to be in the direction of answering my first question, but I do not really understand the context of it. Some examples of something inconvenient/impossible in Hecke but easy/possible in Oscar would be very helpful. |
Hecke contains only abelian groups and a list of all finite groups of order up to 100. Oscar brings in comprehensive functionality for computational group theory, including support for arbitrary finitely presented groups (groups of the form Regarding Oscar 1.2, Windows support is still lacking (and will so for the foreseeable future), but at least starting with |
As Tommy pointed out, Oscar provides functionality of designing specific group presentations when we have a finite group formed by direct product of two or more subgroups or semidirect product of two or more subgroups as depicted by the mermaid diagram. There are even cases of finite groups when we have group C x (C : C) where : means semidirect products whose group presentation we can conveniently design using Oscar. PR #406 highlights this limitation in Hecke, where it becomes inconvenient/impossible to create specific group presentations Oscar provides convenient access to non-abelian groups such as The key difference is that In addition, Oscar also supports homomorphisms hom between free modules, which are necessary for the intersection of two kernels, Since 2BGA codes require a finite general group (specifically, Edit: Future prospects: There has been a growing interest in non-Abelian codes, particularly Dihedral Quantum Codes, which offer promising opportunities for new software bounty projects. Recent papers, such as Dihedral Quantum Codes, highlight these developments. Oscar provides a comprehensive toolkit to support this exploration. Additionally, there has been a notable focus on Dihedral group algebra in recent research. One such paper discusses the use of the direct product between dihedral and cyclic groups, as detailed in [Direct Product Group Codes and Derived Quantum Codes].
To my knowledge, 'non-list' notation is not supported for Sharing Tommy's insights from earlier discussions in #391:
Moreover, the list notation is used in
QuantumClifford.jl/ext/QuantumCliffordHeckeExt/lifted_product.jl Lines 294 to 295 in ce1dc02
QuantumClifford.jl/ext/QuantumCliffordHeckeExt/lifted_product.jl Lines 330 to 331 in ce1dc02
|
With reference to your third question, we have prepared the following mermaid diagram to illustrate the differences. graph TB
root[Direct Product of Groups]
root --> A[Hecke.direct_product]
root --> B[Oscar.direct_product]
%% Hecke Branch
A --> A1[Supports mostly abelian groups and list of finite groups]
A1--> A2[abelian_group symmetric_group small_group]
A2 --> A3[C × C, C × S]
%% Oscar Branch
B --> B1[Supports finite general groups, including non-abelian groups]
B1--> B2[alternating_group <br> dihedral_group <br> free_group <br> cyclic_group <br> permutation_group <br> quaternion_group <br> symmetric_group <br> abelian_group<br> small_group]
B2--> B3[A × C, A × D <br> D × C, D × D <br> F × F, F × A, F × D <br> F × S, F × C <br> C × C, C × S]
Additionally, to reiterate Tommy's point, the order of the groups supported by Oscar is substantially larger. In this example, the order of the direct product of two finite groups is ten times 100.
|
@Fe-r-oz hope I did everything correct
Edit: Here some explanation for the CI changes: Since Oscar does not work on Windows and julia has no mechanism to handle platform dependent, we cannot have Oscar in the Project.toml. Hence in the CI script we inject this dependency by hand if Oscar is available. The tests themselves are behind a
Sys.iswindows()
andtry using Oscar
check.