Goto Chapter: Top 1 2 3 4 Bib Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

1 Introduction to the SingerAlg Package
 1.1 Aims of the SingerAlg Package
 1.2 Theoretical Background: Singer algebras
 1.3 GAP-Julia Integration in the SingerAlg Package
 1.4 Installation of the SingerAlg Package
 1.5 Acknowledgements

1 Introduction to the SingerAlg Package

1.1 Aims of the SingerAlg Package

The mathematical aims of the package are

From the viewpoint of programming, the package provides examples how the GAP/Julia integration via the JuliaInterface package [BGH21] can be used (see Section 1.3). From the viewpoint of teaching, some aspects of this package and of the papers mentioned above would be suitable for a course in elementary number theory, with accompanying computational experiments. Note that one can neglect the representation theoretic background, and restrict the needed theory to knowledge of the group of prime residues modulo an integer, g.c.d. computations, and linear algebra; for examples, see Chapter 2, in particular Section 2.2, and Chapter 4.

1.2 Theoretical Background: Singer algebras

Let z be a positive integer, and q ∈ { 2, 3, ..., z+1 } be coprime to z. Let n = ord_z(q) denote the multiplicative order of q modulo z, and let e = (q^n-1)/z. We define the Singer algebra A[q,z] as the free -module spanned by (b_0, b_1, ..., b_z) where the multiplication is given by b_i ⋅ b_j = b_{i+j} if the pointwise sum of the q-adic expansions of i e and j e does not exceed q-1 (that is, there is no carry in the q-adic addition of i e and j e), and b_i ⋅ b_j = 0 otherwise.

Another interpretation of A[q,z] and the basis of b_i is as follows (see [BHHK21, Section 1]). Consider the factor of the polynomial ring R = ℤ[X_1, X_2, ..., X_n] modulo the ideal I spanned by X_1^q, X_2^q, ..., X_n^q. Then A[q,z] is isomorphic to a subalgebra of this algebra, via mapping b_k to the monomial x_1^{i_1} x_2^{i_2} ⋯ x_n^{i_n}, where i_1 + q i_2 + ⋯ + q^{n-1} i_n = k e and x_i = X_i + I. This interpretation motivates the terms "monomials" for the b_i and "degree" for the sum i_1 + i_2 + ⋯ i_n; these terms occur in the names and descriptions of several functions of this package.

The algebra A[q,z] is called A(q,n,e) and A[q,n,z] in [BHHK20] and [BHHK21], where n is required to be a multiple of ord_e(q) or ord_z(q), respectively, and q can be any integer larger than 1 that is coprime to e or z, respectively. For the purposes of this GAP package, it is more suitable to consider the parameters q and z, as introduced above. In particular, these numbers are small for low dimensional algebras, whereas the number e can be quite large, see Section 2.2-1.

Note that A[q,n,z] is isomorphic to A[q,ord_z(q),z] for each multiple n of ord_z(q), by [BHHK21, Lemma 7.1], and A[q,z] is isomorphic to A[q',z] whenever q and q' generate the same subgroup of prime residues modulo z, by [BHHK21, Lemma 7.5].

For any prime integer p, A[q,z]_p = ⨁_{0 ≤ i ≤ z} 𝔽_p b_i denotes the reduction of A[q,z] modulo p. We call (b_0, b_1, ..., b_z) the canonical basis of A[q,z] and A[q,z]_p, and denote it by B(A[q,z]) and B(A[q,z]_p), respectively. Note that the i-th basis vector is B(A[q,z])_i = b_{i-1}.

The name "Singer algebra" was chosen because these algebras occur in the following context.

Let p be a prime, n be a positive integer, F be the field with p^n elements, and F_1 be the prime field of F.

We choose an element σ of order p^n - 1 in the group GL(n,F_1), a so-called Singer cycle, let e be a divisor of p^n - 1, and set z = (p^n - 1) / e.

The cyclic group H = ⟨ σ^z ⟩ of order e acts naturally on the elementary abelian group P = ⟨ x_1, x_2, ..., x_n ⟩ of order p^n. This action extends to the group algebra F P, and we may consider the algebra (F P)^H of fixed points in F P under this action. As is described in [BHHK21, Section 2], we can construct an F-basis of F P that consists of eigenvectors for the action of H. This yields a basis of (F P)^H, for which the multiplication rules stated above for A[q,z] can be derived. In other words, (F P)^H is isomorphic with F ⊗_{F_1} A[q,z]_p.

1.3 GAP-Julia Integration in the SingerAlg Package

If the SingerAlg package is used together with the GAP package JuliaInterface [BGH21] then both GAP and Julia implementations of most of the package's functions are available. For example, there are the functions LoewyLengthGAP (3.1-6) and LoewyLengthJulia (3.1-6) for computing the Loewy length of a Singer algebra from its defining parameters. There is also the function LoewyLength (3.1-6), which uses one of the two implementations. By default, the Julia code is used for computations if JuliaInterface is available, and the GAP code is used by default if not.

Note that some of the Julia functions call GAP functions. For example, the factorization of large integers in GAP and its package FactInt [Koh19] are (currently) faster than the corresponding functions from Julia's Primes package. In order to achieve a "fair" comparison of the runtimes in GAP and Julia, we call the GAP function Factors (Reference: Factors) in both situations.

Note also that Julia objects are stored as the values of GAP attributes such as LoewyStructureInfoJulia (3.1-11), and some Julia functions take a GAP object as an argument, in order to benefit from its attribute values if applicable.

One can also use the Julia functions in a Julia session, by loading the file julia/SingerAlg.jl into Julia with include; afterwards the Julia functions are accessible in the Julia module "SingerAlg". This approach requires the Julia package GAP.jl (and thus a Julia compatible installation of GAP).

1.4 Installation of the SingerAlg Package

The SingerAlg package itself consists only of GAP (and Julia) code, it is in principle enough to unpack the archive in a pkg directory of a GAP installation, and then to load the package into the GAP session.

However, if one wants to use the Julia implementations of the package's functions then the GAP package JuliaInterface [BGH21] must be available. In particular, the GAP installation must be done using Julia's garbage collector in this case; one can check this by looking at the value of GAPInfo.KernelInfo.GC: If it is "Julia GC" then JuliaInterface can be loaded (provided it is installed), otherwise Julia features are not available.

The easiest way to install GAP with Julia's garbage collector is to install Julia (see https://julialang.org/downloads/), then ask Julia's package manager to download and install GAP (by entering using Pkg; Pkg.add( "GAP" ) at the Julia prompt), and then to use the SingerAlg package with this version of GAP.

For one function of the package (SingerAlg.ProposedPermutationIsomorphism (3.4-2)), the interface to [McK90] provided by GAP's GraPe package [Soi19] is needed; if one wants to use this function –see for example Section 4.3-4– then GraPe must be installed.

1.5 Acknowledgements

The development of this GAP package has been supported by the SFB-TRR 195 "Symbolic Tools in Mathematics and their Applications" (Project-ID 286237555, since 2017).

Thanks to the coauthors of the papers [BHHK20] and [BHHK21], Erzsébet Horváth, László Héthelyi, and Burkhard Külshammer, for many discussions and suggestions that contributed to this package.

Thanks to Bettina Eick for hints about invariants, see Section 3.5.

 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 Bib Ind

generated by GAPDoc2HTML