From 491b9b43153bb6fc7b4ac565b684ceddbba6f60c Mon Sep 17 00:00:00 2001 From: Fe-r-oz Date: Sun, 29 Sep 2024 15:34:04 +0500 Subject: [PATCH] Lifted Product construction of bivariate bicycle using LPCode --- docs/Project.toml | 1 + docs/src/references.bib | 11 ++++++++ docs/src/references.md | 1 + ext/QuantumCliffordHeckeExt/lifted_product.jl | 27 +++++++++++++++++++ test/test_jet.jl | 2 +- 5 files changed, 41 insertions(+), 1 deletion(-) diff --git a/docs/Project.toml b/docs/Project.toml index 8ef02232a..f11b76a30 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -9,6 +9,7 @@ Hecke = "3e1990a7-5d81-5526-99ce-9ba3ff248f21" LDPCDecoders = "3c486d74-64b9-4c60-8b1a-13a564e77efb" Nemo = "2edaba10-b0f1-5616-af89-8c11ac63239a" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +Oscar = "f1435218-dba5-11e9-1e4d-f1a5fab5fc13" PyQDecoders = "17f5de1a-9b79-4409-a58d-4d45812840f7" Quantikz = "b0d11df0-eea3-4d79-b4a5-421488cbf74b" QuantumClifford = "0525e862-1e90-11e9-3e4d-1b39d7109de1" diff --git a/docs/src/references.bib b/docs/src/references.bib index 29500a034..b8d1116a0 100644 --- a/docs/src/references.bib +++ b/docs/src/references.bib @@ -487,3 +487,14 @@ @article{anderson2014fault year={2014}, publisher={APS} } + +@article{bravyi2024high, + title={High-threshold and low-overhead fault-tolerant quantum memory}, + author={Bravyi, Sergey and Cross, Andrew W and Gambetta, Jay M and Maslov, Dmitri and Rall, Patrick and Yoder, Theodore J}, + journal={Nature}, + volume={627}, + number={8005}, + pages={778--782}, + year={2024}, + publisher={Nature Publishing Group UK London} +} diff --git a/docs/src/references.md b/docs/src/references.md index 35e944a21..a5cb325ca 100644 --- a/docs/src/references.md +++ b/docs/src/references.md @@ -40,6 +40,7 @@ For quantum code construction routines: - [steane1999quantum](@cite) - [campbell2012magic](@cite) - [anderson2014fault](@cite) +- [bravyi2024high](@cite) For classical code construction routines: - [muller1954application](@cite) diff --git a/ext/QuantumCliffordHeckeExt/lifted_product.jl b/ext/QuantumCliffordHeckeExt/lifted_product.jl index 97e41b044..3ec78dbda 100644 --- a/ext/QuantumCliffordHeckeExt/lifted_product.jl +++ b/ext/QuantumCliffordHeckeExt/lifted_product.jl @@ -70,6 +70,33 @@ julia> code_n(c2), code_k(c2) - When the base matrices of the `LPCode` are 1×1 and their elements are sums of cyclic permutations, the code is called a generalized bicycle code [`generalized_bicycle_codes`](@ref). - When the two matrices are adjoint to each other, the code is called a bicycle code [`bicycle_codes`](@ref). +# Examples + +Bivariate Bicycle codes belong to a wider class of generalized bicycle (GB) codes, which are further generalized into of two block group algebra (2GBA) codes. They can be viewed as a special case of Lifted Product construction based on abelian group `ℤₗ x ℤₘ` where `ℤⱼ` cyclic group of order `j`. + +A [[756, 16, ≤ 34]] code from Table 3 of [bravyi2024high](@cite). + +```jldoctest +julia> import Hecke: group_algebra, GF, abelian_group, gens; import Oscar: PcGroup; + +julia> l=21; m=18; + +julia> GA = group_algebra(GF(2), abelian_group(PcGroup, [l, m])); + +julia> x = gens(GA)[1]; + +julia> y = gens(GA)[2]; + +julia> A = reshape([x^3 + y^10 + y^17], (1, 1)); + +julia> B = reshape([y^5 + x^3 + x^19], (1, 1)); + +julia> c1 = LPCode(A, B); + +julia> code_n(c1), code_k(c1) +(756, 16) +``` + ## The representation function We use the default representation function `Hecke.representation_matrix` to convert a `GF(2)`-group algebra element to a binary matrix. diff --git a/test/test_jet.jl b/test/test_jet.jl index 42454e54e..bbb5000a3 100644 --- a/test/test_jet.jl +++ b/test/test_jet.jl @@ -20,7 +20,7 @@ AnyFrameModule(LinearAlgebra), AnyFrameModule(Nemo), AnyFrameModule(AbstractAlgebra), - AnyFrameModule(Hecke), + AnyFrameModule(Hecke) )) @show rep