diff --git a/README.md b/README.md index e302ef1..8621c9e 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ pkg> add https://github.com/QuantumSavory/QuantumExpanders.jl.git To update, just type `up` in the package mode. -The library provides the following methods to construct explicit instances of *Quantum Tanner codes*. +The library provides the following methods to construct explicit instances of *quantum Tanner codes*. ```mermaid graph TD QuantumTannerCodes["Quantum Tanner Codes"] --> RandomMethods["Random Methods"] diff --git a/docs/Project.toml b/docs/Project.toml index 5a8b6d3..4427bef 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -1,6 +1,7 @@ [deps] Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" DocumenterCitations = "daee34ce-89f3-4625-b898-19384cb65244" +DocumenterMermaid = "a078cd44-4d9c-4618-b545-3ab9d77f9177" Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6" Hecke = "3e1990a7-5d81-5526-99ce-9ba3ff248f21" HiGHS = "87dc4568-4c63-4d18-b0c0-bb2238e4078b" diff --git a/docs/src/index.md b/docs/src/index.md index 4627b29..6612f26 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -2,6 +2,23 @@ A Julia library for constructing quantum Tanner codes and related expander-based quantum LDPC codes, built on top of [Oscar](https://www.oscar-system.org/), [QECCore](https://github.com/QuantumSavory/QECCore.jl), and [QuantumClifford](https://github.com/QuantumSavory/QuantumClifford.jl). +The library provides the following methods to construct explicit instances of *quantum Tanner codes*. + +```mermaid +graph TD + QuantumTannerCodes["Quantum Tanner Codes"] --> RandomMethods["Random Methods"] + QuantumTannerCodes --> DeterministicMethods["Deterministic Methods"] + + subgraph "Random construction" + RandomMethods --> RandomQuantumTannerCode["`random_quantum_Tanner_code`"] + end + + subgraph "Deterministic construction" + DeterministicMethods --> QuantumTannerCode["`QuantumTannerCode`"] + DeterministicMethods --> GeneralizedQuantumTannerCode["`GeneralizedQuantumTannerCode`"] + end +``` + ## Quick Example Constructing a random quantum Tanner code from Morgenstern generators of ``SL_2(\mathbb{F}_4)``: diff --git a/src/morgenstern.jl b/src/morgenstern.jl index 8056e80..85b429a 100644 --- a/src/morgenstern.jl +++ b/src/morgenstern.jl @@ -243,11 +243,11 @@ specific set of ``q+1`` generators. These generators are ``2 \\times 2`` matrice where q = 2^l is an *even* prime power, and d is an even integer extension degree. The field ``\\mathbb{F}_{q^d}`` is constructed as ``\\mathbb{F}_q[x]/g(x)\\mathbb{F}_q[x]`` where g(x) is an irreducible polynomial of degree d. Within this field, ``\\mathbb{i}`` denotes a root of the irreducible polynomial ``x^2 + x + \\varepsilon = 0``. The pairs -``(\\gamma_k, \\delta_k)`` are the q+1 solutions in `\\mathbb{F}_q^2`` to the ``\\gamma_k^2 + \\gamma_k\\delta_k + \\delta_k^2\\varepsilon = 1``. +``(\\gamma_k, \\delta_k)`` are the q+1 solutions in ``\\mathbb{F}_q^2`` to the ``\\gamma_k^2 + \\gamma_k\\delta_k + \\delta_k^2\\varepsilon = 1``. And x is the polynomial variable that represents an element of ``\\mathbb{F}_{q^d}`` in the construction. The same theorem states that the resulting Cayley graph ``\\Gamma_g`` has the following properties: it is -a (q+1)-regular Ramanujan graph of order ``|\\Gamma_g| = q^{3d} - q^d`` and is non-bipartite. The graph has +a (``q+1``)-regular Ramanujan graph of order ``|\\Gamma_g| = q^{3d} - q^d`` and is non-bipartite. The graph has girth at least ``\\frac{2}{3}\\log_q|\\Gamma_g|`` and diameter at most ``2\\log_q|\\Gamma_g| + 2``. Furthermore, as per Theorem *5.11*, all eigenvalues ``\\mu`` of the adjacency matrix satisfy ``|\\mu| \\leq 2\\sqrt{q}`` for ``\\mu \\neq ``\\pm(q+1)``. diff --git a/src/quantum_tanner_codes.jl b/src/quantum_tanner_codes.jl index 61978d0..b9f6f31 100644 --- a/src/quantum_tanner_codes.jl +++ b/src/quantum_tanner_codes.jl @@ -427,8 +427,8 @@ julia> code_n(c), code_k(c), distance(c, DistanceMIPAlgorithm(solver=HiGHS, logi ``` !!! note - This is a newer version of the less well designed function `gen_code`(G, A, B, bipartite=true, use_same_local_code=false)`. - It constructs the quantum Tanner code given a finite group G equipped with two *symmetric* generating sets A and B, + This is a newer version of the less well designed function `gen_code(G, A, B, bipartite=true, use_same_local_code=false)`. + It constructs the quantum Tanner code given a finite group ``G`` equipped with two *symmetric* generating sets ``A`` and ``B``, alongside pairs of classical codes — comprising parity check and generator matrices — that are utilized in the construction of classical Tanner codes. To illustrate its application, the implementation can employ generating sets computed from the Morgenstern's explicit construction of Ramanujan graphs for odd prime power `q` generating sets.