1.
Introduction
Let S be a commutative ring. A linear code C of length n over S is a sub-module of Sn. Any linear code C over S, with the property that any right cyclic shift of the coordinates of a codeword is also a codeword, is called a cyclic code. A subfamily of linear codes is known as double cyclic codes and was introduced by Borges et al. in 2018 in [9]. A linear code is said to be a double cyclic code if its coordinates can be partitioned into two subsets, the first r coordinates and the last s coordinates, such that any simultaneous cyclic shift of the coordinates of the subsets leaves the code invariant. In [9], Borges et al. conducted a study on the algebraic structure of Z2-double cyclic codes. The research involved the determination of generator polynomials for both this family of codes and their duals. Additionally, the paper established a connection between Z2-double cyclic codes and Z2Z4-additive cyclic codes, as initially introduced in [8]. Actually, double cyclic codes are generalized quasi-cyclic (GQC) codes with index 2, introduced in [13] by Siap and Kulhan. However, there is a difference between the papers [13] and [9]. Siap and Kulhan studied the structure of GQC codes giving the minimal spanning sets, weight enumerators, and minimum Hamming distance bounds of these codes. In [9], the authors discussed the generators and gave the explicit generator polynomials of Z2-double cyclic codes. Moreover, in [10], Gao et al. introduced the structure of double cyclic codes over the finite ring Z4.
Now, consider the ring R=Z2+uZ2={0,1,u,1+u} where u2=0. The ring R is an important ring with four elements other than the well-known ring Z4. There are many studies about the cyclic codes over R, such as [2,3,4,6,7,12]. It has been shown that studying linear and cyclic codes over R has advantages compared to the ring Z4. First of all, since the finite field F2 is a subring of the ring R, the factorization of polynomials over F2 is still valid over R. Additionally, the binary images of linear codes over R are always linear codes, which is not always the case for Z4. Moreover, decoding algorithms of cyclic codes over R are easier than that over Z4.
In this paper, we are interested in studying double cyclic codes over Rr×Rs, where r and s are two odd positive integers. We determine both the generators of R-double cyclic code C and its dual C⊥. We show that C⊥ is also an R-double cyclic code. As an application of our study, we give examples of binary linear codes with good parameters according to the database [11], which are binary images of R-double cyclic codes. We also construct an example of a self-dual R-double cyclic code and, furthermore, we show that the binary images of R-double cyclic codes are either binary QC (quasi-cyclic) or GQC codes.
2.
Preliminaries
Let R=Z2+uZ2={0,1,u,1+u}, with u2=0. A nonempty subset C of Rn is called a linear code over R if C is an R-sub-module of Rn. It is well known that a linear code C over R is permutation equivalent to a code with generator matrix
where A,B1,B2, and D are matrices over Z2.
We can map linear codes over R to linear codes over Z2 by using the following Gray map.
Let a=(x0+uy0,…,xn−1+un−1yn−1)∈Rn. Define the Gray mapping
where xi⊕yi=xi+yimod2,0≤i≤n−1. The map ϕ is an isometry, which transforms the Lee distance in Rn to the Hamming distance in Z2n2. The Hamming weight of any codeword is defined as the number of its nonzero entries. The Hamming distance between two codewords is the Hamming weight of their difference.
Furthermore, the Gray image ϕ(C) of C is a binary linear code as well. This property is not valid for the codes over Z4 in general. We naturally define the Lee weight of a codeword v=(v0,…,vn−1)∈Rn as
where wtL(vi) is the Lee weight of the coordinate of vi∈R, and the Lee weight of a coordinate vi∈R is defined by wtL(vi)=2 if vi=u, wtL(vi)=1 if vi∈{1,1+u} and zero otherwise. We can also extend the above map to Rr×Rs for a=(x0+uy0,…,xr−1+uyr−1)∈Rr,b=(p0+uq0,…,ps−1+uqs−1)∈Rs as follows:
where xi⊕yi=xi+yimod2,0≤i≤r−1, pj⊕qj=pj+qjmod2,0≤j≤s−1, and n=r+s.
Now, consider the polynomial ring R[x]/(xn−1). A cyclic code of length n over R is an ideal in the ring R[x]/(xn−1). Next, we introduce the definition of double cyclic codes over R, which is a natural extension of the classical definition of cyclic codes.
Definition 2.1. Let C be a linear code over R of length n=r+s. The code C will be called an R-double cyclic if
implies
For any codeword c=(u0,u1,…,ur−2,ur−1|v0,v1,…,vs−2,vs−1)∈Rn and any i∈Z, we define the ith shift of the codeword c to be
In this paper, we always take r and s as odd positive integers. Let us denote the set R[x]/(xr−1)×R[x]/(xs−1) by Rr,s. If C⊆Rr×Rs, then any element
can be identified with an element of Rr,s as follows:
This is a one-to-one correspondence between Rr×Rs and Rr,s. Moreover, for any h(x)∈R[x] and any (f(x),g(x))∈Rr,s, define the multiplication
This multiplication is well-defined and the ring Rr,s is an R[x]-module. Furthermore, any R-double cyclic code C is an R[x]-sub-module of Rr,s.
The inner product between two elements
is defined by
By using this inner product, we can define the dual code of an R-double cyclic code C.
Definition 2.2. Let C be an R-double cyclic code. The dual of C is defined in the usual way as follows:
Using this definition of the dual, we have the following Lemma 2.1. We skip the details for the proof of Lemma 2.1 since we obtain these results with a similar approach to that in [5].
Lemma 2.1. If C is an R-double cyclic code, then C⊥ is also an R-double cyclic code.
In the sequel, we determine the generator polynomials of an R-double cyclic code C.
Theorem 2.1. Let C be an R-double cyclic of length n=r+s, then
where a1(x)|g1(x)|(xr−1),a2(x)|g2(x)|(xs−1) over R and ℓ(x) is a polynomial over R.
Proof. Let C be an R-double cyclic code. Since both C and R[x]/(xs−1) are R[x]-modules, we can define the following map:
It is clear that χ is an R-module homomorphism whose image is an R[x]-sub-module (indeed an ideal) of R[x]/(xs−1) and ker(χ) is a sub-module of C. Furthermore, we can easily show that Image(χ) is an ideal in R[x]/(xs−1). The reader can find more detailed information about the structure of cyclic codes over R[x]/(xs−1) in [2]. Since s is an odd integer and Image(χ) is an ideal in R[x]/(xs−1), from [2] we have
where g2(x) and a2(x) are polynomials in R[x] satisfying a2(x)|g2(x)|xs−1. We also note that
Now, let us define the set
It is clear that A is an ideal in R[x]/(xr−1). So, we can write A=⟨g1(x)+ua1(x)⟩ with g1(x),a1(x)∈R[x]/(xr−1) and a1(x)|g1(x)|xr−1. It follows from here that for any element (j(x),0)∈ker(χ), we have j(x)∈A, then j(x)=m1(x)(g1(x)+ua1(x)) for the polynomial m1(x)∈R[x]. Hence,
which implies that ker(χ) is a sub-module of C generated by the element of the form (g1(x)+ua1(x)). By the first isomorphism theorem, we have
Finally, we need to prove the uniqueness of the generators. Note that since (g1(x)+ua1(x)) and (g2(x)+ua2(x)) are cyclic codes over R, this proves the uniqueness of the polynomials g1(x),a1(x), and g2(x),a2(x). Now, suppose that
Therefore, (ℓ1(x)−ℓ2(x),0)∈ker(χ)=⟨g1(x)+ua1(x),0⟩. This implies that
for some polynomial μ(x)∈R[x]. Since deg(ℓ1(x)−ℓ2(x))≤degℓ1(x)<deg(g1(x)+ua1(x)), then μ(x)=0, and we have ℓ1(x)=ℓ2(x). This completes the proof. □
Lemma 2.2. If C=⟨(g1(x)+ua1(x),0),(ℓ(x),g2(x)+ua2(x))⟩ is an R-double cyclic code, then we may assume that degℓ(x)<deg(g1(x)+ua1(x)).
Proof. See Lemma 9 in [1]. □
Lemma 2.3. If C=⟨(g1(x)+ua1(x),0),(ℓ(x),g2(x)+ua2(x))⟩ is an R-double cyclic code, then (g1(x)+ua1(x))|(xs−1a2(x))ℓ(x).
Proof. Consider
It means that (xs−1a2(x)ℓ(x),0)∈ker(χ), and we have (g1(x)+ua1(x))|(xs−1a2(x))ℓ(x). □
Remark 1. From the above discussion, if (ℓ(x),g2(x)+ua2(x))∈C for any R-double cyclic code, then (xs−1a2(x)ℓ(x),0)∈C. This implies that if R-double cyclic code C is generated by (ℓ(x),g2(x)+ua2(x)), then we must have (xr−1)|xs−1a2(x)ℓ(x).
We summarize all the discussions about the generators of R-double cyclic codes with the following theorem.
Theorem 2.2. Let C be a double cyclic code in Rr,s, then C can be identified as
(1) C=⟨(g1(x)+ua1(x),0)⟩, where a1(x)|g1(x)|(xr−1), or
(2) C=⟨(ℓ(x),g2(x)+ua2(x))⟩, where (xr−1)|xs−1a2(x)ℓ(x) and a2(x)|g2(x)|(xs−1), or
(3) C=⟨(g1(x)+ua1(x),0),(ℓ(x),g2(x)+ua2(x))⟩, where a1(x)|g1(x)|(xr−1), a2(x)|g2(x)|(xs−1), (g1(x)+ua1(x))|(xs−1a2(x))ℓ(x), and degℓ(x)<deg(g1(x)+ua1(x)).
Definition 2.3. Let M be an R-module. A linearly independent subset N of M that spans M is called a basis of M. If an R-module has a basis, then it is called a free R-module.
It is important to note that if C is a double cyclic code of the form C=⟨(g1(x)+ua1(x),0),(ℓ(x),g2(x)+ua2(x))⟩ with (g1(x)+ua1(x))|(xr−1) and (g2(x)+ua2(x))|(xs−1), then C is a free R-module [2]. If C is not of this form, then it is not a free R -module. Still, one can present a minimal spanning set for the code. In the following theorem, we present a spanning minimal set for double cyclic codes viewed as R-sub-modules.
Theorem 2.3. Let C=⟨(g1(x)+ua1(x),0),(ℓ(x),g2(x)+ua2(x))⟩ be an R-double cyclic code in Rr,s with all generator polynomials g1(x),a1(x),g2(x),a2(x), and ℓ(x) as in Theorem 2.1 and g1(x)h1(x)=xr−1, g2(x)h2(x)=xs−1. Furthermore, let deg(g1(x))=t1, deg(a1(x))=t2, deg(g2(x))=k1, and deg(a2(x))=k2. Consider the following sets:
then
forms a minimal spanning set for C as an R-module. Moreover, C has 4r+s−t1−k12t1+k1−t2−k2 codewords.
Proof. Let
correspond to a codeword in C, where m(x) and n(x) are polynomials in R[x]. If deg(m(x))≤r−t1−1, then m(x)∗(g1(x)+ua1(x),0)∈Span(S1). Otherwise, by using the division algorithm, we have m(x)=h1(x)q1(x)+r1(x), where q1(x),r1(x)∈R[x] and 0≤deg((r1(x)))<r−t1−1. It follows from here that
If deg(q1(x))≤t1−t2−1, then we get that q1(x)∗(uh1(x)a1(x),0)∈Span(S2). Otherwise, by using the division algorithm again, we have
where q2(x) and r2(x) are polynomials in R[x] with 0≤deg(r2(x))≤t1−t2−1. Therefore,
So, we have shown that m(x)∗(g1(x)+ua1(x),0)∈Span(S1∪S2).
Now, if deg(n(x))≤s−k1−1, then n(x)∗(ℓ(x),g2(x)+ua2(x)∈Span(S3). Otherwise, by the division algorithm,
Hence,
Since 0≤deg(r3(x))≤s−k1−1, then r3(x)∗(ℓ(x),g2(x)+ua2(x))∈Span(S3). So, the only remaining part is to prove that
We know that (g1(x)+ua1(x))|(xs−1a2(x))ℓ(x). Therefore, we can find a polynomial λ(x)∈R[x] such that xs−1a2(x)ℓ(x)=λ(x)(g1(x)+ua1(x)). Again, if deg(q3(x))≤k1−k2−1, then q3(x)∗(h2(x)ℓ(x),uh2(x)a2(x))∈Span(S4). Otherwise, we have
for the polynomials q4(x), r4(x) ∈R[x] with 0≤deg(r4(x))≤k1−k2−1. Therefore,
Since xs−1a2(x)ℓ(x)=λ(x)(g1(x)+ua1(x)), then q4(x)∗(xs−1a2(x)ℓ(x),0)∈Span(S1∪S2). Also, it is clear that r4(x)∗(h2(x)ℓ(x),uh2(x)a2(x))∈Span(S4). Therefore, S=S1∪S2∪S3∪S4 is a spanning set for C. Finally, it is clear that the set S is a minimal generating set in the sense that there is no element in S linearly dependent with the other elements. So, C has 4r+s−t1−k12t1+k1−t2−k2 codewords. □
Example 2.1. Consider the double cyclic code C in R[x]/(x15−1)×R[x]/(x7−1) generated by ((g1(x)+ua1(x),0),(ℓ(x),g2(x)+ua2(x))), where
We note that the polynomials above are obtained from the factorizations of (x15−1) and (x7−1) in R[x]. One can make use of the factorization in Z2[x] since this also holds over R. Moreover, we can calculate the following polynomials:
Hence, using the spanning sets in Theorem 2.3, we have the generator matrix for C as
Furthermore, the Gray image Φ(C) of C is a binary linear code with parameters [44,19,6].
3.
The structure of the dual double-cyclic codes
In this section, we study the structure of the dual of free R-double cyclic codes with using the similar approach given in [5,10]. Let f(x)=a0+a1x+…+an−1xn−1 be any element in the ring R[x]/(xn−1). Note that in this description, ai might equal 0 for any i=0,1,…,n−1. From now on, the polynomial f∗(x) will denote f∗(x)=xn−1f(1/x)=an−1+an−2x+…a0xn−1, i.e., if an−1≠0, then f∗(x) is the reciprocal of f(x). By definition, we note that f∗∗(x)=f(x).
Let (a0,a1,…,ar−1,b0,b1…,bs−1)∈Rr×Rs and the cyclic shift of this codeword be T(a,b)=(ar−1,a0,…,ar−2,bs−1,b0,…,bs−2). It is clear that the set {(a,b),T(a,b),T2(a,b),…,Tm−1(a,b)} produces all the cyclic shifts of (a,b), where m=lcm(r,s).
We will give the relation between the inner product and the polynomial product, which relies on the cyclic shifts in Rr×Rs. This approach was originally introduced in [5]. Let V=(a0,a1,…,ar−1,b0,b1,…,bs−1), W=(d0,d1,…,dr−1,e0,e1,…,es−1)∈Rr×Rs, and, without loss of generality, suppose r≤s, then
In general,
for all i=1,2,…,m where m=lcm(r,s). Now, construct the polynomial
Simplifying Z(x), we have
So, we can give the following proved theorem.
Theorem 3.1. Let V=(a0,a1,…,ar−1,b0,b1,…,bs−1), W=(d0,d1,…,dr−1,e0,e1,…,es−1)∈Rr×Rs, then V is orthogonal to W and all its cyclic shifts if, and only if,
This equation can be written as
Let us consider the free double cyclic code C=⟨(g1(x)+ua1(x),0),(ℓ(x),g2(x)+ua2(x))⟩ in Rr,s. Since C is free, it is clear that a1(x)=a2(x)=0.
Let d(x)=gcd(g1(x),ℓ(x)). Since g1(x)|xs−1g2(x)ℓ(x), we can write (xs−1g2(x)ℓ(x))=g1(x)β(x). Since d(x)=gcd(g1(x),ℓ(x)), we have α1(x)ℓ(x)+α2(x)g1(x)=d(x), g1(x)=d(x)d1(x), ℓ(x)=d(x)d2(x),xs−1g2(x)ℓ(x)=g1(x)β(x)=d(x)d1(x)β(x).
Now, since C is a free double cyclic code, we have g1(x)|(xr−1) and also g1(x)=d(x)d1(x), then xr−1=g1(x)h1(x)=d(x)d1(x)h1(x). Therefore,
So, we have
Therefore, xs−1=g2(x)d2(x)θ(x) and θ(x) is a factor of xs−1.
Lemma 3.1. Let C=⟨(g1(x),0),(ℓ(x),g2(x))⟩ be a free double cyclic code in Rr,s, then the code C is orthogonal to the code
where d(x),α1(x), and θ(x) are defined above.
Proof. Let C=⟨(g1(x),0),(ℓ(x),g2(x))⟩ be a free R-double cyclic code and g1(x)h1(x)=xr−1, then by using polynomial multiplication Z(x) defined before, we have
Now, we will find the product of the last generator polynomials.
Hence, we have
Consequently, the code C is orthogonal to the code D. □
Lemma 3.2. Let C=⟨(g1(x),0),(ℓ(x),g2(x))⟩ be a free double cyclic code in Rr,s. Let D=⟨((xr−1d(x)),0),(M(x),θ(x))⟩ with the generators as above, where M(x)=α1(x)xr−1g1(x), then
(1) (xr−1d(x)) is a factor of (xr−1),θ(x) is a factor of (xs−1).
(2) (xr−1d(x))|((xs−1θ(x))M(x)).
Proof. See the proof of Lemma 5 in [5]. □
Lemma 3.3. Let C=⟨(g1(x),0),(ℓ(x),g2(x))⟩ be a free double cyclic code in Rr,s. Let D=⟨((xr−1d(x)),0),(M(x),θ(x))⟩, then D has 4degd4(s−degθ) codewords.
Proof. Since the generators of D have the same properties as the generators of C in Theorem 2.3, the result follows from Theorem 2.3. □
Lemma 3.4. Let C=⟨(g1(x),0),(ℓ(x),g2(x))⟩ be a free double cyclic code in Rr,s. Let D=⟨((xr−1d(x)),0),(M(x),θ(x))⟩, then |C||D|=4n.
Proof. We know that |C|=4r−degg14s−degg2 and |D|=4degd4(s−degθ). Since xs−1g2(x)d(x)=g1(x)θ(x), we have
Therefore, |C||D|=4q, where
So, |C||D|=4n. □
Finally, we will give the following theorem that determines the generators of a dual of a free double cyclic code C.
Theorem 3.2. If C=⟨(g1(x),0),(ℓ(x),g2(x))⟩ is a free double cyclic code in Rr,s, then
Example 3.1. Let C be a double cyclic code in R[x]/(x7−1)×R[x]/(x7−1) generated by ((g1(x)+ua1(x),0),(ℓ(x),g2(x)+ua2(x))), where
Furthermore, we can calculate the following polynomials:
Hence, using the spanning sets in Theorem 2.3, we have the generator matrix for C as
Furthermore, the Gray image Φ(C) of C is a binary linear code with parameters [28,10,6].
Now, let us find the generator matrix of the dual cyclic code C⊥ by considering Theorem 3.2 as follows. First, we will determine the generator polynomials of the dual code.
Therefore, C⊥=⟨((1+x+x2+x4)∗,0),((1+x)∗,(1+x)∗)⟩ and the the parity-check matrix of C is
Moreover, Φ(C⊥) has the parameters [28,18,4] which are very close to the optimal parameters [28,18,5].
Let C=⟨(g1(x),0),(ℓ(x),g2(x))⟩ be a self-dual free double cyclic code in Rr,s, then C=C⊥, so we have the following results.
(1) (xr−1d(x))∗=g1(x)⟹xr−1=g1(x)(d(x))∗.
(2) (α1(x)β(x)+α2(x)xs−1g2(x))∗=g2(x)
⟹α1(x)β(x)+α2(x)xs−1g2(x)=(g2(x))∗
⟹α2(x)xs−1g2(x)=α1(x)β(x)+(g2(x))∗
⟹xs−1=g2(x)α2(x)(α1(x)β(x)+(g2(x))∗).
(3) ((M(x))∗,(θ(x))∗)=k1(x)(g1(x),0)+k2(x)(ℓ(x),g2(x)), then (M(x))∗=k1(x)g1(x)+k2(x)ℓ(x). We also know from Theorem 3.2 that (M(x))∗=(xr−1g1(x)α1(x))∗ and also from (1) that we have xr−1=g1(x)(d(x))∗, so
Therefore, d(x)(α(x))∗=k1(x)g1(x)+k2(x)ℓ(x), and we have
Since gcd(g1(x)d(x),ℓ(x)d(x))=1, we have (α1(x))∗=1 and α1(x)=1.
Example 3.2. Let C be a free R-double cyclic code in R7×R7 with C=⟨((g1(x),0),(ℓ(x),g2(x)))⟩, where
Therefore, C has the following generator matrix
Furthermore, the dual code is C⊥=⟨(¯g1(x),0),(ˉℓ(x),¯g2(x))⟩ with
and has the generator matrix of the form
Since GHT=0 and the dimensions of C and C⊥ are the same, C is a self-dual R-double cyclic code with the parameters [28,14,4] of Φ(C).
In Table 1, we present several examples of optimal binary linear codes, which are actually the Gray images of R-double cyclic codes. We use the table of codes in reference [11] that contains a database of optimal linear codes with respect to the Hamming distance according to their lengths and dimensions. We obtain these optimal codes by direct construction with no puncturing or shortening.
4.
Gray images of R-double cyclic codes
We have defined the below Gray map in the first part of the paper. Now, we will talk about the Gray images of R-double cyclic codes. We know that the Gray map Φ is linear and the images of R-double cyclic codes under this map are binary linear codes. For a=(x0+uy0,…,xr−1+uyr−1)∈Rr, b=(p0+uq0,…,ps−1+uqs−1)∈Rs, we have
where xi⊕yi=xi+yimod2,0≤i≤r−1, pj⊕qj=pj+qjmod2,0≤j≤s−1, and n=r+s.
Theorem 4.1. Let C be a double cyclic code in Rr,s.
(1) If r=s, then Φ(C) is a binary QC-code of index 4.
(2) If r≠s, then Φ(C) is a binary GQC-code ([13]) of index 4.
Proof. The proof of this theorem is similar to the proof of Theorem 9 in [5]. □
5.
Conclusions
In this paper, we studied the algebraic structure of R-double cyclic codes and their duals where R=Z2+uZ2={0,1,u,1+u} is the ring with four elements and u2=0. We gave the generator polynomials of both the R-double cyclic code C and its dual code C⊥. We also presented examples of optimal parameter binary linear codes that are Gray images of R-double cyclic codes. In the present paper, we have chosen the lengths r and s as odd integers, since R[x]/(xn−1) is a principal ideal ring for an odd integer n. In our case, cyclic codes over R can be generated using only one generator. However, when n is not odd, R[x]/(xn−1) is not a principal ideal ring, and cyclic codes over R can be generated by two generators [2]. Therefore, exploring double cyclic codes over R with even lengths for future research could be interesting.
Use of AI tools declaration
The author declares he has not used Artificial Intelligence (AI) tools in the creation of this article.
Conflict of interest
The author declares no conflict of interest.