Skip to content
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

tests: Specific Group Presentations Using Oscar's Free Group for Non-Abelian and Abelian Groups #390

Draft
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

Fe-r-oz
Copy link
Contributor

@Fe-r-oz Fe-r-oz commented Oct 14, 2024

This PR aims to add new method for the two-block group codes using non-abelian groups. Reference Table 1: https://arxiv.org/pdf/2306.16400.

  • The code is properly formatted and commented.
  • Substantial new functionality is documented within the docs.
  • All new functionality is tested.
  • All of the automated tests on github pass.
  • We recently started enforcing formatting checks. If formatting issues are reported in the new code you have written, please correct them. There will be plenty of old code that is flagged as we are slowly transitioning to enforced formatting. Please do not worry about or address older formatting issues -- keep your PR just focused on your planned contribution.

Copy link

codecov bot commented Oct 14, 2024

Codecov Report

Attention: Patch coverage is 0% with 16 lines in your changes missing coverage. Please review.

Project coverage is 82.76%. Comparing base (be50f9c) to head (6304dc6).

Files with missing lines Patch % Lines
ext/QuantumCliffordHeckeExt/lifted_product.jl 0.00% 16 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #390      +/-   ##
==========================================
- Coverage   83.06%   82.76%   -0.31%     
==========================================
  Files          70       70              
  Lines        4410     4426      +16     
==========================================
  Hits         3663     3663              
- Misses        747      763      +16     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Oct 14, 2024

@Krastanov, @royess, There are many groups mentioned in the aforementioned paper which are used to create group algebra using direct products/semi products of following groups which are not currently supported which is the aim of this PR:

  1. D x C
  2. A x C
  3. S x C
  4. C ⋉ C

where D is Dihedral Group, A is Alternating Group, S is Symmetric Group. Semidirect product is also being utilized by Lin, as shown in Table 1

There are two methods for using these non-abelian groups based on discussion with Oscar Team. Using Hecke, this can be done with a small_group with a multiplication table which is the aim of this PR. Lin actually uses the GAP analogue of this which is small_group(l, #) in GAP. This is supported in Hecke as well. More details about this is presented here: https://docs.gap-system.org/doc/ref/chap39.html#X87BF1B887C91CA2E

This approach does not need Oscar as all can be done with Hecke but users would have to search the multiplication table to see whether they are getting the right group that is required. Meaning the entries for small group have to be carefully entered other wise the wrong group will the received.

julia> using Oscar;

julia> using Hecke;

# searching the multiplication table
julia> describe(small_group(12, 1))
"C3 : C4", # this means C3 semidirect product with C4

julia> describe(small_group(12, 2))
"C12"

julia> describe(small_group(12, 3))
"A4" # Alternating group

julia> describe(small_group(12, 4)) # this is dihedral group of order 12, used in doctest
"D12"

julia> describe(small_group(12, 5))
"C6 x C2" # C6 direct product with C2

This PR aims to handle all the code instances from Appendix Table 3 of aforementioned paper where authors take direct product of Dihedral and cyclic groups (D_m x C_2). For example, the doctest, the small_group(12, 4) provides D12 which is mentioned in the paper.

The users enter the small_group(entry1,entry2) for each of the small_groups and then group algebra is constructed under the hood, as following:

two_block_group_algebra_codes([0, 10], [0, 8, 9, 4, 2, 5], (12, 4), (2, 1)); This represents D12 x C2

The other approach is to use semi direct products which is #382 which provides a more hands on approach where we can construct the group structure itself mainly when semidirect products are required. This is useful when custom group presentations with relators (R) are given to us. If a group presentation is custom defined for example, C_24 x C_2 where presentation is ⟨r, s|s^2, r^24, (rs)^8⟩, as by Lin in Table 1, then the mapping via homomorphism can be defined as well taking the presentation into account.

I will turn this to draft to incorporate any more feedback and comments.

@Fe-r-oz Fe-r-oz marked this pull request as draft October 14, 2024 12:30
@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Oct 14, 2024

The above comment #390 (comment) only deals with construction Dₘ x C2 which refers to Table 3 when taking direct product of two groups.

Table 1 only uses a slight different approach. Given one small_group(l, #) but # (ID) can be varied. So, even though one abelian or non-abelian group is used, the ID is different which gives the different group. For example:

I have added a function for this as well.

julia> describe(small_group(36,1))
"C9 : C4"

julia> describe(small_group(36,2))  # Lin uses this Cyclic group!
"C36"

julia> describe(small_group(36,3))
"(C2 x C2) : C9"

julia> describe(small_group(36,4)) 
"D36"  # Dihedral Group

@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Oct 16, 2024

The PR is nearly implemented. But turning this to WIP as I will add and test the entire non-abelian Table 3 and Table 1 results as well with Hecke.small_group by adding them as test cases.

@Fe-r-oz Fe-r-oz marked this pull request as draft October 16, 2024 10:29
@Fe-r-oz Fe-r-oz changed the title introducing non-abelian groups via Hecke's small group with multiplication table for 2BGA codes Enabling non-abelian and other groups via specific group presentations via Oscar Free Group to reproduce Table 1 of H.K.Lin et al. Oct 18, 2024
@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Oct 18, 2024

Since #391 has been resolved, The Table 1 results has been reproduced! I have verified the Table 1 results and will push it the test file once the bug in Issue 394 is resolved.

Hecke.small_group was not the right choice if we only consider the group number(#)and order (l) of the group . I considered small_group as suggested by Lars, but it works, if we are not given a very specific presentation.

In this case, a key piece of information, presentation column, is necessary to construct such abelian and non-abelian groups. Simply using Hecke.small_group, in this case, will give wrong results.

As pointed out by Tommy, this will be done via **Free_Group** from Oscar. Table 1 is attached below:

Screenshot_select-area_20241018104735

@Fe-r-oz Fe-r-oz changed the title Enabling non-abelian and other groups via specific group presentations via Oscar Free Group to reproduce Table 1 of H.K.Lin et al. Specific Group Presentations Using Oscar for Non-Abelian and Abelian Groups Oct 18, 2024
@Fe-r-oz Fe-r-oz changed the title Specific Group Presentations Using Oscar for Non-Abelian and Abelian Groups Specific Group Presentations Using Oscar Free Group for Non-Abelian and Abelian Groups Oct 18, 2024
@Fe-r-oz Fe-r-oz changed the title Specific Group Presentations Using Oscar Free Group for Non-Abelian and Abelian Groups Specific Group Presentations Using Oscar's Free Group for Non-Abelian and Abelian Groups Oct 18, 2024
@Fe-r-oz Fe-r-oz marked this pull request as ready for review October 18, 2024 16:57
@Fe-r-oz Fe-r-oz force-pushed the nonabelian branch 2 times, most recently from ee75c4f to ae51ea2 Compare October 18, 2024 18:33
@Fe-r-oz Fe-r-oz marked this pull request as draft October 19, 2024 07:20
@Fe-r-oz Fe-r-oz changed the title Specific Group Presentations Using Oscar's Free Group for Non-Abelian and Abelian Groups tests: Specific Group Presentations Using Oscar's Free Group for Non-Abelian and Abelian Groups Oct 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant