![]() |
The build-up method is a powerful class of propagation rules that generate self-dual codes over finite fields and unitary rings. Recently, it was extended to non-unitary rings of order four to generate quasi self-dual codes. In the present paper we introduce three such propagation rules to generate self-orthogonal, one-sided self-dual, and self-dual codes over a special non-unitary ring of order 9. As an application, we classify the three categories of codes in lengths at most 7, up to monomial equivalence. Mass formulas for the three classes of codes considered ensure that the classification is complete.
Citation: Adel Alahmadi, Tamador Alihia, Patrick Solé. The build up construction for codes over a non-commutative non-unitary ring of order 9[J]. AIMS Mathematics, 2024, 9(7): 18278-18307. doi: 10.3934/math.2024892
[1] | Adel Alahmadi, Altaf Alshuhail, Patrick Solé . The mass formula for self-orthogonal and self-dual codes over a non-unitary commutative ring. AIMS Mathematics, 2023, 8(10): 24367-24378. doi: 10.3934/math.20231242 |
[2] | Adel Alahmadi, Asmaa Melaibari, Patrick Solé . Quasi self-dual codes over non-unital rings from three-class association schemes. AIMS Mathematics, 2023, 8(10): 22731-22757. doi: 10.3934/math.20231158 |
[3] | Ted Hurley . Ultimate linear block and convolutional codes. AIMS Mathematics, 2025, 10(4): 8398-8421. doi: 10.3934/math.2025387 |
[4] | Doris Dumičić Danilović, Andrea Švob . On Hadamard $ 2 $-$ (51, 25, 12) $ and $ 2 $-$ (59, 29, 14) $ designs. AIMS Mathematics, 2024, 9(8): 23047-23059. doi: 10.3934/math.20241120 |
[5] | Guoqing Wang . Lower bound for the Erdős-Burgess constant of finite commutative rings. AIMS Mathematics, 2020, 5(5): 4424-4431. doi: 10.3934/math.2020282 |
[6] | Ismail Aydogdu . On double cyclic codes over $ \mathbb{Z}_2+u\mathbb{Z}_2 $. AIMS Mathematics, 2024, 9(5): 11076-11091. doi: 10.3934/math.2024543 |
[7] | Fatma Zehra Uzekmek, Elif Segah Oztas, Mehmet Ozen . $ (\theta_i, \lambda) $-constacyclic codes and DNA codes over $ \mathbb{Z}_{4}+u\mathbb{Z}_{4}+u^{2}\mathbb{Z}_{4} $. AIMS Mathematics, 2024, 9(10): 27908-27929. doi: 10.3934/math.20241355 |
[8] | Sami Alabiad, Yousef Alkhamees . On classification of finite commutative chain rings. AIMS Mathematics, 2022, 7(2): 1742-1757. doi: 10.3934/math.2022100 |
[9] | Chaofeng Guan, Ruihu Li, Hao Song, Liangdong Lu, Husheng Li . Ternary quantum codes constructed from extremal self-dual codes and self-orthogonal codes. AIMS Mathematics, 2022, 7(4): 6516-6534. doi: 10.3934/math.2022363 |
[10] | Xiying Zheng, Bo Kong, Yao Yu . Quantum codes from $ \sigma $-dual-containing constacyclic codes over $ \mathfrak{R}_{l, k} $. AIMS Mathematics, 2023, 8(10): 24075-24086. doi: 10.3934/math.20231227 |
The build-up method is a powerful class of propagation rules that generate self-dual codes over finite fields and unitary rings. Recently, it was extended to non-unitary rings of order four to generate quasi self-dual codes. In the present paper we introduce three such propagation rules to generate self-orthogonal, one-sided self-dual, and self-dual codes over a special non-unitary ring of order 9. As an application, we classify the three categories of codes in lengths at most 7, up to monomial equivalence. Mass formulas for the three classes of codes considered ensure that the classification is complete.
Historically, the classification of self-dual codes over unitary rings and finite fields has rested on two pillars: an algorithm to generate short length codes, and a mass formula to signal the completion of the classification [7,15]. While the pionneers (Conway, Pless Sloane, and so on), were using various ad hoc methods like glueing theory to generate short codes [17], in recent years the build up method emerged as a systematic generation method [10,13,14]. By using a recursion on generator matrices, from a self-dual code of length n, it creates a self-dual code of length n+h (with h small and fixed). This is sometimes called a propagation rule of order h. For concreteness, one may take h=2 for binary codes [6] and codes over a certain ring of order 4 [12], and h=4 for ternary codes [13]. In [5], this technique was applied to a commutative non-unital ring with success.
In this paper, we initiate the study of self-dual codes over the ring E3, defined on two generators a,b by the relations
E3=⟨a,b| 3a=3b=0, a2=a, b2=b, ab=a, ba=b⟩. |
This ring is a non-unital, non commutative ring of order 9. This notation is consistent with the classification of rings of order p2 for p, a prime of [9]. While the use of finite fields as alphabets in Coding Theory dates back to its inception in the 1940's, and the use of finite rings from the 1980's, it is only in recent years that non-unitary rings have been used as alphabets at the cost of theoretical hurdles [1,2,3,4].
We will use a definition of self-dual codes for non-commutative rings introduced in [2]. This new notion of self-dual codes coincides with that of QSD codes for that special ring. Also of interest are left self-dual (LSD) and right self-dual (RSD) codes, in agreement with the non-commutativity of the alphabet ring. In particular, we modify the propagation rules of [1] to produce self-orthogonal and self-dual codes, as well as one-sided self-dual codes. As an application, we classify the three types of codes considered in lengths at most 7. We derive mass formulas for the these three types that guarantee that the classification is complete.
The material is arranged as follows. The next section contains the preliminary notions and notations needed in the later sections. Section 3 derives building-up constructions for the three classes of codes mentioned. Section 4 applies these propagation rules to concrete classifications in short lengths. Section 5 concludes the article.
Let Fn3 represent the vector space of n-tuples over the 3-element field F3. A ternary linear code C of length n and dimension k, denoted shortly as an [n,k]3 code, is a k-dimensional subspace of Fn3.
The number of nonzero coordinates of a vector x∈Fn3 is called its Hamming weight wt(x). The Hamming distance d(x,y) between two vectors x,y∈Fn3 is defined by d(x,y)=wt(x−y). The minimum distance of a linear code C is
d(C)=min{d(x,y)|x,y∈C,x≠y}=min{wt(c)|c∈C,c≠0} |
A 3-ary linear code of length n, dimension k, and minimum distance d is said to be an [n,k,d]3 code.
Following [9], we define the ring E3 of order 9 on two generators a and b by the relations:
E3=⟨a,b| 3a=3b=0, a2=a, b2=b, ab=a, ba=b⟩. |
Thus, E3 has characteristic three, and consists of nine elements
E3={0,a,b,c,d,e,f,g,h}, |
where
c=a+b, d=2b, e=2a,f=e+b, g=a+d, and h=d+e. |
These definitions immediately lead to the addition and the multiplication tables given as follow.
![]() |
We may deduce from the multiplication table that this ring is non-commutative without identity and has unique maximal ideal J3={0,f,g=2f} with residue field E3/J3≃F3.
As a result, we have the following f-adic decomposition. It can be checked by inspection that any element i∈E3 can be expressed as i=ax+fy, for unique scalars x,y∈F3. We have defined a natural action of F3 on the ring E3 by the rule
r0=0r=0,r1=1r=r,and r2=r+r=2r for all r∈E3. |
Note that, for all r∈E3, x,y∈F3, this action is "distributive" in the sense that r(x⊕y)=rx+ry, where ⊕ denote the addition in F3. When x∈Fn3, and r∈En3, we will occasionally use the inner product notation (x,r) to indicate
(x,r)=x1r1+⋯+xnrn. |
We define the reduction map modulo S as π:E3⟶E3/J3≃F3 by
π(0)=π(f)=π(g)=0, |
π(a)=π(b)=π(h)=1, |
π(e)=π(d)=π(c)=2. |
This map is extended in the natural way in a map from En3 to Fn3.
A linear E3-code C of length n is a one-sided E3-submodule of En3. It may be thought of as the E3-span of the rows of a matrix called a generator matrix (we assume that these rows belong to C). There are two ternary codes of length n associated with the code C. The residue code res(C) is just π(C), and the torsion code tor(C) is {x∈Fn3| fx∈C}. It is easy to verify that res(C)⊆tor(C) [3]. We denote the dimension of the residue code by k1, and the dimension of the torsion code by k1+k2. Such a code C is of type {k1,k2}. A straightforward application of the first isomorphism theorem [3] shows that
|C|=|res(C)||tor(C)|=32k1+k2. |
By a result similar to [3, Theorem 1], we can show that every code C over E3 of length n and type {k1,k2} is equivalent to a code with a generator matrix
[aIk1aXY0fIk2fZ], |
where Y is a matrix with entries in E3, X and Z are matrices with entries from F3, and Ik1, Ik2 are identity matrices.
In fact, generator matrices of res(C) and tor(C) are given by
[Ik1Xπ(Y)] and [Ik1Xπ(Y)0Ik2Z], |
respectively.
Define the inner product of x and y in En3 as (x,y)=x1y1+x2y2+⋯+xnyn, where x=(x1,x2,…,xn) and y=(y1,y2,…,yn).
The left dual code C⊥L of a code C is the module defined as
C⊥L={y∈En3 | ∀x∈C , (y,x)=0}. |
The right dual code C⊥R of a code C is the module defined as:
C⊥R={y∈En3 | ∀x∈C , (x,y)=0}. |
Thus, the left (respectively, right) dual of a left (respectively, right) module is a left (respectively, right) module.
A left self-dual code C satisfies C=C⊥L. Likewise, a right self-dual code C satisfies C=C⊥R.
The two-sided dual of C, denoted by C⊥, is given by C⊥=C⊥L∩C⊥R. We say that a code C is self-dual (SD) iff C=C⊥L∩C⊥R. A code C is self-orthogonal (SO) if for all x,y∈C, (x,y)=0.
Clearly, C is a self-orthogonal code C, iff C⊆C⊥L∩C⊥R.
Two E3-codes are monomially equivalent if there is a monomial transformation of coordinates that maps one to the other. Here a monomial transformation is a matrix with entries in F3 and with exactly one element per row and per column. The parameters (n,3k,d) of an E3-code are identified with that of its image by ϕ, defined in the next subsection.
An additive code C of length n over F9 is an additive subgroup of Fn9. Thus, C contains 3k codewords for some integer 0≤k≤2n, and is called an (n,3k) code. If, furthermore, C has minimum distance d, we write the parameters of C as (n,3k,d). An additive code C over F9 can be represented by a k×n generator matrix with entries from F9 whose rows span C, called a generator matrix. That is, C is the F3-span of its rows.
Let ω∈F9 be such that ω2=ω+1. Since the polynomial t2−t−1 is irreducible over F3, we can write F9=F3[ω]. The trace map, Tr:F9⟶F3, is defined as Tr(x)=x+x3.
Every linear E3-code C is attached with an additive F9-code ϕ(C) by the alphabet substitution
0⟶0, a⟶2, b⟶ω, |
c⟶2+ω, d⟶2ω, e⟶1, |
f⟶ω+1, g⟶2(ω+1), h⟶1+2ω, |
extended naturally to Fn9. The parameters (n,3k,d) of an E3-code are identified with that of its image under ϕ. It can be checked that, for all x∈En3, we have Tr(ϕ(x))=π(x), and thus res(C)=Tr(ϕ(C)).
Similarly, we see that tor(C) is the so-called subfield subcode of ϕ(C), that is Fn3∩ϕ(C).
We recall from [17] that the weight enumerator of any linear or additive code C of length n is the polynomial
WC(x,y)=xn+n∑i=1Aixn−iyi |
where the sequence A1,......,An is the weight distribution of C. That is, Ai is the number of codewords in C of weight i.
Lemma 1. If C is a linear code of length n over E3 with weight enumerator WC(x,y), then the weight enumerator of the dual code C⊥ is given by
WC⊥=3−nWC(x+8y,x−y). |
In particular, the weight enumerator of a self-dual code is invariant under the matrix group generated by 13(181−1).
Proof. The first statement, analogous to the MacWilliams identity for linear codes over Fq, follows from the general theory [17, Theorem 13], since our trace inner product ϕ(C) is an (n,32k1+k2) additive code over F9 with
WC(x,y)=Wϕ(C)(x,y). |
The second statement follows from the first, by noticing that, for a self-dual code, we have WC⊥=WC.
Let φn,k denote the number of distinct self-orthogonal ternary codes having parameters [n,k1] (see [15, Theorem 4.7]. We define the Gaussian coefficient (kr)3 for r≤k as
(kr)3=(3k−1)(3k−1−1)....(3k−r+1−1)(3r−1)(3r−1−1)....(3−1) |
which gives the number of subspaces of dimension r contained in a k-dimensional vector space over F3.
In what follows, we present a mass formula for self-orthogonal codes over E3 which is a characteristic 3-version of [4, Theorem 8].
Theorem 1. For all lengths n, and for the type {k1,k2}, where k1≥1, the number of self-orthogonal codes over E3 is
NSO(n,k1,k2)=φn,k1(n−2k1k2)33k1(n−2k1−k2). |
If k1=0, then
NSO(n,0,k2)=(nk2)3. |
The following mass formulas follow by the usual counting technique under group action. Corollaries 1–4 are a consequence of Theorem 1.
Corollary 1. For given length n and type {k1,k2}, with 0≤k1,k2≤n, we have
∑C1|Aut(C)|=NSO(n,k1,k2)2nn!, |
where C runs over distinct representatives of equivalence classes under monomial column permutations of SO codes of length n and type (k1,k2).
Corollary 2. For given length n and type {k1,k2}, with k1≥1, we have
∑C1|Aut(C)|=NSD(n,k1,k2)2nn!=φn,k12nn!, |
where C runs over distinct representatives of equivalence classes under monomial column permutations of SD codes of length n and type {k1,k2}.
Corollary 3. For given length n and type {0,k2}, with k2≥1, we have
∑C1|Aut(C)|=NRSD(n,k1,k2)2nn!=12nn!, |
where C runs over distinct representatives of equivalence classes under monomial column permutations of RSD codes of length n and type {0,k2}.
Corollary 4. For given length n and type {n2,0}, with n2≥1, we have
∑C1|Aut(C)|=NLSD(n,k1,k2)2nn!=φn,n22nn!, |
where C runs over distinct representatives of equivalence classes under monomial column permutations of LSD codes of length n and type {n2,0}.
In this section we provide the building-up construction for self-orthogonal codes, (one-sided) self-dual, and self-dual codes over E3. Our building-up construction needs the following theorems.
Theorem 2. Let C be an E3 code of length n, with residue code C1 and torsion code C2. The following hold:
● If C is a linear code of length n over E3, then C=aC1+fC2.
● If C1 is self-orthogonal with C1⊆C2⊆C⊥1, then C is a self-orthogonal code.
● If, furthermore, |C|=3n, then C2=C⊥1.
Proof. The first statement:_ It suffices to prove that C⊆aC1+fC2.
Let i∈C. We can write i in f-adic decomposition form as i=ax+fy where x,y∈Fn3.
Since π(ax+fy)=x, it follows that x∈res(C).
By following [3, Lemma 3], we have ax∈C. Also by a linearity of C, we can see that fy∈C, and hence y∈tor(C).
This proves that C⊆aC1+fC2.
The second statement:_ Suppose i1,i2∈C. We can write i1 and i2 in f-adic decomposition form as i1=ax1+fy1 and i2=ax2+fy2 where x1,x2∈res(C) and y1,y2∈tor(C). Compute (i1,i2),
(ax1+fy1,ax2+fy2)=a2(x1,x2)+af(x1,y2)+fa(x2,y1)+f2(y1,y2)=a(x1,x2)+f(x2,y1). |
Since tor(C)⊆res(C)⊥, it follows that (x1,x2)=(x2,y1)=0, which is self-orthogonal. Thus, C is self-orthogonal.
The last statement:_ It follows that C2=3n−k1=C⊥1.
The next result control the linear structure of SO codes.
Corollary 5. For any SO codes C over E3 of length n, we have
(i) tor(C)⊆res(C)⊥.
(ii) res(C) must be a self-orthogonal ternary code.
Proof. For (i), let y∈tor(C), then fy∈C and q∈C, we can write q in f-adic decomposition form as q=au+fv, where u∈res(C) and v∈tor(C).
(fy,au+fv)=fa(y,u)=f(y,u)=0. |
Thus, y∈res(C)⊥ and tor(C)⊆res(C)⊥.
For (ii), By (i), and the fact that res(C)⊆tor(C), it follows that
res(C)⊆tor(C)⊆res(C)⊥. |
Theorem 3. For any linear code C over E3, we have
(i) C⊥L=a res(C)⊥+f res(C)⊥.
(ii) C⊥R=a tor(C)⊥+f Fn3.
Proof. For (i), we need to prove that res(C⊥L)=res(C)⊥=tor(C⊥L).
From the fact res(C⊥L)⊆tor(C⊥L), it follows that res(C⊥L)⊆res(C)⊥⊆tor(C⊥L).
Now, let y∈tor(C⊥L), then fy∈C⊥L and x∈res(C), then ax∈C. By definition of C⊥L, we can see that
(fy,ax)=fa(y,x)=f(y,x)=0. |
Thus, y∈res(C)⊥ and tor(C⊥L)⊆res(C)⊥.
On the other hand, given r∈res(C)⊥ and i∈C, i may be expressed in f-adic decomposition form as i=au+fv, where u∈res(C) and v∈tor(C),respectively. It can be seen that
(ar,i)=(ar,au+fv)=a(r,u)=0 |
by definition of C⊥. Thus, ar∈C⊥L, and r∈res(C⊥L). This implies that, res(C)⊥⊆res(C⊥L). Therefore,
res(C⊥L)=res(C)⊥=tor(C⊥L). |
For (ii), suppose y∈tor(C)⊥⊆res(C)⊥, and i∈C, we can write i in f-adic decomposition form as i=au+fv, where u∈res(C) and v∈tor(C). By definition of C⊥, we have
(i,ay)=(au+fv,ay)=a(u,y)+f(v,y)=0. |
Thus, ay∈C⊥R, and y∈res(C⊥R). This implies that, tor(C)⊥⊆res(C⊥R). Conversely, let x∈res(C⊥R), then ax∈C⊥R. Let y∈tor(C), then fy∈C. Observe that
(fy,ax)=fa(y,x)=f(y,x)=0. |
Thus, fy∈C⊥ and y∈tor(C)⊥. This implies that res(C⊥R)=tor(C)⊥.
Now to prove tor(C⊥R)=Fn3, it suffices to show that Fn3⊆tor(C⊥R).
Let r∈Fn3, and i∈C, we can write i in f-adic decomposition form as i=au+fv, where u∈res(C) and v∈tor(C). We can see that
(i,fr)=(au+fv,fr)=af(u,r)+f2(v,r)=0. |
Thus, fr∈C⊥R, then r∈tor(C⊥R), and so Fn3⊆tor(C⊥R). This completes the proof.
Corollary 6. For any linear code C over E3, we have
(i) C is left self-dual (LSD) iff C is of type {n2,0}.
(ii) C is right self-dual (RSD) iff C=f Fn3.
The lengths of LSD codes can be determined completely.
Corollary 7. Left self-dual codes over E3 of length n occurs if and only if n is a multiple of 4.
Proof. From Theorem 3, C is left self-dual iff res(C) is a self-dual ternary code. Then, by [16, Theorem 3], a self-dual code over F3 of length n exists only if n is a multiple of 4.
This completes the proof.
Theorem 4. Assume C is an E3-code of length n, C is a SD code if and only if
C=a res(C)+f res(C)⊥; |
moreover, |C|=3n.
Proof. We know that C is self-dual code over E3 iff C=C⊥=C⊥R∩C⊥L. By Theorem 2, we can see that
C=a (res(C⊥R)∩res(C⊥L))+f (tor(C⊥R)∩tor(C⊥L)). |
Thus, by Theorem 3, it can be seen that
C=a tor(C)⊥+f res(C)⊥=a res(C)+f res(C)⊥. |
Corollary 8. For any linear code C over E3, we have:
(1) If C is SD with k1=0, then C is RSD.
(2) If C is SD with k2=0, then C is LSD.
The next result bounds the minimum distances of SD and LSD codes.
Corollary 9. (i) The minimum distance d(C) of a self-dual code over E3 is less than or equal to min{d(res(C)),d(res(C)⊥)}.
(ii) If C is a left self-dual code C over E3, then the minimum distance d(C) is equal to d(res(C)).
Proof. For (i), by Theorem 4, we have C=a res(C)+f res(C)⊥.
Let d1 and d2 denote the minimum distances of res(C) and res(C)⊥, respectively.
By definition of tor(C), we have d(C)≤d2. By [3, Lemma 3], we have a res(C)⊆C, which indicates that d(C)≤d1. It follows that d(C)≤min{d1,d2}.
For (ii), by Theorem 3, we have C=a res(C)⊥+f res(C)⊥, where res(C)⊥=res(C). This means that d1=d2.
We now establish that d(C)≥d1. Assume q is in C and wt(q)=d. Because r∈res(C)⊥ and s∈res(C)⊥, q=ar+fs by Theorem 2. We have the following three scenarios, which rely on r and s, since C is nonzero:
(1) wt(q)=wt(ar)=wt(r) if r≠0 and s=0,
(2) wt(q)=wt(fs)=wt(s) if r=0 and s≠0,
(3) wt(q)=wt(ar+fs)≥wt(ar)=wt(r) if r,s≠0.
It follows that d(C)≥d1 since d1=d2. Thus, from (i), we conclude that d(C)=d1.
In this subsection, we present the build-up construction method for self-orthogonal codes over E3. The following theorem is a propagation rule of order three which increases the number of generators by one.
Theorem 5. Let C0 be a self-orthogonal code over E3 of length n with generator matrix G0=(ri) where ri is the ith row of G0, for i=1,2,…,m. Let x∈Fn3 and α,β,γ∈E3, such that α+β+γ=0. Then the code C with the following generator matrix
G=(αβ0γx(x,r1)(x,r1)(x,r1)r1⋮⋮⋮⋮(x,rm)(x,rm)(x,rm)rm) |
is a self-orthogonal code of length n+3 if:
(i) (x,x)=1, and α,β,γ∈E3∖J3; or
(ii) (x,x)=−1 and (α≠0, β=0, γ=2α).
Proof. It suffices to show that the rows of G are orthogonal to each other. Let y0=(αβ0γx), the first row of G and yi=((x,ri)(x,ri)(x,ri)ri), the i+1st row of G, for i=1,2,…,m.
(i) If (x,x)=1 and α,β,γ∈E3∖J3, then
(y0,y0)=α2+β2+γ2(x,x)=α2+β2+γ2=0,(y0,yi)=α(x,ri)+β(x,ri)+γ(x,ri)=(α+β+γ)(x,ri)=0,(yi,yj)=3(x,ri)(x,rj)+(ri,rj)=0, |
for all i,j=1,2,…,m.
(ii) If (x,x)=−1 and (α≠0, β=0, γ=2α), then
(y0,y0)=α2+(2α)2(x,x)=α2−α2=0,(y0,yi)=α(x,ri)+2α(x,ri)=3α(x,ri)=0,(yi,yj)=3(x,ri)(x,rj)+(ri,rj)=0, |
for all i,j=1,2,…,m.
In both cases, we see that C is a self-orthogonal code.
Example 1. We construct self-orthogonal codes of length 6 derived from length 3. By Theorem 2, we have the self-orthogonal (3,32,3) code with generator matrix G0 given by
G0=(abh). |
Using Theorem 5 from G0, we get three non-equivalent monomial SO (6,34,3) codes, with generator matrices:
(a00ae0fffabh), (aa0a00aaaabh), and (ab0h00aaaabh). |
Their Hamming weight enumerators are
W1(x,y)=x6+14x3y3+12x2y4+18xy5+36y6,W2(x,y)=x6+16x3y3+64y6, |
and
W3(x,y)=x6+10x3y3+18xy5+52y6, |
respectively.
Remark 1. The build-up construction method given in Theorem 5, cannot be also used for self-dual codes as the cardinality of the code C is not 3n+3.
Remark 2. If any two self-orthogonal E3-codes are monomially equivalent, then their residue and torsion codes are also monomially equivalent, but the converse is not necessarily true. For example, when n=3 and type {1,0}, the codes C1 and C2 with generator matrices (aaa) and (abh), respectively. They have the same residue and torsion codes, but are not monomially equivalent.
We will provide a construction approach for one-sided self-dual codes over E3 in this subsection. Initially, this structure was provided for left self-dual codes with two extra generators and a length increase of four. We only need to take into consideration the situation in which the length n is a multiple of 4, as a result of Corollary 7.
Theorem 6. Let C0 be a left self-dual code over E3 of length n with generator matrix G0=(ri) where ri is the ith row of G0, for i=1,2,…,m. Let x1,x2∈Fn3 such that (x1,x2)=0, and (xi,xi)=2 for i=1,2. For 1≤i≤m, define ui=(x1,ri) and vi=(x2,ri). If α∈E3∖J3, then the code C with the following generator matrix
G=(α0002αx10α002αx2u1v1u1+v12u1+v1r1⋮⋮⋮⋮⋮umvmum+vm2um+vmrm) |
is a left self-dual code of length n+4.
Proof. Let y0=(α0002αx1) and y′0=(0α002αx2). Then
(y0,y0)=α2+(2α)2(x1,x1)=0,(y′0,y′0)=α2+(2α)2(x2,x2)=0,(y0,y′0)=α(x1,x2)=0. |
Now, for 1≤i≤m, let yi=(uiviui+vi2ui+viri). So, for 1≤j≤m,
(yi,yj)=uiuj+vivj+(ui+vi)(uj+vj)+(2ui+vi)(2uj+vj)+(ri,rj)=0. |
Thus, C is self-orthogonal and since |C|=92|C0|=3n+4, C is left self-dual.
Define ^C0 to be the span of the last m rows of G, and for every y∈E3 write
Ty=(y,0,0,0,2yx1), and Uy=(0,y,0,0,2yx2). |
The construction in Theorem 6 maybe demonstrated to be equivalent to
C=˙∪t,u∈E3∖S(Tt+Uu+^C0). |
Example 2. We construct a left self-dual code of length 8 derived from length 4. By Theorem 3, we have the left self-duall (4,34,3) code with generator matrix G1 given by
G1=(a0aa0aae). |
Using Theorem 6 from G1 with α=a, we get only one non-equivalent monomial left self-dual (8,38,3) code with generator matrix
G1,1=(a000ee000a00ea00aae0a0aaae0e0aae). |
Its Hamming weight enumerator is
W1,1(x,y)=x8+64x5y3+96x4y4+1024x2y6+3072xy7+2304y8. |
Repeating this process using G1,1 with x1=(1,1,0,0,0,0,0,0), we get only three non-equivalent monomial left self-dual (12,312,3) codes with generator matrices
G1,1,1=(a000ee0000000a00000ea000aae0a000ee00aae00a00ea00eea0aae0a0aa0eeaae0e0aae), |
G1,1,2=(a000ee0000000a00aeaaa000a0aaa000ee00ae0e0a00ea00e0eeaae0a0aa0000ae0e0aae), |
and
G1,1,3=(a000ee0000000a00000eeeeeaae0a000ee00a0aa0a00ea00e0eeaae0a0aa0000ae0e0aae). |
Their Hamming weight enumerators are
W1,1,1(x,y)=x12+96x9y3+144x8y4+3072x6y6+9216x5y7+6912x4y8+32768x3y9+147456x2y10+221184xy11+110592y12,W1,1,2(x,y)=x12+24x9y3+8x8y4+176x7y5+1112x6y6+4376x5y7+15272x4y8+47776x3y9+132776x2y10+208544xy11+121376y12, |
and
W1,1,3(x,y)=x12+32x9y3+1248x6y6+5184x5y7+14256x4y8+46976x3y9+134784x2y10 |
+207360xy11+121600y12, |
respectively.
Corollary 10. The minimum Hamming weight of left self-dual codes over E3 of length n is a multiple of 3.
Proof. Following Corollary 9, the minimum distance d(C) of a left self-dual code C is equal to d(res(C)). Thus, by [11, Lemma 1], self-dual codes over F3 of length n exist only if n is a multiple of 4 and a minimum weight is a multiple of 3.
In the following theorem, we will now describe the general approach that we will utilize in finding construction methods for right self-dual codes over E3.
Theorem 7. Let C0 be a right self-dual code of length n over E3, with generator matrix G0=(ri), where ri is the i-th row of G0, for 1≤i≤m. Then the code C with the following generator matrix
G=(fIh0 ... 00⋮G00) |
is a a right self-dual code of length n+h.
Proof. We can show that G generates a self-orthogonal code C in a similar way as given in Theorem 6.
Now, according to |C|=3h|C0|=3n+h, C is self-dual.
Corollary 11. Every one-sided self-dual code is also self-dual.
Proof. Let C be a left self-dual in order to demonstrate that every left self-dual is self-dual. res(C)=res(C)⊥ and tor(C)=res(C)⊥ are the results of Theorem 3. Hence, C is a self-dual code according to Theorem 4.
To prove that every right self-dual is self-dual, let C be right self-dual. Also, by use Theorem 3, we see that C=a{0}+fFn3. Observe that tor(C)=res(C)⊥. Then, by Theorem 4, C is a self-dual code.
Example 3. The linear code of length 4 with the two generators
G2=(a0aa0aae) |
is a self-dual and left self-dual, but not right self-dual.
Example 4. The linear code of length 3 defined by
C={000,f00,0f0,00f,g00,0g0,00g,ff0,f0f,0ff,gg0,g0g,0gg,gfg,ggf,fgg,ffg,fgf,gff,fg0,0gf,f0g,gf0,0gf,g0f,fff,ggg} |
is a self-dual and right self-dual code, but not left self-dual.
Remark 3. We note that a similar construction method in Theorems 6 and 7 can be applied to self-dual codes over E3.
The following result constructs a self-dual code of length n+3 from a self-dual code of length n.
Theorem 8. Let C0 be a self-dual code over E3 of length n with generator matrix G0=(ri) where ri is the ith row of G0, for i=1,2,…,m. Let x∈Fn3 and α,β,γ∈E3, such that α+β+γ=0. Let σ∈J3, non-zero element. Then the code C with the following generator matrix
G=(αβ0γx0σ02σx(x,r1)(x,r1)(x,r1)r1⋮⋮⋮⋮(x,rm)(x,rm)(x,rm)rm) |
is a self-dual code of length n+3 if:
(1) (x,x)=1, and (α,β,γ∈E3∖J3); or
(2) (x,x)=−1, and (α=0, β∈E3∖J3, γ=2β).
Proof. We first show that C is self-orthogonal. Let y0=(αβ0γx), the first row of G, and y′0=(0σ02σx), the second row of G. For 1≤i≤m, let yi=((x,ri)(x,ri)(x,ri)ri). Then,
(i) If (x,x)=1 and (α,β,γ∈E3∖J3), then
(y0,y0)=α2+β2+γ2(x,x)=(α2+β2+γ2)=0,(y′0,y′0)=σ2+(2σ)2(x,x)=0,(y0,y′0)=βσ+γ(2σ)(x,x)=0,(y′0,y0)=σβ+2σγ(x,x)=σ+2σ=0,(y0,yi)=α(x,ri)+β(x,ri)+γ(x,ri)=(α+β+γ)=0,(y′0,yi)=(σ+2σ)(x,ri)=0,(yi,yj)=3(x,ri)(x,rj)+(ri,rj)=0, |
for all i,j=1,2,…,m.
(ii) If (x,x)=−1 and (α=0, β∈E3∖J3, γ=2β), then
(y0,y0)=β2+(2β)2(x,x)=β2−β2=0,(y′0,y0)=σβ+(2σ)(2β)(x,x)=σβ−σβ=0,(y0,yi)=β(x,ri)+2β(x,ri)=3β(x,ri)=0,(yi,yj)=3(x,ri)(x,rj)+(ri,rj)=0, |
for all i,j=1,2,…,m.
In both cases, we see that C is a self-orthogonal code. Since |C|=9131|C0|=3n+3, C is a self-dual code of length n+3.
Example 5. We construct self-dual codes of length 7 derived from length 4. By Theorem 4, we have the self-dual (4,34,1) code with generator matrix G3=(a0aa0f0000fg).
Using Theorem 8 from G3, we get five non-equivalent monomial self-dual codes with generator matrices:
(aa00a000f00g00000a0aafff0f0000000fg), (aa0aeea0f0gffgaaaa0aaggg0f00fff00fg), (0a0ee000g0ff00aaaa0aafff0f0000000fg), |
(0a0e0e00g0f0f0eeea0aa0000f00fff00fg),and (0a000ea0g000fg000a0aa0000f00ggg00fg). |
Their Hamming weight enumerators are
W1(x,y)=x7+2x6y+12x5y2+64x4y3+116x3y4+312x2y5+880xy6+800y7,W2(x,y)=x7+12x5y2+40x4y3+90x3y4+240x2y5+724xy6+1080y7,W3(x,y)=x7+2x5y2+24x4y3+38x3y4+52x2y5+236xy6+376y7,W4(x,y)=x7+2x6y+6x5y2+40x4y3+56x3y4+48x2y5+256xy6+320y7, |
and
W5(x,y)=x7+2x6y+34x4y3+122x3y4+162x2y5+208xy6+200y7, |
respectively.
Theorem 9. Two self-dual E3-codes are monomially equivalent if and only if their residue codes are also equivalent.
Proof. Let C1 and C2 be two monomially equivalent codes over E3, then their residue codes are also equivalent as a res(C1)⊆C1 and a res(C2)⊆C2.
Conversely, Let C1 and C2 be two self-dual E3-codes, and res(C1) and res(C2) monomially equivalent codes. Then, there is a monomial matrix M sends a code res(C1) into the equivalent code such that
res(C2)=res(C1)M={uM:u∈res(C1)}. |
The set of all monomials such that res(C2)=res(C1) forms the automorphism group G(res(C1)) of the code res(C1), and as res(C2)⊥=res(C1)⊥M.
Thus, from Theorem 4, we have
C2=a res(C2)+f res(C2)⊥=a res(C1)M+f res(C1)⊥M=C1M. | (3.1) |
By Eq (3.1), we have C2=C1M, proving that C1 and C2 are monomially equivalent.
Remark 4. Every one-sided self-dual code is also a self-dual code, but not conversely as the next example shows.
Example 6. The linear code with the three generators G=(a0aa0f0000fg), is a self-dual code, but neither left- nor right-self-dual.
In this section, we use the multilevel constructs in Theorems 2–4 to categorize self-orthogonal, (one-sided) self-dual, and self-dual E3-codes of length n<8 with residue dimension k1=0,1,2. All the computer calculations in this section were performed in Magma [8].
There is one right self-dual code over E3 of type {0,1}, with generator matrix in Table 2.
Generator matrix | |Aut(C)| | Weight distribution |
(f) | 2 | [1,2] |
There is one right self-dual code over E3 of type {0,2}, with generator matrix in Table 3.
Generator matrix | |Aut(C)| | Weight distribution |
(f00f) | 8 | [1,4,4] |
For type {0,2}, there are three distinct self-orthogonal codes over E3, with generator matrices in Table 4.
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(f000ff) | 8 | [1,2,2,4] | (f0f0ff) | 12 | [1,0,6,2] |
(f000ff) | 16 | [1,4,4,0] |
For type {0,3}, there is one right self-dual code over E3, with generator matrix in Table 5.
Generator matrix | |Aut(C)| | Weight distribution |
(f000f000f) | 48 | [1,6,12,8] |
For type {1,0}, there are two distinct self-orthogonal codes over E3, with generator matrices in Table 6.
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(aaa) | 12 | [1,0,0,8] | (abh) | 6 | [1,0,0,8] |
For type {1,1}, there is one distinct self-dual code over E3, with generator matrix in Table 7.
Generator matrix | |Aut(C)| | Weight distribution |
(aaa0gf ) | 12 | [1,0,6,20] |
For type {0,4}, there is one right self-dual code over E3, with generator matrix in Table 8.
Generator matrix | |Aut(C)| | Weight distribution |
(f0000f0000f0000f) | 96 | [1,8,24,32,16] |
For type {1,0}, there are four distinct self-orthogonal codes over E3, with generator matrices in Table 9.
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(a0aa) | 24 | [1,0,0,8,0] | (a0bh) | 12 | [1,0,0,8,0] |
(afaa) | 12 | [1,0,0,2,6] | (afbh) | 6 | [1,0,0,2,6] |
For type {1,1}, there are six distinct self-orthogonal codes over E3, with generator matrices in Table 10.
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(a0aa0f00) | 24 | [1,2,0,8,16] | (a0bh0f00) | 12 | [1,2,0,8,16] |
(a0aa0ffg) | 12 | [1,0,0,14,12] | (a0bh0ffg) | 6 | [1,0,0,14,12] |
(a0aa00fg) | 24 | [1,0,6,20,0] | (afaaf00g) | 12 | [1,0,6,2,18] |
For type {1,2}, there is only one distinct self-dual codes over E3, with generator matrix in Table 11.
Generator matrix | |Aut(C)| | Weight distribution |
(a0aa0b0000bd) | 24 | [1,2,6,32,40] |
For type {2,0}, there is only one left self-dual code over E3, with generator matrix in Table 12.
Generator matrix | |Aut(C)| | Weight distribution |
(a0aa0aae) | 48 | [1,0,0,32,48] |
For type {0,5}, there is one right self-dual code over E3, with generator matrix in Table 13.
Generator matrix | |Aut(C)| | Weight distribution |
(f00000f00000f00000f00000f) | 3840 | [1,10,40,80,80,32] |
For type {1,0}, there are six distinct self-orthogonal codes, with generator matrices in Table 14.
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(a00aa) | 96 | [1,0,0,8,0,0] | (a00bh) | 48 | [1,0,0,8,0,0] |
(af0aa) | 24 | [1,0,0,2,6,0] | (af0bh) | 12 | [1,0,0,2,6,0] |
(affaa) | 24 | [1,0,0,2,0,6] | (affbh) | 12 | [1,0,0,2,0,6] |
For type {1,2}, there are ten distinct self-orthogonal codes, with generator matrices in Table 15.
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(a00aa0f00000f00) | 96 | [1,4,4,8,32,32] | (a00bh0f00000f00) | 48 | [1,4,4,8,32,32] |
(a00aa0ff00000fg) | 48 | [1,0,8,20,12,40] | (a00aa0f00000ffg) | 24 | [1,2,0,14,40,24] |
(a00bh0ff00000fg) | 12 | [1,2,0,14,40,24] | (a00aa0ff0000ffg) | 24 | [1,0,2,20,30,28] |
(a00bh0ff0000ffg) | 12 | [1,0,2,20,30,28] | (a00aa00f00000fg) | 48 | [1,2,6,32,40,0] |
(affaa00f00000gf) | 24 | [1,2,6,14,22,36] | (afgaag000ff000g) | 24 | [1,0,6,2,18,0] |
For type {1,3}, there is only one distinct self-dual codes over E3, with generator matrix in Table 16.
Generator matrix | |Aut(C)| | Weight distribution |
(a00aa0f00000f00000fg) | 96 | [1,4,10,44,104,80] |
For type {0,6}, there is one right self-dual code over E3, with generator matrix in Table 17.
Generator matrix | |Aut(C)| | Weight distribution |
(f000000f000000f000000f000000f000000f) | 46080 | [1,6,12,16,48,96,64] |
For type {1,3}, there are 13 distinct self-orthogonal codes, with generator matrices in Table 18.
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(aa000a00f000000f000000f0) | 576 | [1,6,12,16,48,96,64] | (ab000h00f000000f000000f0) | 288 | [1,6,12,16,48,96,64] |
(aa000af0f00g000f000000f0) | 96 | [1,4,4,14,68,104,48] | (ab000hf0f00g000f000000f0) | 48 | [1,4,4,14,68,104,48] |
(aa000af0000g000f000000f0) | 192 | [1,4,10,44,104,80,0] | (aa000af0f00gf00f0gf000fg) | 72 | [1,0,6,28,54,102,52] |
(ab000hf0f00gf00f0gf000fg) | 36 | [1,0,6,28,54,102,52] | (aaaaaaf00g00f00g00f00g00) | 96 | [1,0,2,0,0,4,20] |
(abhabhf00g00f00g00f00g00) | 16 | [1,0,2,0,0,4,20] | (aaaaaaff0gg0ff0gg0ff0gg0) | 96 | [1,0,0,0,6,0,20] |
(abhabhff0gg0ff0gg0ff0gg0) | 8 | [1,0,0,0,6,0,20] | (aaaaaagf0000g0f000g00f00) | 96 | [1,0,12,16,18,24,172] |
(abhabhgf0000g0f000g00f00) | 48 | [1,0,12,16,18,24,172] |
For type {1,4}, there are two distinct self-dual codes over E3, with generator matrices in Table 19.
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(aa000a0f000g00f000000f000000f0) | 576 | [1,6,18,64,192,288,160] | (aaaaaa0f000g00f00g000f0g0000fg) | 1440 | [1,0,30,40,90,60,508] |
For type {0,7}, there is one right self-dual code over E3, with generator matrix in Table 20.
Generator matrix | |Aut(C)| | Weight distribution |
(f0000000f0000000f0000000f0000000f0000000f0000000f) | 604800 | [1,14,84,280,560,672,448,128] |
For type {1,5}, there are two distinct self-dual codes over E3, with generator matrices in Table 21.
Generator matrix | |Aut(C)| | Weight distribution |
(aa0aaaa0f0000g00f0000000f00g0000f0g00000fg) | 2880 | [1,2,30,100,170,240,628,1016] |
(aa0000a0f0000g00f0000000f0000000f0000000f0) | 4608 | [1,8,30,100,320,672,736,320] |
According to the mass formula in subsection 2.5, we enumerate all equivalent codes obtained under the action of the monomial group, and illustrate how the mass formula can be used in the classification of E3-codes, that is, we find representatives for the equivalence classes of E3-codes for each length and type. The following examples illustrate our results.
Example 7. Let C be the set of self-orthogonal codes over E3 of length 3 and type {1,0} given by the following generator matrices:
((aaa),(abh)). |
The codes in C are inequivalent and they have an automorphism group of order 12 and 6 respectively. Therefore, from Corollary 1,
2∑11|Aut(C)|=112+16=14=NSO(n,k1,k2)2nn!=4×3×16×8=14. |
It demonstrates that, up to monomial equivalency, there exist precisely two self-orthogonal codes.
Example 8. Let C be the set of left self-dual codes over E3 of length 4 and type {2,0} given by the following generator matrix: (a0aa0aae).
The code in C has an automorphism group of order 48. Therefore, by Corollary 4,
1∑11|Aut(C)|=148=φn,n22nn!=8×1×124×16=148. |
It demonstrates that, up to monomial equivalency, there exist only one left self-dual code.
Example 9. Let C be the set of self-dual codes over E3 of length 7 and type {1,5} given by the following generator matrices:
((aa0000a0f0000g00f0000000f0000000f0000000f0),(aa0aaaa0f0000g00f0000000f00g0000f0g00000fg)). |
The codes in C are inequivalent and they have an automorphism group of order 4608 and 2880 respectively. Therefore, from Corollary 2, we have
2∑11|Aut(C)|=14608+12880=0.000564=φn,k1277!=364128×5040=0.000564, |
which shows that there are exactly two self-dual codes, up to monomial equivalence.
Next, we use our build-up construction methods mentioned in Sections 3.1–3.3 to obtain SO, RSD, LSD, and SD codes over E3. It is possible to discover several self-dual codes of suitable lengths in a fairly effective manner, as demonstrated by our computation. The partial classification results are summarized in Table 22 below.
n | Code | Construction | Length of constructed code | x | d(C) | Weight distribution |
1 | (f) | Theorem 5 | 4 | (1) | 1 | [1,2,0,8,16] |
Theorem 7 | 5 | (0) | 1 | [1,10,40,80,80,32] | ||
2 | (f00f) | Theorem 5 | 5 | (10) | 1 | [1,4,4,8,32,32] |
5 | (11) | 2 | [1,0,8,20,12,40] | |||
Theorem 7 | 6 | (00) | 1 | [1,6,12,16,48,96,64] | ||
3 | (f000f000f) | Theorem 5 | 6 | (001) | 1 | [1,12,60,160,240,192,64] |
Theorem 7 | 7 | (000) | 1 | [1,14,84,280,560,672,448,128] | ||
(aaa0fg) | Theorem 5 | 6 | (020) | 2 | [1,0,2,20,30,28,162] | |
(002) | 3 | [1,0,0,16,0,0,64] | ||||
(111) | 2 | [1,0,14,20,48,160,0] | ||||
(221) | 2 | [1,0,10,0,24,68,140] | ||||
(110) | 2 | [1,0,6,28,0,48,160] | ||||
(210) | 2 | [1,0,2,32,48,64,96] | ||||
Theorem 6 | 7 | (110)(120) | 2 | [1,0,6,52,48,192,928,960] | ||
Theorem 7 | 6 | (000) | 1 | [1,6,18,64,192,288,160] | ||
Theorem 8 | 6 | (100) | 2 | [1,0,12,40,36,240,400] | ||
(110) | 1 | [1,6,12,64,30,150,466] | ||||
4 | (f0000f0000f0000f) | Theorem 5 | 7 | (0100) | 2 | [1,8,24,40,80,192,256,128] |
(1111) | 1 | [1,2,12,40,50,60,220,344] | ||||
(1100) | 1 | [1,4,12,52,124,168,208,160] | ||||
Theorem 7 | 7 | (0000) | 1 | [1,14,84,280,560,672,448,128] | ||
(a0aa0f0000fg) | Theorem 5 | 7 | (1000) | 1 | [1,2,6,40,56,48,256,320] | |
(2211) | 2 | [1,0,2,16,34,76,232,368] | ||||
(1212) | 2 | [1,0,2,24,38,52,236,376] | ||||
(1010) | 1 | [1,2,6,40,56,48,256,320] | ||||
Theorem 6 | 8 | (1100),(1200) | 1 | [1,2,6,64,152,288,1312,2816,1920] | ||
(1010),(0102) | 2 | [1,0,10,40,192,412,1084,2850,1972] | ||||
(2001),(0110) | 2 | [1,0,2,40,78,164,1012,2784,2480] | ||||
4 | (a0aa0f0000fg) | Theorem 3.7 | 7 | (1000) | 1 | [1,2,12,64,116,312,880,800] |
(1221) | 2 | [1,0,12,40,90,240,724,1080] | ||||
(1010) | 1 | [1,2,6,40,56,48,256,320] | ||||
(1100) | 2 | [1,0,2,24,38,52,236,376] | ||||
(a0aa0aae) | Theorem 5 | 7 | (1100) | 3 | [1,0,0,40,48,0,256,384] | |
(1212) | 3 | [1,0,0,16,24,72,280,336] | ||||
Theorem 3.7 | 7 | (0001) | 1 | [1,6,12,40,240,672,832,384] | ||
(1111) | 2 | [1,0,6,52,48,192,928,960] | ||||
Theorem 3.5 | 8 | (1100),(0011) | 3 | [1,0,0,34,96,0,1024,3072,2304] | ||
5 | (f00000f00000f00000f00000f) | Theorem 3.4 | 8 | (10000) | 1 | [1,10,40,88,160,352,640,640,256] |
(11110) | 1 | [1,4,16,64,130,160,340,784,688] | ||||
Theorem 3.6 | 8 | (00000) | 1 | [1,16,112,448,1120,1792,1792,1024,256] | ||
(a00aa0f00000f00000fg) | Theorem 3.4 | 8 | (11110) | 2 | [1,0,6,16,60,36,388,696,984] | |
(10000) | 1 | [1,4,10,52,136,160,352,832,640] | ||||
(22000) | 1 | [1,2,2,28,86,128,340,848,752] | ||||
(00011) | 1 | [1,4,10,52,136,160,352,832,640] | ||||
Theorem 3.5 | 9 | (01100),(01200) | 1 | [1,4,10,76,280,592,1888,5440,7552,3840] | ||
(01100),(00011) | 2 | [1,0,18,60,108,720,1416,2160,7200,8000] | ||||
5 | (a00aa0f00000f00000fg) | Theorem 3.5 | 9 | (11112),(10001) | 1 | [1,2,2,44,158,320,1340,4808,8048,4960] |
Theorem 3.7 | 8 | (11110) | 2 | [1,0,8,64,120,176,880,2688,2624] | ||
(10000) | 1 | [1,4,16,88,244,544,1504,2560,1600] | ||||
(00011) | 1 | [1,4,10,44,116,176,396,816,624] | ||||
(11111) | 2 | [1,0,14,40,60,320,472,480,800] | ||||
(00021) | 1 | [1,4,6,40,148,384,544,640,384] | ||||
6 | (f000000f000000f000000f000000f000000f) | Theorem 3.4 | 9 | (100000) | 1 | [1,12,60,168,336,672,1344,1920,1536,512] |
(111100) | 1 | [1,6,24,96,258,420,660,1464,2256,1376] | ||||
(110000) | 1 | [1,8,32,116,380,872,1376,1664,1472,640] | ||||
Theorem 3.6 | 9 | (000000) | 1 | [1,18,144,672,2016,4032,5376,4608,2304,512] | ||
(aa000a0f000g00f000000f000000f0) | Theorem 3.4 | 9 | (111100) | 1 | [1,2,6,28,92,156,460,1472,2376,1968] | |
(100000) | 1 | [1,6,14,32,120,368,908,1800,2192,1120] | ||||
(001111) | 2 | [1,0,10,30,90,136,276,1296,1888,2834] | ||||
(000022) | 1 | [1,4,6,30,136,324,654,1462,2352,1592] | ||||
6 | (aa000a0f000g00f000000f000000f0) | Theorem 3.4 | 9 | (111011) | 1 | [1,2,14,68,140,440,1112,1424,1760,1600] |
(110000) | 1 | [1,6,18,72,240,432,672,1536,2304,1280] | ||||
Theorem 3.5 | 10 | (110000),(120000) | 1 | [1,6,18,96,432,1152,3072,9216,18432,18944,7680] | ||
(110000),(001100) | 1 | [1,2,18,96,228,936,2856,4992,11520,22400,16000] | ||||
(111110),(211110) | 2 | [1,0,12,36,138,516,1464,4584,10650,20936,20712] | ||||
(110000),(211110) | 2 | [1,0,18,60,162,720,2064,4320,9144,20960,21600] | ||||
Theorem 3.6 | 9 | (000000) | 1 | [1,12,66,252,840,2352,4704,5952,4224,1280] | ||
Theorem 3.7 | 9 | (111100) | 1 | [1,2,8,80,248,416,1232,4448,8000,5248] | ||
(100000) | 1 | [1,6,20,88,336,992,2752,5760,6656,3072] | ||||
(111011) | 1 | [1,2,14,68,140,440,1112,1424,1760,1600] | ||||
(110000) | 1 | [1,6,18,72,240,432,672,1536,2304,1280] | ||||
(111101) | 1 | [1,2,12,70,134,402 1192,1484,1584,1680] | ||||
(aaaaaa0f000g00f00g000f0g0000fg) | Theorem 3.4 | 9 | (001212) | 1 | [1,2,6,28,92,156,460,1472,2376,1968] | |
6 | (aaaaaa0f000g00f00g000f0g0000fg) | Theorem 3.4 | 9 | (100000) | 2 | [1,0,20,38,60,320,410,1218,938,3556] |
(111100) | 2 | [1,0,18,36,90,360,600,504,1512,3440] | ||||
(210000) | 2 | [1,0,14,40,114,320,904,1560,1448,2160] | ||||
Theorem 3.5 | 10 | (111110),(121110) | 2 | [1,0,18,60,162,720,2064,4320,9144,20960,21600] | ||
(110000),(001100) | 1 | [1,2,18,96,228,936,2856,4992,11520,22400,16000] | ||||
(210111),(000021) | 1 | [1,4,6,48,246,636,1980,7488,17664,21056,9920] | ||||
(110000),(120000) | 2 | [1,0,30,72,138,1020,3228,4800,6240,19136,24384] | ||||
(110000),(000011) | 2 | [1,0,12,54,156,678,2184,4440,8868,21008,21648] | ||||
Theorem 3.6 | 9 | (000000) | 1 | [1,6,42,228,690,1320,2268,4488,6576,4064] | ||
Theorem 3.7 | 9 | (100000) | 2 | [1,0,26,70,240,980,1330,2622,4718,9696] | ||
(111100) | 2 | [1,0,36,60,270,900,1848,2160,4248,10160] | ||||
(002121) | 1 | [1,2,8,80,248,416,1232,4448,8000,5248] | ||||
(002121) | 2 | [1,0,14,40,114,320,904,1560,1448,2160] |
In this study, we have derived and used propagation rules over a certain non-unital ring of order 9 to generate self-orthogonal, one-sided self-dual and self-dual codes. Combining this generating technique with mass formulas we have classified these three classes of codes in length at most 7 up to monomial equivalence. It is an open problem to know if, alike what happens in [4], all codes in the three families can be generated by this technique up to some mild type condition.
In order to expand the classification results to longer lengths, more processing power or more efficient automorphism algorithms may be required due to the combinatorial explosion of codes in the three families.
The authors declare they have not used Artificial Intelligence (AI) tools in the creation of this article.
This research work was funded by Institutional Fund Projects under grant No. (IFPRC-105-130-2020). Therefore, authors gratefully acknowledge technical and financial support from the Ministry of Education and King Abdulaziz University, Jeddah, Saudi Arabia.
All authors declare no conflicts of interest in this paper.
[1] |
A. Alahmadi, A. Altassan, H. Shoaib, A. Alkathiry, A. Bonnecaze, P. Solˊe, The build-up construction of quasi self-dual codes over a non-unital ring, J. Algebra Appl., 21 (2022), 2250143. https://doi.org/10.1142/S0219498822501432 doi: 10.1142/S0219498822501432
![]() |
[2] |
A. Alahmadi, A. Melaibari, P. Solˊe, Duality of codes over non-unital rings of order four, IEEE Access, 11 (2023), 53120–53133. https://doi.org/10.1109/ACCESS.2023.3261131 doi: 10.1109/ACCESS.2023.3261131
![]() |
[3] |
A. Alahmadi, A. Altassan, W. Basaffar, H. Shoaib, A. Bonnecaze P. Solˊe, Type IV codes over a non-unital ring, J. Algebra Appl., 21 (2022), 2250142. https://doi.org/10.1142/S0219498822501420 doi: 10.1142/S0219498822501420
![]() |
[4] |
A. Alahmadi, A. Alshuhail, R. A. Betty, L. Galvez, P. Solˊe, Mass formula for self-orthogonal and self-dual codes over non-unital rings of order four, Mathematics, 11 (2023), 4736. https://doi.org/10.3390/math11234736 doi: 10.3390/math11234736
![]() |
[5] |
A. Alahmadi, T. Alihia, R. A. Betty, L. Galvez, P. Solˊe, The build-up construction for codes over a commutative non-unitary ring of order 9, Mathematics, 12 (2024), 860. https://doi.org/10.3390/math12060860 doi: 10.3390/math12060860
![]() |
[6] |
C. Aguilar-Melchor, P. Gaborit, J. Kim, L. Sok, P. Solˊe, Classification of extremal and s-extremal binary self-dual codes of length 38, IEEE Trans. Inform. Theory, 58 (2012), 2253–2262. https://doi.org/10.1109/TIT.2011.2177809 doi: 10.1109/TIT.2011.2177809
![]() |
[7] |
J. M. P. Balmaceda, R. A. L. Betty, F. R. Nemenzo, Mass formula for self-dual codes over Zp2, Discrete Math., 308 (2008), 2984–3002. https://doi.org/10.1016/j.disc.2007.08.024 doi: 10.1016/j.disc.2007.08.024
![]() |
[8] |
W. Bosma, J. Cannon, C. Playoust, The Magma algebra system. Ⅰ. The user language, J. Symb. Comput., 24 (1997), 235–265. https://doi.org/10.1006/jsco.1996.0125 doi: 10.1006/jsco.1996.0125
![]() |
[9] |
B. Fine, Classification of finite rings of order p2, Math. Magazine, 66 (1993), 248–252. https://doi.org/10.1080/0025570X.1993.11996133 doi: 10.1080/0025570X.1993.11996133
![]() |
[10] | S. Han, H. Lee, Y. Lee, Construction of self-dual codes over F2+uF2, Bull. Korean Math. Soc., 49 (2012), 135–143. |
[11] |
M. Harada, M. Kitazume, M. Ozeki, Ternary code construction of unimodular lattices and self-dual codes over Z6, J. Algebraic Comb., 16 (2002), 209–223. https://doi.org/10.1023/A:1021185314365 doi: 10.1023/A:1021185314365
![]() |
[12] | W. C. Hufman, V. Pless, Fundamentals of error-correcting codes, Cambridge: Cambridge University Press, 2003. https://doi.org/10.1017/CBO9780511807077 |
[13] |
J. L. Kim, Y. Lee, Euclidean and Hermitian self-dual MDS codes over large finite fields, J. Comb. Theory, Ser. A, 105 (2004), 79–95. https://doi.org/10.1016/j.jcta.2003.10.003 doi: 10.1016/j.jcta.2003.10.003
![]() |
[14] | J. L. Kim, Y. Lee, An efficient construction of self-dual codes, Bull. Korean Math Soc., 52 (2015), 915–923. |
[15] |
K. H. Kim, Y. H. Park, The mass formula of self-orthogonal codes over GF(q), Korean J. Math., 25 (2017), 201–209. https://doi.org/10.11568/kjm.2017.25.2.201 doi: 10.11568/kjm.2017.25.2.201
![]() |
[16] | C. Mallows, V. Pless, N. J. Sloane, Self-dual codes over GF(3), SIAM J. Appl. Math., 31 (1976), 649–666. |
[17] | F. J. MacWilliams, N. J. A. Sloane, The theory of error-correcting codes, North-Holland Mathematical Library, Elsevier, 1977. |
![]() |
Generator matrix | |Aut(C)| | Weight distribution |
(f) | 2 | [1,2] |
Generator matrix | |Aut(C)| | Weight distribution |
(f00f) | 8 | [1,4,4] |
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(f000ff) | 8 | [1,2,2,4] | (f0f0ff) | 12 | [1,0,6,2] |
(f000ff) | 16 | [1,4,4,0] |
Generator matrix | |Aut(C)| | Weight distribution |
(f000f000f) | 48 | [1,6,12,8] |
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(aaa) | 12 | [1,0,0,8] | (abh) | 6 | [1,0,0,8] |
Generator matrix | |Aut(C)| | Weight distribution |
(aaa0gf ) | 12 | [1,0,6,20] |
Generator matrix | |Aut(C)| | Weight distribution |
(f0000f0000f0000f) | 96 | [1,8,24,32,16] |
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(a0aa) | 24 | [1,0,0,8,0] | (a0bh) | 12 | [1,0,0,8,0] |
(afaa) | 12 | [1,0,0,2,6] | (afbh) | 6 | [1,0,0,2,6] |
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(a0aa0f00) | 24 | [1,2,0,8,16] | (a0bh0f00) | 12 | [1,2,0,8,16] |
(a0aa0ffg) | 12 | [1,0,0,14,12] | (a0bh0ffg) | 6 | [1,0,0,14,12] |
(a0aa00fg) | 24 | [1,0,6,20,0] | (afaaf00g) | 12 | [1,0,6,2,18] |
Generator matrix | |Aut(C)| | Weight distribution |
(a0aa0b0000bd) | 24 | [1,2,6,32,40] |
Generator matrix | |Aut(C)| | Weight distribution |
(a0aa0aae) | 48 | [1,0,0,32,48] |
Generator matrix | |Aut(C)| | Weight distribution |
(f00000f00000f00000f00000f) | 3840 | [1,10,40,80,80,32] |
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(a00aa) | 96 | [1,0,0,8,0,0] | (a00bh) | 48 | [1,0,0,8,0,0] |
(af0aa) | 24 | [1,0,0,2,6,0] | (af0bh) | 12 | [1,0,0,2,6,0] |
(affaa) | 24 | [1,0,0,2,0,6] | (affbh) | 12 | [1,0,0,2,0,6] |
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(a00aa0f00000f00) | 96 | [1,4,4,8,32,32] | (a00bh0f00000f00) | 48 | [1,4,4,8,32,32] |
(a00aa0ff00000fg) | 48 | [1,0,8,20,12,40] | (a00aa0f00000ffg) | 24 | [1,2,0,14,40,24] |
(a00bh0ff00000fg) | 12 | [1,2,0,14,40,24] | (a00aa0ff0000ffg) | 24 | [1,0,2,20,30,28] |
(a00bh0ff0000ffg) | 12 | [1,0,2,20,30,28] | (a00aa00f00000fg) | 48 | [1,2,6,32,40,0] |
(affaa00f00000gf) | 24 | [1,2,6,14,22,36] | (afgaag000ff000g) | 24 | [1,0,6,2,18,0] |
Generator matrix | |Aut(C)| | Weight distribution |
(a00aa0f00000f00000fg) | 96 | [1,4,10,44,104,80] |
Generator matrix | |Aut(C)| | Weight distribution |
(f000000f000000f000000f000000f000000f) | 46080 | [1,6,12,16,48,96,64] |
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(aa000a00f000000f000000f0) | 576 | [1,6,12,16,48,96,64] | (ab000h00f000000f000000f0) | 288 | [1,6,12,16,48,96,64] |
(aa000af0f00g000f000000f0) | 96 | [1,4,4,14,68,104,48] | (ab000hf0f00g000f000000f0) | 48 | [1,4,4,14,68,104,48] |
(aa000af0000g000f000000f0) | 192 | [1,4,10,44,104,80,0] | (aa000af0f00gf00f0gf000fg) | 72 | [1,0,6,28,54,102,52] |
(ab000hf0f00gf00f0gf000fg) | 36 | [1,0,6,28,54,102,52] | (aaaaaaf00g00f00g00f00g00) | 96 | [1,0,2,0,0,4,20] |
(abhabhf00g00f00g00f00g00) | 16 | [1,0,2,0,0,4,20] | (aaaaaaff0gg0ff0gg0ff0gg0) | 96 | [1,0,0,0,6,0,20] |
(abhabhff0gg0ff0gg0ff0gg0) | 8 | [1,0,0,0,6,0,20] | (aaaaaagf0000g0f000g00f00) | 96 | [1,0,12,16,18,24,172] |
(abhabhgf0000g0f000g00f00) | 48 | [1,0,12,16,18,24,172] |
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(aa000a0f000g00f000000f000000f0) | 576 | [1,6,18,64,192,288,160] | (aaaaaa0f000g00f00g000f0g0000fg) | 1440 | [1,0,30,40,90,60,508] |
Generator matrix | |Aut(C)| | Weight distribution |
(f0000000f0000000f0000000f0000000f0000000f0000000f) | 604800 | [1,14,84,280,560,672,448,128] |
Generator matrix | |Aut(C)| | Weight distribution |
(aa0aaaa0f0000g00f0000000f00g0000f0g00000fg) | 2880 | [1,2,30,100,170,240,628,1016] |
(aa0000a0f0000g00f0000000f0000000f0000000f0) | 4608 | [1,8,30,100,320,672,736,320] |
n | Code | Construction | Length of constructed code | x | d(C) | Weight distribution |
1 | (f) | Theorem 5 | 4 | (1) | 1 | [1,2,0,8,16] |
Theorem 7 | 5 | (0) | 1 | [1,10,40,80,80,32] | ||
2 | (f00f) | Theorem 5 | 5 | (10) | 1 | [1,4,4,8,32,32] |
5 | (11) | 2 | [1,0,8,20,12,40] | |||
Theorem 7 | 6 | (00) | 1 | [1,6,12,16,48,96,64] | ||
3 | (f000f000f) | Theorem 5 | 6 | (001) | 1 | [1,12,60,160,240,192,64] |
Theorem 7 | 7 | (000) | 1 | [1,14,84,280,560,672,448,128] | ||
(aaa0fg) | Theorem 5 | 6 | (020) | 2 | [1,0,2,20,30,28,162] | |
(002) | 3 | [1,0,0,16,0,0,64] | ||||
(111) | 2 | [1,0,14,20,48,160,0] | ||||
(221) | 2 | [1,0,10,0,24,68,140] | ||||
(110) | 2 | [1,0,6,28,0,48,160] | ||||
(210) | 2 | [1,0,2,32,48,64,96] | ||||
Theorem 6 | 7 | (110)(120) | 2 | [1,0,6,52,48,192,928,960] | ||
Theorem 7 | 6 | (000) | 1 | [1,6,18,64,192,288,160] | ||
Theorem 8 | 6 | (100) | 2 | [1,0,12,40,36,240,400] | ||
(110) | 1 | [1,6,12,64,30,150,466] | ||||
4 | (f0000f0000f0000f) | Theorem 5 | 7 | (0100) | 2 | [1,8,24,40,80,192,256,128] |
(1111) | 1 | [1,2,12,40,50,60,220,344] | ||||
(1100) | 1 | [1,4,12,52,124,168,208,160] | ||||
Theorem 7 | 7 | (0000) | 1 | [1,14,84,280,560,672,448,128] | ||
(a0aa0f0000fg) | Theorem 5 | 7 | (1000) | 1 | [1,2,6,40,56,48,256,320] | |
(2211) | 2 | [1,0,2,16,34,76,232,368] | ||||
(1212) | 2 | [1,0,2,24,38,52,236,376] | ||||
(1010) | 1 | [1,2,6,40,56,48,256,320] | ||||
Theorem 6 | 8 | (1100),(1200) | 1 | [1,2,6,64,152,288,1312,2816,1920] | ||
(1010),(0102) | 2 | [1,0,10,40,192,412,1084,2850,1972] | ||||
(2001),(0110) | 2 | [1,0,2,40,78,164,1012,2784,2480] | ||||
4 | (a0aa0f0000fg) | Theorem 3.7 | 7 | (1000) | 1 | [1,2,12,64,116,312,880,800] |
(1221) | 2 | [1,0,12,40,90,240,724,1080] | ||||
(1010) | 1 | [1,2,6,40,56,48,256,320] | ||||
(1100) | 2 | [1,0,2,24,38,52,236,376] | ||||
(a0aa0aae) | Theorem 5 | 7 | (1100) | 3 | [1,0,0,40,48,0,256,384] | |
(1212) | 3 | [1,0,0,16,24,72,280,336] | ||||
Theorem 3.7 | 7 | (0001) | 1 | [1,6,12,40,240,672,832,384] | ||
(1111) | 2 | [1,0,6,52,48,192,928,960] | ||||
Theorem 3.5 | 8 | (1100),(0011) | 3 | [1,0,0,34,96,0,1024,3072,2304] | ||
5 | (f00000f00000f00000f00000f) | Theorem 3.4 | 8 | (10000) | 1 | [1,10,40,88,160,352,640,640,256] |
(11110) | 1 | [1,4,16,64,130,160,340,784,688] | ||||
Theorem 3.6 | 8 | (00000) | 1 | [1,16,112,448,1120,1792,1792,1024,256] | ||
(a00aa0f00000f00000fg) | Theorem 3.4 | 8 | (11110) | 2 | [1,0,6,16,60,36,388,696,984] | |
(10000) | 1 | [1,4,10,52,136,160,352,832,640] | ||||
(22000) | 1 | [1,2,2,28,86,128,340,848,752] | ||||
(00011) | 1 | [1,4,10,52,136,160,352,832,640] | ||||
Theorem 3.5 | 9 | (01100),(01200) | 1 | [1,4,10,76,280,592,1888,5440,7552,3840] | ||
(01100),(00011) | 2 | [1,0,18,60,108,720,1416,2160,7200,8000] | ||||
5 | (a00aa0f00000f00000fg) | Theorem 3.5 | 9 | (11112),(10001) | 1 | [1,2,2,44,158,320,1340,4808,8048,4960] |
Theorem 3.7 | 8 | (11110) | 2 | [1,0,8,64,120,176,880,2688,2624] | ||
(10000) | 1 | [1,4,16,88,244,544,1504,2560,1600] | ||||
(00011) | 1 | [1,4,10,44,116,176,396,816,624] | ||||
(11111) | 2 | [1,0,14,40,60,320,472,480,800] | ||||
(00021) | 1 | [1,4,6,40,148,384,544,640,384] | ||||
6 | (f000000f000000f000000f000000f000000f) | Theorem 3.4 | 9 | (100000) | 1 | [1,12,60,168,336,672,1344,1920,1536,512] |
(111100) | 1 | [1,6,24,96,258,420,660,1464,2256,1376] | ||||
(110000) | 1 | [1,8,32,116,380,872,1376,1664,1472,640] | ||||
Theorem 3.6 | 9 | (000000) | 1 | [1,18,144,672,2016,4032,5376,4608,2304,512] | ||
(aa000a0f000g00f000000f000000f0) | Theorem 3.4 | 9 | (111100) | 1 | [1,2,6,28,92,156,460,1472,2376,1968] | |
(100000) | 1 | [1,6,14,32,120,368,908,1800,2192,1120] | ||||
(001111) | 2 | [1,0,10,30,90,136,276,1296,1888,2834] | ||||
(000022) | 1 | [1,4,6,30,136,324,654,1462,2352,1592] | ||||
6 | (aa000a0f000g00f000000f000000f0) | Theorem 3.4 | 9 | (111011) | 1 | [1,2,14,68,140,440,1112,1424,1760,1600] |
(110000) | 1 | [1,6,18,72,240,432,672,1536,2304,1280] | ||||
Theorem 3.5 | 10 | (110000),(120000) | 1 | [1,6,18,96,432,1152,3072,9216,18432,18944,7680] | ||
(110000),(001100) | 1 | [1,2,18,96,228,936,2856,4992,11520,22400,16000] | ||||
(111110),(211110) | 2 | [1,0,12,36,138,516,1464,4584,10650,20936,20712] | ||||
(110000),(211110) | 2 | [1,0,18,60,162,720,2064,4320,9144,20960,21600] | ||||
Theorem 3.6 | 9 | (000000) | 1 | [1,12,66,252,840,2352,4704,5952,4224,1280] | ||
Theorem 3.7 | 9 | (111100) | 1 | [1,2,8,80,248,416,1232,4448,8000,5248] | ||
(100000) | 1 | [1,6,20,88,336,992,2752,5760,6656,3072] | ||||
(111011) | 1 | [1,2,14,68,140,440,1112,1424,1760,1600] | ||||
(110000) | 1 | [1,6,18,72,240,432,672,1536,2304,1280] | ||||
(111101) | 1 | [1,2,12,70,134,402 1192,1484,1584,1680] | ||||
(aaaaaa0f000g00f00g000f0g0000fg) | Theorem 3.4 | 9 | (001212) | 1 | [1,2,6,28,92,156,460,1472,2376,1968] | |
6 | (aaaaaa0f000g00f00g000f0g0000fg) | Theorem 3.4 | 9 | (100000) | 2 | [1,0,20,38,60,320,410,1218,938,3556] |
(111100) | 2 | [1,0,18,36,90,360,600,504,1512,3440] | ||||
(210000) | 2 | [1,0,14,40,114,320,904,1560,1448,2160] | ||||
Theorem 3.5 | 10 | (111110),(121110) | 2 | [1,0,18,60,162,720,2064,4320,9144,20960,21600] | ||
(110000),(001100) | 1 | [1,2,18,96,228,936,2856,4992,11520,22400,16000] | ||||
(210111),(000021) | 1 | [1,4,6,48,246,636,1980,7488,17664,21056,9920] | ||||
(110000),(120000) | 2 | [1,0,30,72,138,1020,3228,4800,6240,19136,24384] | ||||
(110000),(000011) | 2 | [1,0,12,54,156,678,2184,4440,8868,21008,21648] | ||||
Theorem 3.6 | 9 | (000000) | 1 | [1,6,42,228,690,1320,2268,4488,6576,4064] | ||
Theorem 3.7 | 9 | (100000) | 2 | [1,0,26,70,240,980,1330,2622,4718,9696] | ||
(111100) | 2 | [1,0,36,60,270,900,1848,2160,4248,10160] | ||||
(002121) | 1 | [1,2,8,80,248,416,1232,4448,8000,5248] | ||||
(002121) | 2 | [1,0,14,40,114,320,904,1560,1448,2160] |
![]() |
Generator matrix | |Aut(C)| | Weight distribution |
(f) | 2 | [1,2] |
Generator matrix | |Aut(C)| | Weight distribution |
(f00f) | 8 | [1,4,4] |
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(f000ff) | 8 | [1,2,2,4] | (f0f0ff) | 12 | [1,0,6,2] |
(f000ff) | 16 | [1,4,4,0] |
Generator matrix | |Aut(C)| | Weight distribution |
(f000f000f) | 48 | [1,6,12,8] |
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(aaa) | 12 | [1,0,0,8] | (abh) | 6 | [1,0,0,8] |
Generator matrix | |Aut(C)| | Weight distribution |
(aaa0gf ) | 12 | [1,0,6,20] |
Generator matrix | |Aut(C)| | Weight distribution |
(f0000f0000f0000f) | 96 | [1,8,24,32,16] |
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(a0aa) | 24 | [1,0,0,8,0] | (a0bh) | 12 | [1,0,0,8,0] |
(afaa) | 12 | [1,0,0,2,6] | (afbh) | 6 | [1,0,0,2,6] |
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(a0aa0f00) | 24 | [1,2,0,8,16] | (a0bh0f00) | 12 | [1,2,0,8,16] |
(a0aa0ffg) | 12 | [1,0,0,14,12] | (a0bh0ffg) | 6 | [1,0,0,14,12] |
(a0aa00fg) | 24 | [1,0,6,20,0] | (afaaf00g) | 12 | [1,0,6,2,18] |
Generator matrix | |Aut(C)| | Weight distribution |
(a0aa0b0000bd) | 24 | [1,2,6,32,40] |
Generator matrix | |Aut(C)| | Weight distribution |
(a0aa0aae) | 48 | [1,0,0,32,48] |
Generator matrix | |Aut(C)| | Weight distribution |
(f00000f00000f00000f00000f) | 3840 | [1,10,40,80,80,32] |
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(a00aa) | 96 | [1,0,0,8,0,0] | (a00bh) | 48 | [1,0,0,8,0,0] |
(af0aa) | 24 | [1,0,0,2,6,0] | (af0bh) | 12 | [1,0,0,2,6,0] |
(affaa) | 24 | [1,0,0,2,0,6] | (affbh) | 12 | [1,0,0,2,0,6] |
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(a00aa0f00000f00) | 96 | [1,4,4,8,32,32] | (a00bh0f00000f00) | 48 | [1,4,4,8,32,32] |
(a00aa0ff00000fg) | 48 | [1,0,8,20,12,40] | (a00aa0f00000ffg) | 24 | [1,2,0,14,40,24] |
(a00bh0ff00000fg) | 12 | [1,2,0,14,40,24] | (a00aa0ff0000ffg) | 24 | [1,0,2,20,30,28] |
(a00bh0ff0000ffg) | 12 | [1,0,2,20,30,28] | (a00aa00f00000fg) | 48 | [1,2,6,32,40,0] |
(affaa00f00000gf) | 24 | [1,2,6,14,22,36] | (afgaag000ff000g) | 24 | [1,0,6,2,18,0] |
Generator matrix | |Aut(C)| | Weight distribution |
(a00aa0f00000f00000fg) | 96 | [1,4,10,44,104,80] |
Generator matrix | |Aut(C)| | Weight distribution |
(f000000f000000f000000f000000f000000f) | 46080 | [1,6,12,16,48,96,64] |
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(aa000a00f000000f000000f0) | 576 | [1,6,12,16,48,96,64] | (ab000h00f000000f000000f0) | 288 | [1,6,12,16,48,96,64] |
(aa000af0f00g000f000000f0) | 96 | [1,4,4,14,68,104,48] | (ab000hf0f00g000f000000f0) | 48 | [1,4,4,14,68,104,48] |
(aa000af0000g000f000000f0) | 192 | [1,4,10,44,104,80,0] | (aa000af0f00gf00f0gf000fg) | 72 | [1,0,6,28,54,102,52] |
(ab000hf0f00gf00f0gf000fg) | 36 | [1,0,6,28,54,102,52] | (aaaaaaf00g00f00g00f00g00) | 96 | [1,0,2,0,0,4,20] |
(abhabhf00g00f00g00f00g00) | 16 | [1,0,2,0,0,4,20] | (aaaaaaff0gg0ff0gg0ff0gg0) | 96 | [1,0,0,0,6,0,20] |
(abhabhff0gg0ff0gg0ff0gg0) | 8 | [1,0,0,0,6,0,20] | (aaaaaagf0000g0f000g00f00) | 96 | [1,0,12,16,18,24,172] |
(abhabhgf0000g0f000g00f00) | 48 | [1,0,12,16,18,24,172] |
Generator matrix | |Aut(C)| | Weight distribution | Generator matrix | |Aut(C)| | Weight distribution |
(aa000a0f000g00f000000f000000f0) | 576 | [1,6,18,64,192,288,160] | (aaaaaa0f000g00f00g000f0g0000fg) | 1440 | [1,0,30,40,90,60,508] |
Generator matrix | |Aut(C)| | Weight distribution |
(f0000000f0000000f0000000f0000000f0000000f0000000f) | 604800 | [1,14,84,280,560,672,448,128] |
Generator matrix | |Aut(C)| | Weight distribution |
(aa0aaaa0f0000g00f0000000f00g0000f0g00000fg) | 2880 | [1,2,30,100,170,240,628,1016] |
(aa0000a0f0000g00f0000000f0000000f0000000f0) | 4608 | [1,8,30,100,320,672,736,320] |
n | Code | Construction | Length of constructed code | x | d(C) | Weight distribution |
1 | (f) | Theorem 5 | 4 | (1) | 1 | [1,2,0,8,16] |
Theorem 7 | 5 | (0) | 1 | [1,10,40,80,80,32] | ||
2 | (f00f) | Theorem 5 | 5 | (10) | 1 | [1,4,4,8,32,32] |
5 | (11) | 2 | [1,0,8,20,12,40] | |||
Theorem 7 | 6 | (00) | 1 | [1,6,12,16,48,96,64] | ||
3 | (f000f000f) | Theorem 5 | 6 | (001) | 1 | [1,12,60,160,240,192,64] |
Theorem 7 | 7 | (000) | 1 | [1,14,84,280,560,672,448,128] | ||
(aaa0fg) | Theorem 5 | 6 | (020) | 2 | [1,0,2,20,30,28,162] | |
(002) | 3 | [1,0,0,16,0,0,64] | ||||
(111) | 2 | [1,0,14,20,48,160,0] | ||||
(221) | 2 | [1,0,10,0,24,68,140] | ||||
(110) | 2 | [1,0,6,28,0,48,160] | ||||
(210) | 2 | [1,0,2,32,48,64,96] | ||||
Theorem 6 | 7 | (110)(120) | 2 | [1,0,6,52,48,192,928,960] | ||
Theorem 7 | 6 | (000) | 1 | [1,6,18,64,192,288,160] | ||
Theorem 8 | 6 | (100) | 2 | [1,0,12,40,36,240,400] | ||
(110) | 1 | [1,6,12,64,30,150,466] | ||||
4 | (f0000f0000f0000f) | Theorem 5 | 7 | (0100) | 2 | [1,8,24,40,80,192,256,128] |
(1111) | 1 | [1,2,12,40,50,60,220,344] | ||||
(1100) | 1 | [1,4,12,52,124,168,208,160] | ||||
Theorem 7 | 7 | (0000) | 1 | [1,14,84,280,560,672,448,128] | ||
(a0aa0f0000fg) | Theorem 5 | 7 | (1000) | 1 | [1,2,6,40,56,48,256,320] | |
(2211) | 2 | [1,0,2,16,34,76,232,368] | ||||
(1212) | 2 | [1,0,2,24,38,52,236,376] | ||||
(1010) | 1 | [1,2,6,40,56,48,256,320] | ||||
Theorem 6 | 8 | (1100),(1200) | 1 | [1,2,6,64,152,288,1312,2816,1920] | ||
(1010),(0102) | 2 | [1,0,10,40,192,412,1084,2850,1972] | ||||
(2001),(0110) | 2 | [1,0,2,40,78,164,1012,2784,2480] | ||||
4 | (a0aa0f0000fg) | Theorem 3.7 | 7 | (1000) | 1 | [1,2,12,64,116,312,880,800] |
(1221) | 2 | [1,0,12,40,90,240,724,1080] | ||||
(1010) | 1 | [1,2,6,40,56,48,256,320] | ||||
(1100) | 2 | [1,0,2,24,38,52,236,376] | ||||
(a0aa0aae) | Theorem 5 | 7 | (1100) | 3 | [1,0,0,40,48,0,256,384] | |
(1212) | 3 | [1,0,0,16,24,72,280,336] | ||||
Theorem 3.7 | 7 | (0001) | 1 | [1,6,12,40,240,672,832,384] | ||
(1111) | 2 | [1,0,6,52,48,192,928,960] | ||||
Theorem 3.5 | 8 | (1100),(0011) | 3 | [1,0,0,34,96,0,1024,3072,2304] | ||
5 | (f00000f00000f00000f00000f) | Theorem 3.4 | 8 | (10000) | 1 | [1,10,40,88,160,352,640,640,256] |
(11110) | 1 | [1,4,16,64,130,160,340,784,688] | ||||
Theorem 3.6 | 8 | (00000) | 1 | [1,16,112,448,1120,1792,1792,1024,256] | ||
(a00aa0f00000f00000fg) | Theorem 3.4 | 8 | (11110) | 2 | [1,0,6,16,60,36,388,696,984] | |
(10000) | 1 | [1,4,10,52,136,160,352,832,640] | ||||
(22000) | 1 | [1,2,2,28,86,128,340,848,752] | ||||
(00011) | 1 | [1,4,10,52,136,160,352,832,640] | ||||
Theorem 3.5 | 9 | (01100),(01200) | 1 | [1,4,10,76,280,592,1888,5440,7552,3840] | ||
(01100),(00011) | 2 | [1,0,18,60,108,720,1416,2160,7200,8000] | ||||
5 | (a00aa0f00000f00000fg) | Theorem 3.5 | 9 | (11112),(10001) | 1 | [1,2,2,44,158,320,1340,4808,8048,4960] |
Theorem 3.7 | 8 | (11110) | 2 | [1,0,8,64,120,176,880,2688,2624] | ||
(10000) | 1 | [1,4,16,88,244,544,1504,2560,1600] | ||||
(00011) | 1 | [1,4,10,44,116,176,396,816,624] | ||||
(11111) | 2 | [1,0,14,40,60,320,472,480,800] | ||||
(00021) | 1 | [1,4,6,40,148,384,544,640,384] | ||||
6 | (f000000f000000f000000f000000f000000f) | Theorem 3.4 | 9 | (100000) | 1 | [1,12,60,168,336,672,1344,1920,1536,512] |
(111100) | 1 | [1,6,24,96,258,420,660,1464,2256,1376] | ||||
(110000) | 1 | [1,8,32,116,380,872,1376,1664,1472,640] | ||||
Theorem 3.6 | 9 | (000000) | 1 | [1,18,144,672,2016,4032,5376,4608,2304,512] | ||
(aa000a0f000g00f000000f000000f0) | Theorem 3.4 | 9 | (111100) | 1 | [1,2,6,28,92,156,460,1472,2376,1968] | |
(100000) | 1 | [1,6,14,32,120,368,908,1800,2192,1120] | ||||
(001111) | 2 | [1,0,10,30,90,136,276,1296,1888,2834] | ||||
(000022) | 1 | [1,4,6,30,136,324,654,1462,2352,1592] | ||||
6 | (aa000a0f000g00f000000f000000f0) | Theorem 3.4 | 9 | (111011) | 1 | [1,2,14,68,140,440,1112,1424,1760,1600] |
(110000) | 1 | [1,6,18,72,240,432,672,1536,2304,1280] | ||||
Theorem 3.5 | 10 | (110000),(120000) | 1 | [1,6,18,96,432,1152,3072,9216,18432,18944,7680] | ||
(110000),(001100) | 1 | [1,2,18,96,228,936,2856,4992,11520,22400,16000] | ||||
(111110),(211110) | 2 | [1,0,12,36,138,516,1464,4584,10650,20936,20712] | ||||
(110000),(211110) | 2 | [1,0,18,60,162,720,2064,4320,9144,20960,21600] | ||||
Theorem 3.6 | 9 | (000000) | 1 | [1,12,66,252,840,2352,4704,5952,4224,1280] | ||
Theorem 3.7 | 9 | (111100) | 1 | [1,2,8,80,248,416,1232,4448,8000,5248] | ||
(100000) | 1 | [1,6,20,88,336,992,2752,5760,6656,3072] | ||||
(111011) | 1 | [1,2,14,68,140,440,1112,1424,1760,1600] | ||||
(110000) | 1 | [1,6,18,72,240,432,672,1536,2304,1280] | ||||
(111101) | 1 | [1,2,12,70,134,402 1192,1484,1584,1680] | ||||
(aaaaaa0f000g00f00g000f0g0000fg) | Theorem 3.4 | 9 | (001212) | 1 | [1,2,6,28,92,156,460,1472,2376,1968] | |
6 | (aaaaaa0f000g00f00g000f0g0000fg) | Theorem 3.4 | 9 | (100000) | 2 | [1,0,20,38,60,320,410,1218,938,3556] |
(111100) | 2 | [1,0,18,36,90,360,600,504,1512,3440] | ||||
(210000) | 2 | [1,0,14,40,114,320,904,1560,1448,2160] | ||||
Theorem 3.5 | 10 | (111110),(121110) | 2 | [1,0,18,60,162,720,2064,4320,9144,20960,21600] | ||
(110000),(001100) | 1 | [1,2,18,96,228,936,2856,4992,11520,22400,16000] | ||||
(210111),(000021) | 1 | [1,4,6,48,246,636,1980,7488,17664,21056,9920] | ||||
(110000),(120000) | 2 | [1,0,30,72,138,1020,3228,4800,6240,19136,24384] | ||||
(110000),(000011) | 2 | [1,0,12,54,156,678,2184,4440,8868,21008,21648] | ||||
Theorem 3.6 | 9 | (000000) | 1 | [1,6,42,228,690,1320,2268,4488,6576,4064] | ||
Theorem 3.7 | 9 | (100000) | 2 | [1,0,26,70,240,980,1330,2622,4718,9696] | ||
(111100) | 2 | [1,0,36,60,270,900,1848,2160,4248,10160] | ||||
(002121) | 1 | [1,2,8,80,248,416,1232,4448,8000,5248] | ||||
(002121) | 2 | [1,0,14,40,114,320,904,1560,1448,2160] |