Next Article in Journal
Simple Moment Generating Function Optimisation Technique to Design Optimum Electronic Filter for Underwater Wireless Optical Communication Receiver
Previous Article in Journal
A Source Identification Problem in Magnetics Solved by Means of Deep Learning Methods
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

The Build-Up Construction for Codes over a Commutative Non-Unitary Ring of Order 9

1
Research Group of Algebraic Structures and Applications, Department of Mathematics, Faculty of Science, King Abdulaziz University, Jeddah 21589, Saudi Arabia
2
Department of Mathematics, Faculty of Science, University of Qassim, Qassim 52373, Saudi Arabia
3
Institute of Mathematics, University of the Philippines Diliman, Quezon City 1101, Philippines
4
I2M (CNRS, University of Aix-Marseille, Centrale Marseille), 13009 Marseilles, France
*
Author to whom correspondence should be addressed.
Mathematics 2024, 12(6), 860; https://doi.org/10.3390/math12060860
Submission received: 11 December 2023 / Revised: 9 January 2024 / Accepted: 22 January 2024 / Published: 15 March 2024

Abstract

:
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 4, to generate quasi self-dual codes. In the present paper, we introduce three such propagation rules to generate self-orthogonal, self-dual and quasi self-dual codes over a special non-unitary ring of order 9. As an application, we classify the three categories of codes completely in length at most 3, and partially in lengths 4 and 5, up to monomial equivalence.

1. Introduction

A potent way for creating self-dual codes over finite fields and unitary rings is the build-up method [1,2,3]. 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, h = 2 for binary codes [4] and codes over a certain ring of order 4 [1], and h = 4 for ternary codes [2].
Recently, this technique was extended to certain non-unitary rings of order 4 [5,6], with self-dual codes replaced by self-orthogonal codes of length n and of order 2 n , the so-called quasi self-dual (QSD) codes defined in [7].
In the present work, we modify this technique to produce self-orthogonal and self-dual codes, as well as QSD codes over the ring I 3 , a non-unital, commutative ring of order 9. This notation is consistent with the classification in [8] of rings of order p 2 , for a prime p. Following [7], QSD codes are defined over the ring I 3 as self-orthogonal codes of length n and size 3 n . We derive propagation rules of order 3 for self-orthogonal codes (Theorem 4) and of order 4 for self-dual and quasi self-dual codes (Theorems 7 and 9). As an upshot of these rules, we classify completely self-orthogonal, QSD and self-dual codes up to length 3 , and partially up to length 5 . The classification is made under monomial action. The mass formulas for the three types of codes considered are used as a stopping criteria for code generation.
The rest of the paper is set up as follows. The next section contains the preliminary notions and notations needed in the latter sections. The three propagation rules are derived in Section 3. Section 4 contains some classification results. Section 5 concludes the article and points out directions for further research.

2. Preliminaries

Let F 3 denote the finite field of order 3, and let F 3 n be the vector space of n-tuples over F 3 . A ternary linear code C of length n and dimension k, denoted simply as an n , k 3 code, is a k-dimensional subspace of F 3 n . The dual of a ternary linear code is denoted by C and is defined as
C = y F 3 n | x C , ( x , y ) = 0 ,
where ( x , y ) = i = 1 n x i y i denotes the standard inner product. A code C is self-orthogonal if it is included in its dual, that is, C C .
The number of nonzero coordinates of a vector x F 3 n is called its (Hamming) weight, denoted by w t ( x ) . The Hamming distance  d ( x , y ) between two vectors x , y F 3 n is defined by d ( x , y ) = w t ( x y ) . The minimum distance of a linear code C is
d ( C ) = min d ( x , y ) | x , y C , x y = min w t ( c ) c C , c 0 .
A ternary linear code of length n, dimension k and minimum distance d is said to be an n , k , d 3 code. The weight distribution of a code C is a sequence [ A 0 , A 1 , , A n ] where A i denotes the number of codewords of weight i.

2.1. The Ring I 3

Following [8], we define the ring I 3 of order 9 on two generators a and b by the relations
I 3 = a , b | 3 a = 3 b = 0 , a 2 = b , a b = 0 .
Thus, the ring I 3 has the characteristic 3, and consists of nine elements:
I 3 = 0 , a , b , c , d , e , f , g , h ,
where c = a + b , d = 2 b , e = 2 a
f = e + b , g = a + d , and h = d + e .
These definitions immediately lead to the addition and the multiplication tables given as follow (Table 1 and Table 2).
We can deduce from this table that this ring is commutative without unity and has a unique maximal ideal S = 0 , b , d , with a residue field I 3 / S F 3 . As a result, we have the following b-adic decomposition. It can be checked by inspection that any element i I 3 can be expressed as
i = a x + b y
for unique scalars x , y F 3 .
We have defined a natural action of F 3 on the ring I 3 by the rule
r 0 = 0 r = 0 , r 1 = 1 r = r , and r 2 = r + r = r for all r I 3 .
Note that for all r I 3 , x , y F 3 , this action is “distributive” in the sense that r x y = r x + r y , where ⊕ denotes the addition in F 3 . When x = ( x 1 , , x n ) F 3 n and r = ( r 1 , , r n ) I 3 n , we will occasionally use the inner product notation ( x , r ) to indicate
( x , r ) = x 1 r 1 + + x n r n .
We define the reduction map modulo S as π : I 3 I 3 / S F 3 by
π ( 0 ) = π ( b ) = π ( d ) = 0 ,
π ( a ) = π ( c ) = π ( g ) = 1 ,
π ( e ) = π ( f ) = π ( h ) = 2 .
This map is extended in the natural way to a map from I 3 n to F 3 n .

2.2. Codes over I 3

A linear I 3 code C of length n is defined as an I 3 submodule of I 3 n . It may be thought of as the I 3 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 r e s ( C ) is just π C , and the torsion code t o r ( C ) is x F 3 n | b x C .
It is easy to verify that r e s ( C ) t o r ( C ) [7]. We denote the dimension of the residue code by k 1 and the dimension of the torsion code by k 1 + k 2 . Such a code C is said to be of type { k 1 , k 2 } . A straightforward application of the first isomorphism theorem [7] shows that
C = r e s ( C ) t o r ( C ) = 3 2 k 1 + k 2 .
Define the inner product of x = ( x 1 , , x n ) , y = ( y 1 , , y n ) I 3 n as ( x , y ) = x 1 y 1 + + x n y n , . The dual code C of the code C is the module defined as
C = y I 3 n | x C , ( x , y ) = 0 .
An I 3 code C is self-dual (SD) if C = C . If for all x , y C , ( x , y ) = 0 , then C is self-orthogonal (SO). Following the terminology introduced in [6], upon passing from characteristic 2 to 3, an I 3 code of length n that is self-orthogonal and of size 3 n is called a quasi self-dual (QSD) code.
Two I 3 codes are monomially equivalent if there is a monomial permutation that maps one to the other.
In the following, we give an example of a quasi self-dual (QSD) code.
Example 1.
The I 3 code with generator matrix c c d a b 0 b b 0 b b d is quasi self-dual, with residue code generated by 1 1 0 1 and torsion code generated by 1 1 0 1 1 0 1 1 0 1 1 2 . The residue code is self-orthogonal.
Example 2.
Let R 3 = 000 , a a a , b b b , c c c , d d d , e e e , f f f , g g g , h h h , the repetition code of length 3, with weight distribution [ 1 , 0 , 0 , 8 ] . Clearly, it is self-orthogonal but not quasi self-dual, as its size is 9 < 3 n = 27 .
However, as an I 3 code of length 1, S = 0 , b , d is of size 3 = 3 1 and is, thus, quasi self-dual.

2.3. Codes over F 9

An additive code C of length n over F 9 is an additive subgroup of F 9 n . Thus, C contains 3 k codewords for some integer 0 k 2 n and is called an ( n , 3 k ) code. If, furthermore, C has a minimum distance d , we write the parameters of C as ( n , 3 k , d ) . An additive code C over F 9 can be represented by a k × n generator matrix with entries from F 9 whose rows span C , called a generator matrix. That is, C is the F 3 span of its rows.
Let ω F 9 be such that ω 2 = ω + 1 . The trace map, T r : F 9 F 3 , is defined as T r ( x ) = x + x 3 .
Every linear I 3 code C is attached with an additive F 9 code ϕ ( C ) by the alphabet substitution
0 0 , a 2 , b ω 2
c ω , d 2 ω 2 , e 1
f 2 + ω , g 1 + 2 ω , h 2 ω ,
where F 9 = F 3 ω , extended naturally to F 9 n . The parameters  ( n , 3 k , d ) of an I 3 code are identified with that of its image under ϕ . It can be checked that for all x I 3 n , we have T r ( ϕ ( x ) ) = π ( x ) and, thus, r e s ( C ) = T r ( ϕ ( C ) ) . Similarly, we see that t o r ( C ) is the so-called subfield subcode of ϕ ( C ) that is F 3 n ϕ ( C ) .

2.4. Mass Formulas

We recall the mass formulas for ternary codes [9,10,11].
Theorem 1.
Let φ n , k be the number of self-orthogonal ternary codes having parameters [ n , k ] . Then:
(i) 
If n 3 is odd, then
φ n , k = i = 0 k 1 3 n 1 2 i 1 i = 1 k 3 i 1 ;
(ii) 
If n 2 is even, then
φ n , k = ( 3 n k 3 n / 2 k + 3 n / 2 1 ) i = 1 k 1 3 n 2 i 1 i = 1 k 3 i 1 : i f ( 1 ) n 2 i s s q u a r e ( 3 n k + 3 n / 2 k 3 n / 2 1 ) i = 1 k 1 3 n 2 i 1 i = 1 k 3 i 1       : i f ( 1 ) n 2 i s n o t s q u a r e .
These formulas are valid for k 1 .
We define the Gaussian coefficient  n k q for k n as
n k q = ( q n 1 ) ( q n q ) ( q n q k 1 ) ( q k 1 ) ( q k q ) ( q k q k 1 ) ,
which gives the number of subspaces of dimension k contained in an n-dimensional vector space over F q .
In what follows, we present a mass formula for SO codes, which is a characteristic 3-version of Theorem 7 in [12].
Theorem 2.
For all lengths n , and for the type k 1 , k 2 , the number of self-orthogonal codes over I 3 is
N S O ( n , k 1 , k 2 ) = φ n , k 1 n k 1 k 2 3 3 k 1 ( n k 1 k 2 ) .
The following follows from the usual counting technique under the group action.
Corollary 1.
For a given length n and type k 1 , k 2 , with 0 k 1 , k 2 n , we have
C 1 A u t ( C ) = N S O ( n , k 1 , k 2 ) 2 n n ! ,
where C runs over distinct representatives of equivalence classes under monomial column permutations of SO codes of length n and type { k 1 , k 2 } .
Corollary 2.
For a given length n and type k 1 , k 2 , with 0 k 1 , k 2 n , we have
C 1 A u t ( C ) = N Q S D ( n , k 1 , k 2 ) 2 n n ! = φ n , k 1 k 1 + k 2 k 2 3 3 k 1 2 2 n n ! ,
where C runs over distinct representatives of equivalence classes under monomial column permutations of QSD codes of length n and type k 1 , k 2 .
Corollary 3.
For a given length n and type n 2 , n 2 , with 0 n 2 , we have
C 1 A u t ( C ) = N S D ( n , n 2 , n 2 ) 2 n n ! = φ n , n 2 2 n n ! ,
where C runs over distinct representatives of equivalence classes under monomial column permutations of SD codes of length n and type n 2 , n 2 .

3. Constructions

3.1. Construction of Self-Orthogonal Codes

In this section, we present the build-up construction method for self-orthogonal codes over I 3 . We begin by a result similar to Theorem 1 in [7]. The proof is omitted here.
Lemma 1.
Let C be an I 3 linear code of type k 1 , k 2 and length n. Then, a generator matrix G of the code is of the form
a I k 1 a X Y 0 b I k 2 b Z ,
where Y is a matrix with entries in I 3 , X and Z are matrices with entries in F 3 and I k 1 , I k 2 are identity matrices.
Before presenting the construction methods, we look first at a characterization of self-orthogonal codes over I 3 .
Theorem 3.
A linear code C of length n over I 3 is self-orthogonal if and only if r e s ( C ) is a ternary self-orthogonal code.
Proof. 
Using similar proof to Theorem 1 in [13], it can be shown that every codeword i C can be written as i = a u + b v for some u r e s ( C ) and v F 3 n , and if u r e s ( C ) , then a u + b v C for some v F 3 n . If i 1 , i 2 C , then we can write i 1 and i 2 in b-adic decomposition form as i 1 = a x 1 + b y 1 and i 2 = a x 2 + b y 2 where x 1 , x 2 r e s ( C ) and y 1 , y 2 F 3 n . We compute ( i 1 , i 2 ) as
( a x 1 + b y 1 , a x 2 + b y 2 ) = a 2 ( x 1 , x 2 ) + a b ( x 1 , y 2 ) + a b ( x 2 , y 1 ) + b 2 ( y 1 , y 2 ) = b ( x 1 , x 2 ) .
By the relation between C and r e s ( C ) , the result follows. □
The following theorem gives a propagation rule of order 3 for self-orthogonal codes.
Theorem 4.
Let C 0 be a self-orthogonal code over I 3 of length n with generator matrix G 0 = ( r i ) where r i is the ith row of G 0 for i = 1 , 2 , , m . Let x F 3 n and α , β , γ I 3 , not all zero, such that α + β + γ = 0 . Then the code C , with the following generator matrix
G = α β 0 γ x ( x , r 1 ) ( x , r 1 ) ( x , r 1 ) r 1 ( x , r m ) ( x , r m ) ( x , r m ) r m ,
is self-orthogonal of length n + 3 if
(i) 
( x , x ) = 1 , and α 2 + β 2 + γ 2 = 0 , or
(ii) 
( x , x ) = 1 and α 2 + β 2 γ 2 = 0 .
Proof. 
It suffices to show that the rows of G are orthogonal to one another. Let y 0 = α β 0 γ x , the first row of G , and let y i = ( x , r i ) ( x , r i ) ( x , r i ) r i , the i + 1 st row of G , for i = 1 , 2 , , m .
(i) 
If ( x , x ) = 1 and α 2 + β 2 + γ 2 = 0 , then
( y 0 , y 0 ) = α 2 + β 2 + γ 2 ( x , x ) = α 2 + β 2 + γ 2 = 0 ( y 0 , y i ) = α ( x , r i ) + β ( x , r i ) + γ ( x , r i ) = ( α + β + γ ) ( x , r i ) = 0 ( y i , y j ) = 3 ( x , r i ) ( x , r j ) + ( r i , r j ) = 0
for all i , j = 1 , 2 , , m .
(ii) 
If ( x , x ) = 1 and α 2 + β 2 γ 2 = 0 , then
( y 0 , y 0 ) = α 2 + β 2 + γ 2 ( x , x ) = α 2 + β 2 γ 2 = 0 ( y 0 , y i ) = α ( x , r i ) + β ( x , r i ) + γ ( x , r i ) = ( α + β + γ ) ( x , r i ) = 0 ( y i , y j ) = 3 ( x , r i ) ( x , r j ) + ( r i , r j ) = 0
for all i , j = 1 , 2 , , m .
In both cases, we see that C is a self-orthogonal code. □
Corollary 4.
Let C 0 be a quasi self-dual code over I 3 of length n with generator matrix G 0 = ( r i ) , where r i is the ith row of G 0 for i = 1 , 2 , , m . Let x F 3 n and α , β , γ I 3 , not all zero, such that α + β + γ = 0 . Let σ , τ , μ S = { 0 , b , d } , not all zero, such that σ + τ + μ = 0 . Then the code C , with the following generator matrix
G = α β 0 γ x 0 σ τ μ x ( x , r 1 ) ( x , r 1 ) ( x , r 1 ) r 1 ( x , r m ) ( x , r m ) ( x , r m ) r m ,
is quasi self-dual of length n + 3 if
1. 
( x , x ) = 1 , and α 2 + β 2 + γ 2 = 0 , or
2. 
( x , x ) = 1 , and α 2 + β 2 γ 2 = 0 .
Proof. 
We first show that C is self-orthogonal. Following the proof of Theorem 4, it suffices to show that y 0 = 0 σ τ μ x is orthogonal to itself and every vector y i for i = 0 , 1 , 2 , , m . Indeed,
( y 0 , y 0 ) = σ 2 + τ 2 + μ 2 ( x , x ) = 0 ( y 0 , y 0 ) = β σ + γ μ ( x , x ) = 0 ( y 0 , y i ) = σ ( x , r i ) + τ ( x , r i ) + μ ( x , r i ) = ( σ + τ + μ ) ( x , r i ) = 0 ,
as σ , τ , μ S . Therefore, C is self-orthogonal. Since | C | = 9 1 3 1 | C 0 | = 3 n + 3 , C is a quasi self-dual code of length n + 3 . □
Example 3.
We construct self-orthogonal codes of length 7 from self-orthogonal codes of length 4. By Theorem 3, we have the self-orthogonal ( 4 , 3 3 , 2 ) code with generator matrix
G 0 = a 0 a a 0 b 0 b
and weight distribution [ 1 , 0 , 2 , 10 , 14 ] .
Using Theorem 4 ( i ) , from G 0 with α = β = γ = a , and x = ( 1 , 2 , 1 , 2 ) , we obtain a self-orthogonal ( 7 , 3 5 , 3 ) code with generator matrix
G 0 , 1 = a a 0 a e a e a a a a 0 a a b b b 0 b 0 b
and weight distribution [ 1 , 0 , 0 , 12 , 4 , 30 , 62 , 134 ] . Also, if we use Theorem 4 ( i i ) with α = h , β = 0 , γ = c and x = ( 0 , 0 , 1 , 1 ) , we obtain another self-orthogonal ( 7 , 3 5 , 2 ) code with generator matrix
G 0 , 2 = h 0 0 0 0 c c e e e a 0 a a b b b 0 b 0 b
and weight distribution [ 1 , 0 , 2 , 18 , 14 , 16 , 80 , 112 ] .
Example 4.
Using Corollary 4 with the same generator matrix G 0 , α = h , β = 0 , γ = c , σ , τ = b , μ = d and x = ( 1 , 2 , 0 , 0 ) , we obtain a self-orthogonal ( 7 , 3 6 , 2 ) code over I 3 with generator matrix
G 0 , 3 = h 0 0 c h 0 0 0 b b d b 0 0 a a a a 0 a a d d d 0 b 0 b
and weight distribution [ 1 , 0 , 4 , 18 , 42 , 56 , 230 , 378 ] .

3.2. Construction of Quasi Self-Dual Codes

In this section, we discuss two kinds of build-up construction method for quasi self-dual codes over I 3 . We begin with the construction of I 3 codes from ternary codes, known traditionally as the multilevel construction.
Theorem 5.
Let C 1 be a self-orthogonal ternary code of length n, and let C 2 be a ternary code of length n such that C 1 C 2 . The code C , defined by the relation
C = a C 1 + b C 2 ,
is self-orthogonal with residue code C 1 and torsion code C 2 . Furthermore, if C 1 C 2 = 3 n , then C is quasi self-dual.
This is a direct analogue of Theorem 4 in [7], upon passing from characteristic 2 to 3 . The proof is omitted here.
The following theorem is a propagation rule of order 3, which increases the number of generators by three.
Theorem 6.
Let C 0 be a quasi self-dual code of length n over I 3 with generator matrix G 0 = ( r i ) , where r i is the i-th row of G 0 for 1 i m . If x F 3 n and σ , τ , μ S = { 0 , b , d } are nonzero elements, then the code C , with the following generator matrix
G = σ 0 0 σ x 0 τ 0 τ x 0 0 μ μ x 2 ( x , r 1 ) 2 ( x , r 1 ) 2 ( x , r 1 ) r 1 2 ( x , r m ) 2 ( x , r m ) 2 ( x , r m ) r m ,
is quasi self-dual of length n + 3 .
Proof. 
Let y 0 = σ 0 0 σ x , y 0 = 0 τ 0 τ x and y 0 = 0 0 μ μ x . We see that
( y 0 , y 0 ) = σ τ ( x , x ) = 0 ,
because σ τ = 0 . Similar arguments show that y 0 , y 0 and y 0 are orthogonal to one another and to themselves, as σ , τ , μ S .
Now, let y i = 2 ( x , r i ) 2 ( x , r i ) 2 ( x , r i ) r i for 1 i m . Then
( y 0 , y i ) = 2 σ ( x , r i ) + σ ( x , r i ) = 0 .
Similarly, ( y 0 , y i ) = 0 and ( y 0 , y i ) = 0 . Also, for 1 j m ,
( y i , y j ) = 3 ( x , r i ) ( x , r j ) + ( r i , r j ) = 0 .
Thus, C is a self-orthogonal code. Furthermore, since C = 3 3 C 0 = 3 n + 3 , C is quasi self-dual. Hence, the code C obtained from the quasi self-dual code C 0 by the build-up construction is also quasi self-dual. □
Denote by C 0 ^ the span of the last m rows of G and for every y I 3 , write
T y = ( y , 0 , 0 , y x ) , U y = ( 0 , y , 0 , y x ) and V y = ( 0 , 0 , y , y x ) .
The construction in Theorem 6 may be shown to be equivalent to C = ˙ t , u , v S ( T t + U u + V v + C 0 ^ ) , where ˙ denotes disjoint union.
Example 5.
Using Theorem 5, we construct quasi self-dual codes of lengths 6 and 9 from a ( 3 , 3 3 , 1 ) code with generator matrix
G 1 = a a c 0 b b
and weight distribution [ 1 , 2 , 2 , 22 ] .
Using G 1 as the base generator matrix and x = ( 0 , 1 , 1 ) , we obtain a quasi self-dual ( 6 , 3 6 , 1 ) code with generator matrix
G 1 , 1 = b 0 0 0 b b 0 b 0 0 b b 0 0 b 0 b b g g g a a c b b b 0 b b
and weight distribution [ 1 , 8 , 26 , 48 , 64 , 64 , 518 ] .
Using G 1 , 1 with x = ( 1 , 2 , 1 , 1 , 2 , 0 ) , we obtain a quasi self-dual ( 9 , 3 9 , 1 ) code with generator matrix
G 1 , 1 , 1 = b 0 0 b d b b d 0 0 b 0 b d b b d 0 0 0 b b d b b d 0 0 0 0 b 0 0 0 b b b b b 0 b 0 0 b b 0 0 0 0 0 b 0 b b f f f g g g a a c 0 0 0 b b b 0 b b
and weight distribution [ 1 , 8 , 44 , 212 , 686 , 1370 , 1760 , 1520 , 800 , 13282 ] .
The next propagation rule uses two more generators while still creating quas -self-dual codes over I 3 of length 4 more.
Theorem 7.
Let C 0 be a quasi self-dual code over I 3 of length n with generator matrix G 0 = ( r i ) , where r i is the ith row of G 0 for i = 1 , 2 , , m . Let x 1 , x 2 F 3 n such that ( x 1 , x 2 ) = 0 and ( x i , x i ) = 2 for i = 1 , 2 . For 1 i m , define u i = ( x 1 , r i ) and v i = ( x 2 , r i ) . If α , β I 3 S , then the code C , with the following generator matrix
G = α 0 0 0 α x 1 0 β 0 0 β x 2 2 u 1 2 v 1 u 1 + v 1 2 u 1 + v 1 r 1 2 u m 2 v m u m + v m 2 u m + v m r m ,
is quasi self-dual of length n + 4 .
Proof. 
Let y 0 = α 0 0 0 α x 1 and y 0 = 0 β 0 0 β x 2 . Then
( y 0 , y 0 ) = α 2 + α 2 ( x 1 , x 1 ) = 0 ( y 0 , y 0 ) = β 2 + β 2 ( x 2 , x 2 ) = 0 ( y 0 , y 0 ) = α β ( x 1 , x 2 ) = 0 .
Now, for 1 i m , let y i = 2 u i 2 v i u i + v i 2 u i + v i r i . So for 1 j m ,
( y i , y j ) = u i u j + v i v j + ( u i + v i ) ( u j + v j ) + ( 2 u i + v i ) ( 2 u j + v j ) + ( r i , r j ) = 0 .
Thus, C is self-orthogonal and since C = 9 2 C 0 = 3 n + 4 , C is quasi self-dual. □
Define C 0 ^ to be the span of the last m rows of G , and for every y I 3 write
T y = ( y , 0 , 0 , 0 , y x 1 ) , and U y = ( 0 , y , 0 , 0 , y x 2 ) .
The construction in Theorem 7 maybe demonstrated to be equivalent to
C = ˙ t , u I 3 S ( T t + U u + C 0 ^ ) .
Remark 1.
Vectors x 1 and x 2 satisfying the conditions of Theorem 7 is valid for n 2 .
Example 6.
We construct a quasi self-dual code of length 8 from a quasi self-dual ( 4 , 3 4 , 1 ) with generator matrix
G 2 = a 0 a c 0 b 0 b 0 0 b b
and weight distribution [ 1 , 2 , 6 , 32 , 40 ] . Using Theorem 7 with α = β = a , x 1 = ( 1 , 0 , 0 , 1 ) and x 2 = ( 0 , 1 , 2 , 0 ) , we obtain a quasi self-dual ( 8 , 3 8 , 2 ) code with generator matrix
G 2 , 2 = a 0 0 0 a 0 0 a 0 a 0 0 0 a e 0 g a c d a 0 a c d d d 0 0 b 0 b d b 0 b 0 0 b b
and weight distribution [ 1 , 0 , 2 , 58 , 150 , 344 , 1318 , 2712 , 1976 ] .
Remark 2.
If two quasi self-dual I 3 codes are monomially equivalent, then their residue codes are also equivalent. But the converse does not hold, as seen in the next example.
Example 7.
Let C 1 and C 2 be quasi self-dual I 3 codes with generator matrices a 0 a a 0 b 0 b 0 0 b d and a 0 a a 0 b 0 b 0 0 b b , respectively. Then, r e s ( C 1 ) = r e s ( C 2 ) with generator matrix 1 0 1 1 . However, C 1 and C 2 are not monomially equivalent, as their weight distributions are [ 1 , 0 , 12 , 26 , 42 ] and [ 1 , 2 , 6 , 32 , 40 ] , respectively.

3.3. Construction of Self-Dual Codes

In this section, we discuss the build-up construction method for self-dual codes over I 3 . We start with characterizations of self-dual codes.
Theorem 8.
A linear code C of length n over I 3 is self-dual if and only if the following hold:
(i) 
r e s ( C ) is self-dual ternary code,
(ii) 
t o r ( C ) = F 3 n .
The code C is defined by the relation
C = a r e s ( C ) + b F 3 n .
Moreover, C = 3 3 n 2 .
Proof. 
The proof is similar to Theorems 3, 4 and 5 in [13] upon passing from characteristic 2 to 3. Moreover, C = r e s ( C ) t o r ( C ) = 3 n 2 3 n = 3 3 n 2 .
Corollary 5.
Self-dual codes over I 3 of length n occur if and only if n is a multiple of 4.
Proof. 
We know that C is a self-dual code over I 3 if and only if r e s ( C ) is a self-dual code over F 3 . Then, by Theorem 3 in [14], a self-dual code over F 3 of length n exists if and only if n is a multiple of 4. This completes the proof. □
Theorem 9.
Let n be a multiple of 4. Suppose C 0 is a self-dual code over I 3 of length n and generator matrix G 0 = ( r i ) , where r i are the row vectors of G 0 for 1 i m over I 3 . Let x 1 , x 2 F 3 n such that ( x 1 , x 2 ) = 0 and ( x i , x i ) = 2 for each i = 1 , 2 . For 1 i m , let u i = ( x 1 , r i ) and v i = ( x 2 , r i ) . Then the code C , with the generator matrix
G = a 0 0 0 a x 1 0 a 0 0 a x 2 0 0 b 0 b ( x 1 + x 2 ) 0 0 0 b b ( x 1 + 2 x 2 ) 2 u 1 2 v 1 2 u 1 + 2 v 1 2 u 1 + v 1 r 1 2 u m 2 v m 2 u m + 2 v m 2 u m + v m r m ,
is self-dual of length n + 4 .
Proof. 
We can show that G generates a self-orthogonal code C in a similar way as in Theorem 7. Indeed, define C 0 ^ to be the span of the last m generators. Furthermore, define D as the F 3 -span of v 1 , v 2 , v 3 , v 4 , where v 1 = ( 1 , 0 , 0 , 0 , x 1 ) , v 2 = ( 0 , 1 , 0 , 0 , x 2 ) , v 3 = ( 0 , 0 , 1 , 0 , ( x 1 + x 2 ) ) , and v 4 = ( 0 , 0 , 0 , 1 , ( x 1 + 2 x 2 ) ) . It can be seen that the construction of t o r ( C ) in the theorem is equivalent to
t o r ( C ) = D + t o r ( C ^ 0 ) .
As C 0 is self-dual, by Theorem 8 we can see that t o r ( C 0 ) is equal to F 3 n . Through this hypothesis, we have a ratio of 3 4 on the sizes, because D = 3 4 , and t o r ( C ) = F 3 n + 4 .
Now, it suffices to show that r e s ( C ) is a self-dual ternary code. Since C is self-orthogonal, we can see that r e s ( C ) is also self-orthogonal and thus, r e s ( C ) r e s ( C ) .
Note that C 0 = 3 3 n 2 by Theorem 8 and because G has four more generators, this shows that C = 3 2 9 2 C 0 = 3 3 ( n + 4 ) 2 . Thus, r e s ( C ) = r e s ( C ) = 3 n + 4 2 and hence, r e s ( C ) is a self-dual ternary code.
Therefore, C = a r e s ( C ) + b F 3 n + 4 and the code C obtained from the self-dual code C 0 by the build-up construction is also self-dual. □
Theorem 10.
Two self-dual codes C 1 and C 2 over I 3 are monomially equivalent if and only if their residue codes are equivalent.
Proof. 
Let C 1 and C 2 be two monomially equivalent codes over I 3 . Then r e s ( C 1 ) and r e s ( C 2 ) are equivalent since a r e s ( C 1 ) C 1 and a r e s ( C 2 ) C 2 .
Conversely, if C 1 and C 2 are self-dual codes over I 3 , and r e s ( C 1 ) and r e s ( C 2 ) are monomially equivalent, then there is a monomial matrix M such that r e s ( C 2 ) = r e s ( C 1 ) M and F 3 n = F 3 n M . Since C 1 and C 2 are self-dual, by Theorem 8 we have
C 2 = a r e s ( C 2 ) + b F 3 n = a r e s ( C 1 ) M + b F 3 n M = C 1 M .
From (1), we get C 2 = C 1 M , proving that C 1 and C 2 are monomially equivalent. □

4. Computational Results

In this section, we classify self-orthogonal, quasi self-dual and self-dual I 3 codes of length n 5 and residue dimensions k 0 = 0 , 1 , 2 using the multilevel constructions in Theorems 3, 5 and 8. All computations were done with the aid of MAGMA [15].

4.1. Length 1

There is one quasi self-dual code over I 3 of type 0 , 1 , with generator matrix ( b ) and weight distribution [ 1 , 2 ] .

4.2. Length 2

There is one quasi self-dual code over I 3 of type 0 , 2 , with generator matrix
b 0 0 b
and weight distribution [ 1 , 4 , 4 ] .

4.3. Length 3

  • For type 0 , 3 , there is one quasi self-dual code over I 3 , with generator matrix
    b 0 0 0 b 0 0 0 b
    and weight distribution [ 1 , 6 , 12 , 8 ] .
  • For type 1 , 0 , there are four distinct self-orthogonal codes over I 3 , with generator matrices in the following table:
    Generator A u t ( C ) WeightGenerator A u t ( C ) Weight
    Matrix DistributionMatrix Distribution
    a a a 12 [ 1 , 0 , 0 , 8 ] c a a 4 [ 1 , 0 , 0 , 8 ]
    g a a 4 [ 1 , 0 , 0 , 8 ] a c g 6 [ 1 , 0 , 0 , 8 ]
    For length 3 and type 1 , 0 , we have
    1 4 1 A u t ( C ) = 1 12 + 1 4 + 1 4 + 1 6 = 0.75 = N S O ( n , k 1 , k 2 ) 2 n n ! .
  • For type 1 , 1 , there are five distinct quasi self-dual codes over I 3 , with generator matrices in the following table:
    Generator A u t ( C ) WeightGenerator A u t ( C ) Weight
    Matrix DistributionMatrix Distribution
    a a a 0 0 b 4 [ 1 , 2 , 2 , 22 ] c a a 0 0 b 2 [ 1 , 2 , 2 , 22 ]
    a a a 0 b d 12 [ 1 , 0 , 6 , 20 ] c a a 0 b d 12 [ 1 , 0 , 6 , 20 ]
    g a a 0 b d 12 [ 1 , 0 , 6 , 20 ]
    For length 3 and type 1 , 1 , we have
    1 5 1 A u t ( C ) = 1 4 + 1 2 + 1 12 + 1 12 + 1 12 = 1 = N Q S D ( n , k 1 , k 2 ) 2 n n ! .

4.4. Length 4

  • For type 0 , 4 , there is one quasi self-dual code over I 3 , with generator matrix
    b 0 0 0 0 b 0 0 0 0 b 0 0 0 0 b
    and weight distribution [ 1 , 8 , 24 , 32 , 16 ] .
  • For type 1 , 0 , there are eight distinct self-orthogonal codes over I 3 , with generator matrices in the following table:
    Generator A u t ( C ) WeightGenerator A u t ( C ) Weight
    Matrix DistributionMatrix Distribution
    a 0 a a 24 [ 1 , 0 , 0 , 8 , 0 ] c 0 a a 8 [ 1 , 0 , 0 , 8 , 0 ]
    g 0 a a 8 [ 1 , 0 , 0 , 8 , 0 ] a 0 c g 12 [ 1 , 0 , 0 , 8 , 0 ]
    a b a a 4 [ 1 , 0 , 0 , 2 , 6 ] c b a a 4 [ 1 , 0 , 0 , 2 , 6 ]
    g b a a 12 [ 1 , 0 , 0 , 2 , 6 ] a b c g 6 [ 1 , 0 , 0 , 2 , 6 ]
    For length 4 and type 1 , 0 , we have
    1 8 1 A u t ( C ) = 1 24 + 1 8 + 1 8 + 1 12 + 1 4 + 1 4 + 1 6 + 1 12 = 1.125 = N S O ( n , k 1 , k 2 ) 2 n n ! .
  • For type 1 , 1 , there are 23 distinct self-orthogonal codes over I 3 , with generator matrices in the following table:
    Generator A u t ( C ) WeightGenerator A u t ( C ) Weight
    Matrix DistributionMatrix Distribution
    a 0 a a 0 b 0 0 24 [ 1 , 2 , 0 , 8 , 16 ] c 0 a a 0 b 0 0 8 [ 1 , 2 , 0 , 8 , 16 ]
    g 0 a a 0 b 0 0 8 [ 1 , 2 , 0 , 8 , 16 ] a 0 c g 0 b 0 0 12 [ 1 , 2 , 0 , 8 , 16 ]
    a 0 a a 0 b b 0 4 [ 1 , 0 , 2 , 10 , 14 ] c 0 a a 0 b b 0 2 [ 1 , 0 , 2 , 10 , 14 ]
    g 0 a a 0 b b 0 2 [ 1 , 0 , 2 , 10 , 14 ] a 0 c g 0 b b 0 2 [ 1 , 0 , 2 , 10 , 14 ]
    c 0 a a 0 b b b 4 [ 1 , 0 , 2 , 10 , 14 ] g 0 a a 0 b b b 4 [ 1 , 0 , 2 , 10 , 14 ]
    a 0 a a 0 0 b d 24 [ 1 , 0 , 6 , 20 , 0 ] c 0 a a 0 0 b d 24 [ 1 , 0 , 6 , 20 , 0 ]
    g 0 a a 0 0 b d 24 [ 1 , 0 , 6 , 20 , 0 ] a 0 c g 0 0 b d 24 [ 1 , 0 , 6 , 20 , 0 ]
    a 0 a a 0 b b d 12 [ 1 , 0 , 0 , 14 , 12 ] c 0 a a 0 b b d 4 [ 1 , 0 , 0 , 14 , 12 ]
    g 0 a a 0 b b d 4 [ 1 , 0 , 0 , 14 , 12 ] a 0 c g 0 b b d 6 [ 1 , 0 , 0 , 14 , 12 ]
    a 0 a a 0 0 b 0 8 [ 1 , 2 , 2 , 22 , 0 ] c 0 a a 0 0 b 0 4 [ 1 , 2 , 2 , 22 , 0 ]
    a 0 a a 0 0 b 0 8 [ 1 , 2 , 2 , 22 , 0 ] a b a a 0 0 b 0 4 [ 1 , 2 , 2 , 4 , 18 ]
    c b a a 0 0 b 0 2 [ 1 , 2 , 2 , 4 , 18 ]
    For length 4 and type 1 , 1 , we have
    1 23 1 A u t ( C ) = 4.7 = N S O ( n , k 1 , k 2 ) 2 n n ! .
  • For type 1 , 2 , there are 10 distinct quasi self-dual codes over I 3 , with generator matrices in the following table:
    Generator A u t ( C ) WeightGenerator A u t ( C ) Weight
    Matrix DistributionMatrix Distribution
    a 0 a a 0 b 0 0 0 0 b 0 8 [ 1 , 4 , 6 , 26 , 44 ] c 0 a a 0 b 0 0 0 0 b 0 4 [ 1 , 4 , 6 , 26 , 44 ]
    a 0 a a 0 b 0 b 0 0 b b 4 [ 1 , 4 , 6 , 26 , 44 ] a 0 a c 0 b 0 b 0 0 b b 2 [ 1 , 2 , 6 , 32 , 40 ]
    a 0 a a 0 b 0 0 0 0 b d 24 [ 1 , 2 , 6 , 32 , 40 ] c 0 a a 0 b 0 0 0 0 b d 24 [ 1 , 2 , 6 , 32 , 40 ]
    g 0 a a 0 b 0 0 0 0 b d 24 [ 1 , 2 , 6 , 32 , 40 ] a 0 a a 0 b 0 b 0 0 b d 12 [ 1 , 0 , 12 , 26 , 42 ]
    c 0 a a 0 b 0 b 0 0 b d 12 [ 1 , 0 , 12 , 26 , 42 ] g 0 a a 0 b 0 b 0 0 b d 12 [ 1 , 0 , 12 , 26 , 42 ]
    For length 4 and type 1 , 2 , we have
    C 1 A u t ( C ) = 1.5 < N Q S D ( n , k 1 , k 2 ) 2 n n ! = 1.6 ,
    where the summation runs over the representatives of the equivalence classes of codes constructed by our propagation rules.
  • For type 2 , 0 , there are nine quasi self-dual codes over I 3 , with generator matrices in the following table.
    Generator A u t ( C ) WeightGenerator A u t ( C ) Weight
    Matrix DistributionMatrix Distribution
    a 0 a a 0 a a e 48 [ 1 , 0 , 0 , 32 , 48 ] c 0 a a 0 a a e 12 [ 1 , 0 , 0 , 32 , 48 ]
    g 0 a a 0 a a e 12 [ 1 , 0 , 0 , 32 , 48 ] a 0 a a 0 a a h 2 [ 1 , 0 , 0 , 32 , 48 ]
    a 0 c a 0 c a e 6 [ 1 , 0 , 0 , 32 , 48 ] a 0 g a 0 g a e 6 [ 1 , 0 , 0 , 32 , 48 ]
    a 0 c a 0 g a e 4 [ 1 , 0 , 0 , 32 , 48 ] a 0 c c 0 c a e 4 [ 1 , 0 , 0 , 32 , 48 ]
    c 0 g c 0 c c e 8 [ 1 , 0 , 0 , 32 , 48 ]
    For length 4 and type 2 , 0 , we have
    1 9 1 A u t ( C ) = 1.6 = N Q S D ( n , k 1 , k 2 ) 2 n n ! .
  • For type 2 , 2 , there is an unique self-dual code over I 3 , with generator matrix:
    Generator Matrix A u t ( C ) Weight Distribution
    a 0 a a 0 a a e 0 0 b 0 0 0 0 b 48 [ 1 , 8 , 24 , 248 , 448 ] .
    For length 4 and type 2 , 2 , we have
    1 A u t ( C ) = 1 48 = N S D ( n , k 1 , k 2 ) 2 n n ! .

4.5. Length 5

  • For type 0 , 4 , there are five distinct self-orthogonal codes over I 3 , with generator matrices in the following table.
    Generator A u t ( C ) WeightGenerator A u t ( C ) Weight
    Matrix DistributionMatrix Distribution
    b 0 b 0 b 0 b 0 b 0 0 0 b 0 b 0 0 0 b 0 192 [ 1 , 6 , 14 , 20 , 24 , 16 ] b d b b 0 0 b d b b 0 0 b d b b 0 b 0 b 240 [ 1 , 0 , 20 , 20 , 30 , 10 ]
    d 0 0 b 0 0 0 b b 0 0 b 0 0 b b 0 0 d b 96 [ 1 , 4 , 10 , 26 , 32 , 8 ] b 0 0 0 0 0 b 0 0 0 0 0 b 0 0 0 0 0 b 0 768 [ 1 , 8 , 24 , 32 , 16 , 0 ]
    b 0 0 b 0 0 0 b 0 0 0 0 d 0 b 0 0 0 0 b 64 [ 1 , 4 , 6 , 8 , 8 , 0 ]
    For length 5 and type 0 , 4 , we have
    1 5 1 A u t ( C ) = 0.03 = N S O ( n , k 1 , k 2 ) 2 n n ! .
  • For type 0 , 5 , there is one quasi self-dual code over I 3 , with generator matrix
    b 0 0 0 0 0 b 0 0 0 0 0 b 0 0 0 0 0 b 0 0 0 0 0 b
    and weight distribution [ 1 , 10 , 40 , 80 , 80 , 32 ] .
  • For type 1 , 0 , there are 12 distinct self-orthogonal codes over I 3 , with generator matrices in the following table:
    Generator A u t ( C ) WeightGenerator A u t ( C ) Weight
    Matrix DistributionMatrix Distribution
    a 0 0 a a 96 [ 1 , 0 , 0 , 8 , 0 , 0 ] c 0 0 a a 32 [ 1 , 0 , 0 , 8 , 0 , 0 ]
    g 0 0 a a 32 [ 1 , 0 , 0 , 8 , 0 , 0 ] a 0 0 c g 48 [ 1 , 0 , 0 , 8 , 0 , 0 ]
    a b 0 a a 24 [ 1 , 0 , 0 , 2 , 6 , 0 ] c b 0 a a 8 [ 1 , 0 , 0 , 2 , 6 , 0 ]
    g b 0 a a 8 [ 1 , 0 , 0 , 2 , 6 , 0 ] a b 0 c g 12 [ 1 , 0 , 0 , 2 , 6 , 0 ]
    a b b a a 24 [ 1 , 0 , 0 , 2 , 0 , 6 ] c b b a a 8 [ 1 , 0 , 0 , 2 , 0 , 6 ]
    a b b c g 12 [ 1 , 0 , 0 , 2 , 0 , 6 ] g b b a a 8 [ 1 , 0 , 0 , 2 , 0 , 6 ]
    For length 5 and type 1 , 0 , we have
    1 12 1 A u t ( C ) = 0.84 = N S O ( n , k 1 , k 2 ) 2 n n ! .
  • For type 1 , 3 , there are 15 quasi self-dual codes over I 3 , with generator matrices in the following table:
    Generator A u t ( C ) WeightGenerator A u t ( C ) Weight
    Matrix DistributionMatrix Distribution
    a 0 0 a a 0 b 0 0 0 0 0 b 0 0 0 0 0 b b 32 [ 1 , 6 , 14 , 38 , 96 , 88 ] c 0 0 a a 0 b 0 0 0 0 0 b 0 0 0 0 0 b b 16 [ 1 , 6 , 14 , 38 , 96 , 88 ]
    a 0 0 a a 0 b 0 0 b 0 0 b 0 b 0 0 0 b b 8 [ 1 , 2 , 12 , 50 , 94 , 84 ] a 0 0 a c 0 b 0 0 b 0 0 b 0 b 0 0 0 b b 4 [ 1 , 2 , 12 , 50 , 94 , 84 ]
    a 0 0 a a 0 b 0 0 0 0 0 b 0 b 0 0 0 b b 8 [ 1 , 4 , 10 , 44 , 104 , 80 ] a 0 0 a c 0 b 0 0 0 0 0 b 0 b 0 0 0 b b 4 [ 1 , 4 , 10 , 44 , 104 , 80 ]
    a 0 0 a a 0 b 0 0 0 0 0 b 0 0 0 0 0 b d 96 [ 1 , 4 , 10 , 44 , 104 , 80 ] c 0 0 a a 0 b 0 0 0 0 0 b 0 0 0 0 0 b d 96 [ 1 , 4 , 10 , 44 , 104 , 80 ]
    g 0 0 a a 0 b 0 0 0 0 0 b 0 0 0 0 0 b d 96 [ 1 , 4 , 10 , 44 , 104 , 80 ] a 0 0 a a 0 b 0 0 d 0 0 b 0 b 0 0 0 b d 24 [ 1 , 0 , 20 , 38 , 102 , 82 ]
    c 0 0 a a 0 b 0 0 d 0 0 b 0 b 0 0 0 b d 24 [ 1 , 0 , 20 , 38 , 102 , 82 ] g 0 0 a a 0 b 0 0 d 0 0 b 0 b 0 0 0 b d 24 [ 1 , 0 , 20 , 38 , 102 , 82 ]
    a 0 0 a a 0 b 0 0 0 0 0 b 0 d 0 0 0 b d 24 [ 1 , 2 , 12 , 50 , 94 , 84 ] c 0 0 a a 0 b 0 0 0 0 0 b 0 d 0 0 0 b d 24 [ 1 , 2 , 12 , 50 , 94 , 84 ]
    g 0 0 a a 0 b 0 0 0 0 0 b 0 d 0 0 0 b d 24 [ 1 , 2 , 12 , 50 , 94 , 84 ]
    For length 5 and type 1 , 3 , we have
    C 1 A u t ( C ) = 1.125 N Q S O ( n , k 1 , k 2 ) 2 n n ! = 1.2 ,
    where the summation bears on representatives of the equivalence classes of codes constructed by our propagation rules.
Next, we use our build-up construction methods to obtain SO, QSD and SD codes over I 3 . The partial classification results are summarized in Table 3 below.

5. Conclusions

In this study, we have derived and used propagation rules over a non-unital ring of order 9 to generate self-orthogonal, self-dual and quasi self-dual codes. Combining this generating technique with mass formulas, we have classified the three categories of codes above completely in length at most 3 , and partially in length 4 and 5 up to monomial equivalence. Mass formula computations show that some codes in each category exist in lengths n = 4 , 5 that cannot be constructed by the propagation rules we derived. It is a challenging open problem to complete the classification in these cases, either by deriving alternative propagation rules or by employing some other construction technique.

Author Contributions

Conceptualization, A.A. and P.S.; methodology, A.A. and P.S. validation, A.A., T.A., R.A.B., L.G. and P.S.; investigation, A.A., T.A., R.A.B., L.G. and P.S.; writing—original draft preparation, A.A., T.A. and P.S.; writing—review and editing, R.A.B. and L.G. All authors have read and agreed to the published version of the manuscript.

Funding

The Deanship of Scientific Research (DSR) at King Abdulaziz University (KAU), Jeddah, Saudi Arabia funded this project, under grant no. (KEP-PhD: 100-130-1443).

Data Availability Statement

Data are available upon request to the corresponding author.

Acknowledgments

The Deanship of Scientific Research (DSR) at King Abdulaziz University (KAU), Jeddah, Saudi Arabia funded this project, under grant no. (KEP-PhD: 100-130-1443). The authors acknowledge the anonymous reviewers for their comments and suggestions to improve the presentation of this manuscript.

Conflicts of Interest

The authors declare no conflicts of interest.

References

  1. Han, S.; Lee, H.; Lee, Y. Construction of self-dual codes over F 2 + μ F 2 . Bull. Korean Math. Soc. 2012, 49, 135–143. [Google Scholar] [CrossRef]
  2. Kim, J.-L.; Lee, Y. Euclidean and hermitian self-dual MDS codes over large finite fields. J. Comb. Theory Ser. 2004, 105, 79–95. [Google Scholar] [CrossRef]
  3. Kim, J.-L.; Lee, Y. An efficient construction of self-dual codes. Bull. Korean Math. Soc. 2015, 52, 915–923. [Google Scholar] [CrossRef]
  4. Aguilar-Melchor, C.; Gaborit, P.; Kim, J.; Sok, L.; Solé, P. Classification of extremal and s-extremal binary self-dual codes of length 38. IEEE Trans. Inf. Theory 2012, 58, 2253–2262. [Google Scholar] [CrossRef]
  5. Kim, J.-L.; Roe, Y.G. Construction of quasi self-dual codes over a commutative non-unital ring of order 4. In Applicable Algebra in Engineering, Communication and Computing; Springer: Berlin/Heidelberg, Germany, 2022. [Google Scholar] [CrossRef]
  6. Alahmadi, A.; Alkathiry, A.; Altassan, A.; Bonnecaze, A.; Shoaib, H.; Solé, P. The build-up construction over a commutative non-unital ring. Des. Codes Cryptogr. 2022, 90, 3003–3010. [Google Scholar] [CrossRef]
  7. Alahmadi, A.; Altassan, A.; Basaffar, W.; Bonnecaze, A.; Shoaib, H.; Solé, P. Quasi type IV codes over a non-unital ring. Appl. Algebra Eng. Commun. Comput. 2021, 32, 217–228. [Google Scholar] [CrossRef]
  8. Fine, B. Classification of finite rings of order p2. Math. Mag. 1993, 66, 248–252. [Google Scholar] [CrossRef]
  9. Kim, K.H.; Park, Y.H. The mass formula of self-orthogonal codes over GF(q). Korean J. Math. 2017, 25, 201–209. [Google Scholar]
  10. Pless, V. Number of isotropic subspaces in a finite geometry. In Atti della Accademia Nazionale dei Lincei Rendiconti-Classe di Scienze Fisiche-Matematiche & Naturali; Accad Nationale Lincei Ufficio Pubblicazioni: Via Della Lungara 10, Rome, Italy, 1965; Volume 39, pp. 418–421. [Google Scholar]
  11. Pless, V. On the uniqueness of the Golay codes. J. Comb. Theory 1968, 5, 215–228. [Google Scholar] [CrossRef]
  12. Alahmadi, A.; Alshuhail, A.; Solé, P. The mass formula for self-orthogonal and self-dual codes over a non-unitary commutative ring. AIMS Math. 2023, 8, 24367–24378. [Google Scholar] [CrossRef]
  13. Alahmadi, A.; Melaibari, A.; Solé, P. Duality of codes over non-unital rings of order four. IEEE Access 2023, 11, 53120–53133. [Google Scholar] [CrossRef]
  14. Mallows, C.; Pless, V.; Sloane, N.J. Self-dual codes over GF(3). Appl. Math. 1976, 31, 649–666. [Google Scholar] [CrossRef]
  15. Bosma, W.; Cannon, J.; Playoust, C. The Magma algebra system. I. The user language. J. Symb. Comput. 1997, 24, 235–265. [Google Scholar] [CrossRef]
Table 1. Addition table for the ring I 3 .
Table 1. Addition table for the ring I 3 .
+0abcdefgh
00abcdefgh
aaecfg0bhd
bbcdg0fhae
ccfghabde0
ddg0abhecf
ee0fbhacdg
ffbhdecg0a
gghaecd0fb
hhde0fgabc
Table 2. Multiplication table for the ring I 3 .
Table 2. Multiplication table for the ring I 3 .
×0abcdefgh
0000000000
a0b0b0ddbd
b000000000
c0b0b0ddbd
d000000000
e0d0d0bbdb
f0d0d0bbdb
g0b0b0ddbd
h0d0d0bbdb
Table 3. Classification of SO, QSD and SD codes using the building method in Section 3.
Table 3. Classification of SO, QSD and SD codes using the building method in Section 3.
nCodeConstructionLength of
Constructed
Code
x d ( C ) Weight
Distribution
1 ( b ) Theorem 44 ( 1 ) 1 [ 1 , 2 , 0 , 8 , 16 ]
Theorem 6 ( 2 ) 1 [ 1 , 8 , 24 , 32 , 16 ]
2 b 0 0 b Theorem 45 ( 10 ) 1 [ 1 , 4 , 4 , 8 , 32 , 32 ]
Theorem 65 ( 02 ) 1 [ 1 , 10 , 40 , 80 , 80 , 32 ]
Theorem 76 ( 11 ) , ( 12 ) 1 [ 1 , 4 , 4 , 32 , 176 , 320 , 192 ]
Corollary 45 ( 12 ) 1 [ 1 , 6 , 14 , 38 , 96 , 88 ]
3 b 0 0 0 b 0 0 0 b Theorem 46 ( 002 ) 1 [ 1 , 12 , 60 , 160 , 240 , 192 , 64 ]
Corollary 46 ( 100 ) 1 [ 1 , 8 , 26 , 66 , 172 , 280 , 176 ]
Theorem 66 ( 112 ) 1 [ 1 , 12 , 60 , 160 , 240 , 192 , 64 ]
Theorem 77 ( 202 ) , ( 102 ) 1 [ 1 , 6 , 12 , 40 , 240 , 672 , 832 , 384 ]
a a a Theorem 46 ( 010 ) 2 [ 1 , 0 , 2 , 20 , 30 , 28 , 162 ]
( 002 ) 3 [ 1 , 0 , 0 , 16 , 0 , 0 , 64 ]
Corollary 46 ( 100 ) 2 [ 1 , 0 , 2 , 20 , 30 , 28 , 162 ]
c a a Theorem 46 ( 010 ) 2 [ 1 , 0 , 2 , 20 , 30 , 28 , 162 ]
( 002 ) 3 [ 1 , 0 , 0 , 16 , 0 , 0 , 64 ]
Corollary 46 ( 100 ) 2 [ 1 , 0 , 2 , 20 , 30 , 28 , 162 ]
g a a Theorem 46 ( 010 ) 2 [ 1 , 0 , 2 , 20 , 30 , 28 , 162 ]
( 002 ) 3 [ 1 , 0 , 0 , 16 , 0 , 0 , 64 ]
Corollary 46 ( 100 ) 2 [ 1 , 0 , 2 , 20 , 30 , 28 , 162 ]
a c g Theorem 46 ( 100 ) 2 [ 1 , 0 , 2 , 20 , 30 , 28 , 162 ]
( 002 ) 3 [ 1 , 0 , 0 , 16 , 0 , 0 , 64 ]
Corollary 46 ( 100 ) 2 [ 1 , 0 , 2 , 20 , 30 , 28 , 162 ]
a a a 0 0 b Theorem 46 ( 010 ) 1 [ 1 , 2 , 2 , 30 , 16 , 16 , 176 ]
( 200 ) 1 [ 1 , 4 , 8 , 52 , 92 , 88 , 484 ]
( 001 ) 1 [ 1 , 2 , 6 , 44 , 94 , 126 , 456 ]
Corollary 46 ( 110 ) 1 [ 1 , 4 , 8 , 52 , 92 , 88 , 484 ]
( 120 ) 1 [ 1 , 2 , 6 , 92 , 166 , 162 , 300 ]
( 011 ) 1 [ 1 , 2 , 6 , 44 , 94 , 126 , 456 ]
Theorem 66 ( 120 ) 1 [ 1 , 2 , 20 , 78 , 178 , 286 , 164 ]
( 001 ) 1 [ 1 , 8 , 26 , 48 , 64 , 518 , 0 ]
( 121 ) 1 [ 1 , 2 , 20 , 60 , 70 , 70 , 506 ]
( 111 ) 1 [ 1 , 8 , 26 , 66 , 172 , 280 , 176 ]
Theorem 77 ( 110 ) , ( 120 ) 1 [ 1 , 2 , 2 , 54 , 112 , 160 , 800 , 1056 ]
c a a 0 0 b Theorem 46 ( 010 ) 1 [ 1 , 2 , 2 , 30 , 16 , 16 , 176 ]
( 200 ) 1 [ 1 , 4 , 8 , 52 , 92 , 88 , 484 ]
( 001 ) 1 [ 1 , 2 , 6 , 44 , 94 , 126 , 456 ]
Corollary 46 ( 110 ) 1 [ 1 , 4 , 8 , 52 , 92 , 88 , 484 ]
( 120 ) 1 [ 1 , 2 , 6 , 92 , 166 , 162 , 300 ]
( 011 ) 1 [ 1 , 2 , 6 , 44 , 94 , 126 , 456 ]
Theorem 66 ( 012 ) 1 [ 1 , 2 , 20 , 78 , 178 , 286 , 164 ]
( 001 ) 1 [ 1 , 8 , 26 , 48 , 64 , 64 , 518 ]
( 121 ) 1 [ 1 , 2 , 20 , 60 , 70 , 70 , 506 ]
( 111 ) 1 [ 1 , 8 , 26 , 66 , 172 , 280 , 176 ]
Theorem 77 ( 110 ) , ( 120 ) 1 [ 1 , 2 , 2 , 54 , 112 , 160 , 800 , 1056 ]
( 102 ) , ( 101 ) 1 [ 1 , 2 , 6 , 44 , 94 , 126 , 0 , 456 ]
a a a 0 b d Theorem 46 ( 010 ) 1 [ 1 , 2 , 2 , 30 , 16 , 16 , 176 ]
( 200 ) 1 [ 1 , 4 , 8 , 52 , 92 , 88 , 484 ]
( 001 ) 1 [ 1 , 2 , 6 , 44 , 94 , 126 , 456 ]
a a a 0 b d Theorem 66 ( 111 ) 1 [ 1 , 6 , 18 , 64 , 192 , 288 , 160 ]
( 011 ) 2 [ 1 , 0 , 30 , 40 , 90 , 60 , 508 ]
Corollary 46 ( 011 ) 2 [ 1 , 0 , 12 , 40 , 90 , 132 , 454 ]
( 012 ) 1 [ 1 , 2 , 8 , 90 , 160 , 172 , 296 ]
Theorem 77 ( 110 ) , ( 120 ) 2 [ 1 , 0 , 6 , 52 , 48 , 192 , 928 , 960 ]
c a a 0 b d Theorem 46 ( 110 ) 1 [ 1 , 2 , 2 , 30 , 16 , 16 , 176 ]
( 100 ) 1 [ 1 , 4 , 8 , 52 , 92 , 88 , 484 ]
Theorem 66 ( 111 ) 1 [ 1 , 6 , 18 , 64 , 192 , 288 , 160 ]
Corollary 46 ( 011 ) 2 [ 1 , 0 , 12 , 40 , 90 , 132 , 454 ]
( 012 ) 1 [ 1 , 2 , 8 , 90 , 160 , 172 , 296 ]
Theorem 77 ( 101 ) , ( 102 ) 2 [ 1 , 0 , 6 , 52 , 48 , 192 , 928 , 960 ]
g a a 0 b d Theorem 46 ( 100 ) 1 [ 1 , 2 , 8 , 54 , 52 , 172 , 440 ]
( 020 ) 2 [ 1 , 0 , 6 , 28 , 0 , 48 , 160 ]
( 002 ) 2 [ 1 , 0 , 12 , 40 , 90 , 132 , 454 ]
Theorem 66 ( 111 ) 1 [ 1 , 6 , 18 , 64 , 192 , 288 , 160 ]
( 011 ) 2 [ 1 , 0 , 30 , 40 , 90 , 60 , 508 ]
Corollary 46 ( 011 ) 2 [ 1 , 0 , 12 , 40 , 90 , 132 , 454 ]
( 012 ) 1 [ 1 , 2 , 8 , 90 , 160 , 172 , 296 ]
4 b 0 0 0 0 b 0 0 0 0 b 0 0 0 0 b Theorem 47 ( 0100 ) 1 [ 1 , 8 , 24 , 40 , 80 , 192 , 256 , 128 ]
Corollary 47 ( 0110 ) 1 [ 1 , 4 , 12 , 52 , 124 , 168 , 208 , 160 ]
Theorem 67 ( 0100 ) 1 [ 1 , 14 , 84 , 280 , 560 , 672 , 448 , 128 ]
Theorem 78 ( 0110 ) , ( 1001 ) 1 [ 1 , 8 , 24 , 64 , 320 , 1152 , 2176 , 2048 , 768 ]
a 0 a a Theorem 47 ( 1000 ) 3 [ 1 , 0 , 0 , 16 , 0 , 0 , 64 , 0 ]
( 1122 ) 4 [ 1 , 0 , 0 , 0 , 8 , 8 , 16 , 48 ]
( 1212 ) 3 [ 1 , 0 , 0 , 8 , 0 , 0 , 24 , 48 ]
Corollary 47 ( 1100 ) 2 [ 1 , 0 , 2 , 6 , 16 , 16 , 68 , 134 ]
( 1000 ) 2 [ 1 , 0 , 2 , 20 , 30 , 28 , 162 , 0 ]
( 1212 ) 2 [ 1 , 0 , 2 , 10 , 16 , 4 , 76 , 134 ]
( 1122 ) 2 [ 1 , 0 , 2 , 3 , 10 , 40 , 54 , 134 ]
c 0 a a Theorem 47 ( 1000 ) 3 [ 1 , 0 , 0 , 16 , 0 , 0 , 64 , 0 ]
( 1121 ) 3 [ 1 , 0 , 0 , 8 , 0 , 0 , 24 , 48 ]
Corollary 47 ( 1100 ) 2 [ 1 , 0 , 2 , 6 , 16 , 16 , 68 , 134 ]
( 1000 ) 2 [ 1 , 0 , 2 , 20 , 30 , 28 , 162 , 0 ]
( 1122 ) 2 [ 1 , 0 , 2 , 10 , 16 , 4 , 76 , 134 ]
g 0 a a Theorem 47 ( 1000 ) 3 [ 1 , 0 , 0 , 16 , 0 , 0 , 64 , 0 ]
( 1122 ) 3 [ 1 , 0 , 0 , 2 , 0 , 12 , 24 , 42 ]
( 1212 ) 3 [ 1 , 0 , 0 , 2 , 6 , 0 , 30 , 42 ]
Corollary 57 ( 1100 ) 2 [ 1 , 0 , 2 , 6 , 16 , 16 , 68 , 134 ]
( 1000 ) 2 [ 1 , 0 , 2 , 20 , 30 , 28 , 162 , 0 ]
( 1122 ) 2 [ 1 , 0 , 2 , 4 , 10 , 22 , 82 , 122 ]
a b a a Theorem 47 ( 1000 ) 3 [ 1 , 0 , 0 , 10 , 6 , 0 , 16 , 48 ]
( 1122 ) 3 [ 1 , 0 , 0 , 2 , 0 , 12 , 24 , 42 ]
Corollary 47 ( 1100 ) 2 [ 1 , 0 , 2 , 6 , 16 , 16 , 68 , 134 ]
( 1000 ) 2 [ 1 , 0 , 2 , 14 , 24 , 28 , 42 , 132 ]
( 1122 ) 2 [ 1 , 0 , 2 , 4 , 10 , 22 , 82 , 122 ]
a 0 a a 0 b 0 0 Theorem 47 ( 1000 ) 1 [ 1 , 2 , 0 , 16 , 32 , 0 , 64 , 128 ]
( 1122 ) 3 [ 1 , 0 , 0 , 4 , 14 , 36 , 52 , 136 ]
( 1212 ) 3 [ 1 , 0 , 0 , 8 , 14 , 24 , 60 , 136 ]
Corollary 47 ( 1000 ) 1 [ 1 , 1 , 2 , 24 , 70 , 88 , 218 , 324 ]
( 1212 ) 2 [ 1 , 0 , 4 , 14 , 52 , 50 , 228 , 380 ]
( 1122 ) 2 [ 1 , 0 , 2 , 16 , 22 , 112 , 196 , 380 ]
a 0 a a 0 b b 0 Theorem 47 ( 1000 ) 2 [ 1 , 0 , 2 , 18 , 14 , 16 , 80 , 112 ]
( 1122 ) 2 [ 1 , 0 , 4 , 0 , 22 , 14 , 68 , 134 ]
( 1212 ) 2 [ 1 , 0 , 2 , 10 , 16 , 4 , 76 , 134 ]
Corollary 47 ( 1000 ) 2 [ 1 , 0 , 4 , 24 , 54 , 92 , 260 , 294 ]
( 1212 ) 2 [ 1 , 0 , 6 , 14 , 44 , 54 , 234 , 376 ]
( 1122 ) 2 [ 1 , 0 , 8 , 6 , 32 , 82 , 236 , 364 ]
( 1100 ) 2 [ 1 , 0 , 4 , 18 , 42 , 74 , 194 , 396 ]
( 0012 ) 2 [ 1 , 0 , 2 , 42 , 110 , 160 , 218 , 196 ]
a 0 a a 0 b b d Theorem 47 ( 1000 ) 3 [ 1 , 0 , 0 , 22 , 12 , 0 , 112 , 96 ]
( 1122 ) 3 [ 1 , 0 , 0 , 4 , 12 , 24 , 82 , 120 ]
( 1212 ) 3 [ 1 , 0 , 0 , 16 , 12 , 0 , 82 , 132 ]
Corollary 47 ( 1000 ) 2 [ 1 , 0 , 2 , 30 , 50 , 88 , 266 , 292 ]
( 1212 ) 2 [ 1 , 0 , 2 , 10 , 28 , 76 , 274 , 338 ]
( 1122 ) 2 [ 1 , 0 , 2 , 24 , 38 , 52 , 236 , 376 ]
( 1100 ) 2 [ 1 , 0 , 2 , 12 , 26 , 106 , 212 , 370 ]
a b a a 0 0 b 0 Theorem 47 ( 1000 ) 1 [ 1 , 2 , 2 , 12 , 34 , 16 , 32 , 144 ]
( 1122 ) 2 [ 1 , 0 , 2 , 4 , 10 , 22 , 82 , 122 ]
( 1212 ) 2 [ 1 , 0 , 2 , 10 , 16 , 4 , 76 , 134 ]
( 1100 ) 1 [ 1 , 2 , 0 , 2 , 12 , 36 , 54 , 136 ]
Corollary 47 ( 1000 ) 1 [ 1 , 2 , 6 , 26 , 76 , 126 , 96 , 396 ]
( 1122 ) 2 [ 1 , 0 , 2 , 10 , 40 , 76 , 238 , 362 ]
( 1212 ) 2 [ 1 , 0 , 4 , 18 , 42 , 56 , 230 , 378 ]
( 1122 ) 2 [ 1 , 0 , 2 , 12 , 30 , 74 , 254 , 354 ]
( 1100 ) 1 [ 1 , 2 , 2 , 8 , 26 , 100 , 228 , 362 ]
a 0 a a 0 b 0 0 0 0 b 0 Theorem 47 ( 1000 ) 1 [ 1 , 4 , 6 , 34 , 76 , 48 , 208 , 352 ]
( 1122 ) 2 [ 1 , 0 , 4 , 10 , 38 , 80 , 226 , 370 ]
( 1212 ) 2 [ 1 , 0 , 4 , 14 , 52 , 50 , 228 , 380 ]
Corollary 47 ( 1000 ) 1 [ 1 , 4 , 10 , 56 , 182 , 314 , 708 , 912 ]
( 1212 ) 2 [ 1 , 0 , 8 , 36 , 74 , 244 , 800 , 1024 ]
( 1122 ) 2 [ 1 , 0 , 10 , 32 , 124 , 206 , 732 , 1082 ]
Theorem 67 ( 1000 ) 1 [ 1 , 4 , 6 , 34 , 76 , 48 , 208 , 352 ]
( 2112 ) 2 [ 1 , 0 , 2 , 4 , 10 , 22 , 82 , 122 ]
( 2222 ) 1 [ 1 , 2 , 2 , 18 , 58 , 106 , 242 , 300 ]
a 0 a a 0 b 0 0 0 0 b 0 Theorem 78 ( 0110 ) , ( 1001 ) 1 [ 1 , 4 , 10 , 52 , 136 , 322 , 1324 , 2776 , 1936 ]
( 0110 ) , ( 0120 ) 1 [ 1 , 4 , 6 , 58 , 220 , 384 , 1120 , 2656 , 2112 ]
( 1020 ) , ( 0102 ) 1 [ 1 , 2 , 28 , 98 , 174 , 970 , 2816 , 0 , 2472 ]
( 0202 ) , ( 1010 ) 1 [ 1 , 2 , 46 , 170 , 354 , 1276 , 2744 , 1968 , 0 ]
(1002), ( 0110 ) 2 [ 1 , 0 , 14 , 40 , 60 , 320 , 958 , 2424 , 2744 ]
( 2001 ) , ( 0210 ) 2 [ 1 , 0 , 8 , 46 , 66 , 356 , 1006 , 2202 , 2876 ]
a 0 a a 0 b 0 b 0 0 b b Theorem 47 ( 1000 ) 1 [ 1 , 2 , 6 , 40 , 56 , 48 , 256 , 320 ]
( 1122 ) 1 [ 1 , 2 , 4 , 8 , 30 , 86 , 234 , 364 ]
( 1212 ) 2 [ 1 , 0 , 2 , 24 , 38 , 52 , 236 , 376 ]
( 1112 ) 1 [ 1 , 2 , 6 , 34 , 44 , 12 , 226 , 404 ]
Corollary 47 ( 1000 ) 1 [ 1 , 4 , 12 , 70 , 160 , 276 , 784 , 880 ]
( 1212 ) 1 [ 1 , 2 , 12 , 28 , 62 , 258 , 808 , 1016 ]
( 1122 ) 2 [ 1 , 0 , 6 , 46 , 108 , 210 , 736 , 1080 ]
( 1112 ) 1 [ 1 , 4 , 12 , 52 , 124 , 168 , 694 , 1132 ]
Theorem 67(2000)1 [ 1 , 8 , 30 , 82 , 176 , 240 , 646 , 1004 ]
( 2121 ) 2 [ 1 , 2 , 30 , 100 , 170 , 240 , 628 , 1016 ]
( 0021 ) 1 [ 1 , 2 , 30 , 118 , 314 , 672 , 718 , 332 ]
Theorem 78 ( 1100 ) , ( 1200 ) 1 [ 1 , 2 , 6 , 64 , 152 , 288 , 1312 , 2816 , 1920 ]
( 1100 ) , ( 0011 ) 2 [ 1 , 0 , 2 , 58 , 150 , 344 , 1318 , 2712 , 1976 ]
( 1001 ) , ( 0110 ) 1 [ 1 , 2 , 6 , 100 , 188 , 108 , 1276 , 3104 , 1776 ]
( 2001 ) , ( 0110 ) 1 [ 1 , 2 , 6 , 46 , 80 , 108 , 1006 , 2888 , 2424 ]
( 1010 ) , ( 0101 ) 2 [ 1 , 0 , 2 , 58 , 150 , 344 , 1318 , 2712 , 1976 ]
( 1010 ) , ( 0102 ) 2 [ 1 , 0 , 18 , 100 , 276 , 720 , 2338 , 3108 ]
a 0 a a 0 b 0 b 0 0 b d Theorem 47 ( 1000 ) 2 [ 1 , 0 , 12 , 34 , 42 , 96 , 208 , 336 ]
( 1122 ) 2 [ 1 , 0 , 12 , 10 , 60 , 42 , 196 , 408 ]
( 1212 ) 2 [ 1 , 0 , 6 , 16 , 36 , 66 , 226 , 378 ]
( 1112 ) 1 [ 1 , 2 , 4 , 26 , 12 , 68 , 252 , 364 ]
Corollary 47 ( 1000 ) 2 [ 1 , 0 , 20 , 54 , 170 , 322 , 710 , 910 ]
( 1212 ) 2 [ 1 , 0 , 20 , 30 , 104 , 232 , 698 , 1102 ]
( 1122 ) 2 [ 1 , 0 , 14 , 30 , 110 , 220 , 734 , 1078 ]
( 1112 ) 1 [ 1 , 4 , 8 , 42 , 96 , 190 , 794 , 1052 ]
Theorem 67(2000)2 [ 1 , 0 , 42 , 70 , 210 , 210 , 640 , 1014 ]
( 2121 ) 1 [ 1 , 6 , 24 , 106 , 342 , 660 , 712 , 336 ]
Theorem 78 ( 1100 ) , ( 1200 ) 2 [ 1 , 0 , 12 , 58 , 90 , 384 , 1408 , 2592 , 2016 ]
( 1100 ) , ( 0011 ) 2 [ 1 , 0 , 8 , 58 , 114 , 368 , 1372 , 2640 , 2000 ]
( 2001 ) , ( 0110 ) 1 [ 1 , 4 , 4 , 16 , 82 , 208 , 982 , 2776 , 2488 ]
( 1010 ) , ( 0102 ) 2 [ 1 , 0 , 18 , 82 , 168 , 252 , 1168 , 3000 , 1872 ]
a 0 a a 0 b 0 0 0 0 b d Theorem 47 ( 1000 ) 1 [ 1 , 2 , 6 , 40 , 56 , 48 , 256 , 320 ]
( 1122 ) 2 [ 1 , 0 , 2 , 16 , 34 , 76 , 232 , 368 ]
( 1212 ) 2 [ 1 , 0 , 2 , 24 , 38 , 52 , 236 , 376 ]
Corollary 47 ( 1000 ) 2 [ 1 , 2 , 12 , 64 , 170 , 312 , 718 , 908 ]
( 1212 ) 2 [ 1 , 0 , 8 , 36 , 74 , 244 , 800 , 1024 ]
( 1122 ) 2 [ 1 , 0 , 6 , 46 , 108 , 210 , 736 , 1080 ]
Theorem 67(2000)1 [ 1 , 2 , 30 , 100 , 170 , 240 , 628 , 1016 ]
( 0021 ) 1 [ 1 , 8 , 30 , 100 , 320 , 672 , 736 , 320 ]
Theorem 78 ( 1100 ) , ( 1200 ) 1 [ 1 , 2 , 6 , 64 , 152 , 288 , 1312 , 2816 , 1920 ]
( 2001 ) , ( 0110 ) 2 [ 1 , 0 , 2 , 40 , 78 , 164 , 1012 , 2784 , 2480 ]
( 1010 ) , ( 0102 ) 2 [ 1 , 0 , 10 , 40 , 192 , 412 , 1084 , 2850 , 1972 ]
a 0 a a 0 a a e Theorem 78 ( 1100 ) , ( 0011 ) 3 [ 1 , 0 , 0 , 34 , 96 , 0 , 1024 , 3072 , 2304 ]
Theorem 67(2000)1 [ 1 , 2 , 30 , 100 , 170 , 240 , 628 , 1016 ]
Theorem 47 ( 1122 ) 3 [ 1 , 0 , 0 , 40 , 48 , 0 , 256 , 384 ]
( 1212 ) 3 [ 1 , 0 , 0 , 16 , 24 , 72 , 280 , 336 ]
Corollary 47 ( 1000 ) 2 [ 1 , 0 , 2 , 48 , 122 , 196 , 734 , 1084 ]
( 1212 ) 2 [ 1 , 0 , 4 , 20 , 70 , 230 , 924 , 938 ]
( 1122 ) 2 [ 1 , 0 , 2 , 48 , 122 , 196 , 734 , 1084 ]
a 0 a a 0 a a e 0 0 b 0 0 0 0 b Theorem 98 ( 1100 ) , ( 0011 ) 1 [ 1 , 16 , 112 , 880 , 5440 , 1907 , 83008 , 222208 , 200704 ]
Theorem 47 ( 1122 ) 1 [ 1 , 4 , 10 , 68 , 296 , 872 , 2118 , 3192 ]
( 1212 ) 1 [ 1 , 4 , 12 , 124 , 376 , 600 , 2188 , 3256 ]
( 1000 ) 1 [ 1 , 8 , 24 , 256 , 512 , 192 , 1984 , 3584 ]
Corollary 47 ( 1000 ) 1 [ 1 , 10 , 42 , 334 , 1168 , 1920 , 6352 , 9856 ]
( 1212 ) 1 [ 1 , 6 , 24 , 124 , 648 , 2550 , 7606 , 8724 ]
( 1122 ) 1 [ 1 , 4 , 24 , 190 , 910 , 2370 , 6928 , 9256 ]
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Share and Cite

MDPI and ACS Style

Alahmadi, A.; Alihia, T.; Alma Betty, R.; Galvez, L.; Solé, P. The Build-Up Construction for Codes over a Commutative Non-Unitary Ring of Order 9. Mathematics 2024, 12, 860. https://doi.org/10.3390/math12060860

AMA Style

Alahmadi A, Alihia T, Alma Betty R, Galvez L, Solé P. The Build-Up Construction for Codes over a Commutative Non-Unitary Ring of Order 9. Mathematics. 2024; 12(6):860. https://doi.org/10.3390/math12060860

Chicago/Turabian Style

Alahmadi, Adel, Tamador Alihia, Rowena Alma Betty, Lucky Galvez, and Patrick Solé. 2024. "The Build-Up Construction for Codes over a Commutative Non-Unitary Ring of Order 9" Mathematics 12, no. 6: 860. https://doi.org/10.3390/math12060860

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop