# The build-up Construction of Symplectic Quasi Self-dual Codes over Certain Non-unitary Rings

Altaf Alshuhail, Sarra Manseri, Patrick Solé

► To cite this version:

Altaf Alshuhail, Sarra Manseri, Patrick Solé. The build-up Construction of Symplectic Quasi Self-dual Codes over Certain Non-unitary Rings. 2025. hal-05284013

HAL Id: hal-05284013

https://hal.science/hal-05284013v1

Preprint submitted on 26 Sep 2025

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
Article

# The build-up Construction of Symplectic Quasi Self-dual Codes over Certain Non-unitary Rings

Altaf Alshuhail ¹ID, Sarra Manseri <fnref n="2" />,*, and Patrick Solé <fnref n="3" />

**Abstract:** The build up technique is adapted to the symplectic inner product for codes over the three non unital rings *E*, *I*, *H* in the classification of (Fine, 1993). In particular we give propagation rules for self-orthogonal, self-dual, and quasi self-dual (QSD) codes. As an application, many codes are produced in short lengths.

**Keywords:** Symplectic inner product, self-dual codes, quasi self-dual codes, self-orthogonal codes, non-unital rings

**MSC:** Primary 94 B05 Secondary 16 A10

## 1. Introduction

The build up method is a general philosophy of propagation rules that build, by a linear recursion on the generator matrix, longer codes from known codes while preserving some of their duality properties. It was first explored for self-dual codes over finite fields by Kim and co-workers [5], and then over certain unital rings [6]. In recent years, the interest of Coding theorists turn to alphabets that are non-unital rings [8,11]? , this required the introduction of quasi self-dual (QSD) codes, that are special self-orthogonal codes. In the wake of this change, the build-up method was extended to non-unital rings and self-orthogonal or QSD codes over these rings [13].

In the present paper, we extend this latter work to codes with duality properties determined by a symplectic inner product in the spirit of [7]. This inner product is expected to be a better fit than the Euclidean pairing for quantum coding [9,16], where self-orthogonal codes have played since the beginning a very important role [15]. More specifically we treat self-dual, self-orthogonal and QSD codes over the rings *E*, *I*, *H* in the notation of [2]. These three rings are rings of characteristic two and order four. While both *E*, and *I* are local [8,11], *H* is only semi-local [14]. Different algebraic techniques are therefore needed to study codes over each of these three rings [4].

The material is structured as follows. The next section collects the prerequisites that are needed to read the rest of the paper. Section 3 derives the propagation rules for the three non-unital rings under study. Their numerical examples are displayed in Section 4. Section 5 concludes the article.

## 2. Preliminaries

### 2.1. *Binary Linear Codes*

A binary [*n*,*k*]-code *C* is a *k*-dimensional subspace of $\mathbb{F}_2^n$. Assume that the vectors

Received:

Revised:

Accepted:

Published:

**Citation:** Alshuhail, A.; Manseri S.; & Solé, P. Title. *Journal Not Specified* **2025**, *1*, 0. https://doi.org/

**Copyright:** © 2025 by the authors. Submitted to *Journal Not Specified* for possible open access publication under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

<footnote n="1">¹ Department of Mathematics, College of Science, University of Ha'il, Ha'il 2440, Saudi Arabia; ad.alshuhail@uoh.edu.sa</footnote>

<footnote n="2">² Central China Normal University, Wuhan, China; sarramanseri@gmail.com</footnote>

<footnote n="3">³ I2M (Aix Marseille Univ, CNRS), Marseilles, France; sole@enst.fr</footnote>

<footnote>* Correspondence: sarramanseri@gmail.com</footnote>
$$ \mathbf{x} = (\mathbf{u} | \mathbf{v}) \quad \text{and} \quad \mathbf{y} = (\mathbf{w} | \mathbf{t}) $$

are constructed by concatenating the vectors **u**, **v** and **w**, **t**, respectively, where **u**, **v**, **w**, **t** ∈ $\mathbb{F}_2^m$. The symplectic inner product on $\mathbb{F}_2^{2m}$ is then defined by

$$ \langle \mathbf{x}, \mathbf{y} \rangle_s = \mathbf{x} \Omega_m \mathbf{y}^T = \langle \mathbf{u}, \mathbf{t} \rangle + \langle \mathbf{v}, \mathbf{w} \rangle, $$

$$ \text{where the matrix } \Omega_m = \begin{bmatrix} \mathbf{0}_m & \mathbf{I}_m \\ \mathbf{I}_m & \mathbf{0}_m \end{bmatrix} $$

With $\mathbf{0}_m$ the zero matrix of size $m$, $\mathbf{I}_m$ the identity matrix of size $m$, and $\langle \cdot, \cdot \rangle$ denoting the Euclidean inner product. The symplectic dual of a binary $[2m, k]$-code $\mathcal{C}$ is given by

$$ \mathcal{C}^{\perp s} = \{ \mathbf{u} \in \mathbb{F}_2^{2m} \mid \langle \mathbf{u}, \mathbf{v} \rangle_s = 0 \text{ for every } \mathbf{v} \in \mathcal{C} \}. $$

A code $\mathcal{C}$ is said to be symplectic self-orthogonal if $\mathcal{C} \subseteq \mathcal{C}^{\perp s}$, and it is called symplectic self-dual if equality holds.

### 3. Construction of Symplectic Quasi Self-Dual Codes over Non-unitary Rings

In this section, we first present codes over three non-unitary rings of order four, denoted $I, H$ and $E$ (see, [2]). Moreover, we derived a build up techniques to construct some codes over the given rings.

All of the given rings generated by two distinct elements, $a$ and $b$, and have exactly four elements of characteristic two, which we label as $\{0, a, b, c\}$ with $c = a + b$. Despite sharing the same cardinality and addition table, these rings differ in commutativity, localness, and the structure of their maximal ideals.

#### 3.1. Codes over the ring $I$

The ring $I$ is defined by

$$ I = \langle 2a = 2b = 0, a^2 = b, ab = 0 \rangle. $$

The multiplication table for $I$ is

<table><caption>**Table 1.** Multiplication Table for the ring $I$</caption><thead><tr><th>×</th><th>0</th><th>a</th><th>b</th><th>c</th></tr></thead><tbody><tr><th>0</th><td>0</td><td>0</td><td>0</td><td>0</td></tr><tr><th>a</th><td>0</td><td>b</td><td>0</td><td>b</td></tr><tr><th>b</th><td>0</td><td>0</td><td>0</td><td>0</td></tr><tr><th>c</th><td>0</td><td>b</td><td>0</td><td>b</td></tr></tbody></table>

This ring is commutative and it is local with maximal ideal $J_I = \{0, b\}$ and the canonical projection $\alpha_I : I \to I/J_I \cong \mathbb{F}_2$, satisfies

$$ \alpha_I(0) = \alpha_I(b) = 0, \quad \alpha_I(a) = \alpha_I(c) = 1. $$

An $I$-code of length $n$ is an $I$-submodule of $I^n$. For a given $I$-code $\mathcal{C}$, there are two binary codes over length $n$ are naturally associated:

$$ \mathrm{res}_I(\mathcal{C}) = \{\alpha_I(\mathbf{y}) \mid \mathbf{y} \in \mathcal{C}\} \subset \mathbb{F}_2^n \quad \text{and} \quad \mathrm{tor}_I(\mathcal{C}) = \{\mathbf{x} \in \mathbb{F}_2^n \mid b\mathbf{x} \in \mathcal{C}\}. $$
If $\dim(\mathrm{res}_I(C)) = k_1$ and $\dim(\mathrm{tor}_I(C)) = k_1 + k_2$, we say that $C$ is of type $\{k_1, k_2\}$. In this case, the number of elements in $C$ is $|C| = 2^{2k_1+k_2}$. When $k_2 = 0$ (that is, when $\mathrm{res}_I(C) = \mathrm{tor}_I(C)$), the code is referred to as free.

For vectors $\mathbf{x} = (\mathbf{u} | \mathbf{v})$ and $\mathbf{x}' = (\mathbf{u}' | \mathbf{v}')$, with $(\mathbf{u}, \mathbf{v}, \mathbf{u}', \mathbf{v}') \in I^m)$, define the symplectic inner product by

$$ \langle \mathbf{x}, \mathbf{x}' \rangle_s = \langle \mathbf{u}, \mathbf{v}' \rangle + \langle \mathbf{u}', \mathbf{v} \rangle, $$

where $\langle \cdot, \cdot \rangle$ is the usual Euclidean inner product.

The symplectic dual of $C$ is given by

$$ C^{\perp s} = \{ \mathbf{x} \in I^{2m} \mid \langle \mathbf{x}, \mathbf{x}' \rangle_s = 0 \text{ for all } \mathbf{x}' \in C \}. $$

We say $C$ is symplectic self-orthogonal if $C \subseteq C^{\perp s}$, and symplectic self-dual if $C = C^{\perp s}$. An I-code that is symplectic self-orthogonal and has size $4^m$ is called symplectic quasi self-dual (symplectic-QSD).

### 3.1.1. Construction

**Theorem 1.** Let $C_0$ be a symplectic self-orthogonal code of length $n = 2m$ over the ring $I$, generated by

$$ G_0 = \begin{bmatrix} u_1 & v_1 \\ u_2 & v_2 \\ \vdots & \vdots \\ u_k & v_k \end{bmatrix}. $$

Choose a nonzero binary vector $\mathbf{x} = (\mathbf{t} | \mathbf{w}) \in \mathrm{res}(C_0)^{\perp s}$, and define $y_i = \langle \mathbf{x}, \mathbf{r}_i \rangle_s$, for $i = 1, \dots, k$. Let $C$ be the code of length $2m + 2$ with generator set

$$ G = \begin{bmatrix} a & a\mathbf{t} & a & a\mathbf{w} \\ y_1 & \mathbf{u}_1 & y_1 & \mathbf{v}_1 \\ y_2 & \mathbf{u}_2 & y_2 & \mathbf{v}_2 \\ \vdots & \vdots & \vdots & \vdots \\ y_k & \mathbf{u}_k & y_k & \mathbf{v}_k \end{bmatrix}. $$

Then, $C$ is a symplectic self-orthogonal code of length $2m + 2$. Furthermore, if $C_0$ is a symplectic-QSD code, then $C$ is also a symplectic-QSD code.

**Proof.** We verify that all the rows in $G$ are symplectic self-orthogonal.

* The symplectic self-inner product of the first row in $G$ is given by:

$$ \begin{align*} \langle ((a, a\mathbf{t}, a, a\mathbf{w})), (a, a\mathbf{t}, a, a\mathbf{w})) \rangle_s &= a^2 + a^2 \langle \mathbf{t}, \mathbf{w} \rangle_e + a^2 + a^2 \langle \mathbf{w}, \mathbf{t} \rangle_e \\ &= 2a^2 + a \langle \mathbf{x}, \mathbf{x} \rangle_s \\ &= 0. \end{align*} $$

* For any $\mathbf{r}_i$ and $\mathbf{r}_j$ in $G_0$, we compute its symplectic self-inner product:

$$ \begin{align*} \langle (y_i, \mathbf{u}_i, y_i, \mathbf{v}_i), (y_j, \mathbf{u}_j, y_j, \mathbf{v}_j) \rangle_s &= \langle (y_i, \mathbf{u}_i), (y_j, \mathbf{v}_j) \rangle_e + \langle (y_i, \mathbf{v}_i), (y_j, \mathbf{u}_j) \rangle_e \\ &= y_i y_j + \langle \mathbf{u}_i, \mathbf{v}_j \rangle_e + y_i y_j + \langle \mathbf{v}_i, \mathbf{u}_j \rangle_e \\ &= 2(y_i y_j) + \langle \mathbf{r}_i, \mathbf{r}_j \rangle_s \\ &= 0 + 0 = 0. \end{align*} $$
Since $C_0$ is a symplectic self-orthogonal code and in characteristic 2.

* The symplectic inner product between the first row and any other row:

$$ \begin{aligned} \langle (a, a \mathbf{t}, a, a \mathbf{w}), (y_i, \mathbf{u}_i, y_i, \mathbf{v}_i) \rangle_s &= \langle (a, a \mathbf{t}), (y_i, \mathbf{v}_i) \rangle_e + \langle (a, a \mathbf{w}), (y_i, \mathbf{u}_i) \rangle_e \\ &= a y_i + \langle a \mathbf{t}, \mathbf{v}_i \rangle_e + a y_i + \langle a \mathbf{w}, \mathbf{u}_i \rangle_e \\ &= 2(a y_i) + \langle a \mathbf{t}, \mathbf{v}_i \rangle_e + \langle a \mathbf{w}, \mathbf{u}_i \rangle_e \\ &= 0 + \langle a \mathbf{x}, \mathbf{r}_i \rangle_s \\ &= 0 + a(0) = 0 \end{aligned} $$

Since $\mathbf{x} \in \text{res}(C_0) \subseteq \text{res}(C_0)^{\perp s}$, we have $\langle a \mathbf{x}, \mathbf{r}_i \rangle_s = 0$ for each $i$.

Now, assume that $C_0$ is a symplectic-QSD code. Let $\hat{C}_0$ to be the subcode spanned by the last $k$ generators. For each $y \in I$, define $c_y = (y, y \mathbf{t}, y, y \mathbf{w})$. It follows that the construction described in the theorem is equivalent to

$$ C = \bigcup_{y \in I} (c_y + \hat{C}_0), $$

where $\cup$ denotes the disjoint union. It follows that $|C| = 4|\hat{C}_0| = 4^{m+1}$.

Therefore, $C$ is a symplectic quasi self-dual code of length $2m + 2$. $\square$

**Theorem 2.** Let $C_0$ be a symplectic self-orthogonal code of length $n = 2m$ with $m > 1$ over the ring $I$ with generator matrix

$$ G_0 = \begin{bmatrix} \mathbf{u}_1 & \mathbf{v}_1 \\ \mathbf{u}_2 & \mathbf{v}_2 \\ \vdots & \vdots \\ \mathbf{u}_k & \mathbf{v}_k \end{bmatrix}. $$

Choose a nonzero binary vector $\mathbf{x} = (\mathbf{t} | \mathbf{w}) \in \mathbb{F}_2^n$, and for each $i = 1, \dots, k$, define $y_i = \langle \mathbf{w}, \mathbf{u}_i \rangle_e$, and $z_i = \langle \mathbf{t}, \mathbf{v}_i \rangle_e$. Then, the code $C$ of length $2m + 4$ over $I$, with generator matrix

$$ G = \begin{bmatrix} a & 0 & a\mathbf{t} & a & 0 & a\mathbf{w} \\ y_1 & y_1 & \mathbf{u}_1 & z_1 & z_1 & \mathbf{v}_1 \\ y_2 & y_2 & \mathbf{u}_2 & z_2 & z_2 & \mathbf{v}_2 \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ y_k & y_k & \mathbf{u}_k & z_k & z_k & \mathbf{v}_k \end{bmatrix}. $$

is symplectic self-orthogonal.

**Proof.** We verify that all the generator in $G$ are pairwise symplectic self-orthogonal.

* The symplectic self-inner product of the first row in $G$ is given by:

$$ \langle g_0, g_0 \rangle_s = 2 \langle (a, 0, a \mathbf{t}), (a, 0, a \mathbf{w}) \rangle_e = 0. $$
* The symplectic product between the first row and any other row:

$$
\begin{align*}
\langle g_0, g_i \rangle_s &= \langle (a, 0, a \mathbf{t}), (z_i, z_i, \mathbf{v}_i) \rangle_e + \langle (y_i, y_i, \mathbf{u}_i), (a, 0, a \mathbf{w}) \rangle_e \\
&= a z_i + 0 \cdot z_i + \langle a \mathbf{t}, \mathbf{v}_i \rangle_e + y_i a + y_i \cdot 0 + \langle \mathbf{u}_i, a \mathbf{w} \rangle_e \\
&= a z_i + \langle a \mathbf{t}, \mathbf{v}_i \rangle_e + a y_i + \langle \mathbf{u}_i, a \mathbf{w} \rangle_e \\
&= a z_i + a z_i + a y_i + a y_i \\
&= 0.
\end{align*}
$$

* The symplectic product between $i, j \ge 1$ generators:

$$
\begin{align*}
\langle g_i, g_j \rangle_s &= \langle (y_i, y_i, \mathbf{u}_i), (z_j, z_j, \mathbf{v}_j) \rangle_e + \langle (y_j, y_j, \mathbf{u}_j), (z_i, z_i, \mathbf{v}_i) \rangle_e \\
&= (y_i z_j + y_i z_j) + \langle \mathbf{u}_i, \mathbf{v}_j \rangle_e + (y_j z_i + y_j z_i) + \langle \mathbf{u}_j, \mathbf{v}_i \rangle_e \\
&= 4 (y_j z_i) + \langle \mathbf{r}_i, \mathbf{r}_j \rangle_s \\
&= 0.
\end{align*}
$$

Hence, $\mathcal{C}$ is a symplectic self-orthogonal code of length $2m + 4$. $\square$

**Theorem 3.** Let $C_0$ be a symplectic self-orthogonal code over the ring $\mathbb{I}$ of length $2m$ with generator rows $r_i = (\mathbf{u}_i | \mathbf{v}_i)$, $i = 1, \dots, k$. Suppose $\{0\} \neq \mathbf{x} = (\mathbf{t} | \mathbf{w}) \in \mathbb{F}_2^{2m}$. Define $y_i = \langle \mathbf{x}, \mathbf{r}_i \rangle_s$, for $i = 1, \dots, k$. Then the code $\mathcal{C}$ generated by the rows

$$g_0 = (a, a \mathbf{t} | 0, a \mathbf{w}), \quad g_i = (y_i, \mathbf{u}_i | y_i, \mathbf{v}_i), \quad i = 1, \dots, k,$$

is symplectic self-orthogonal I-code of length $2m + 2$. Moreover, if $C_0$ is symplectic-QSD code then so is $\mathcal{C}$.

**Proof.** We check pairwise symplectic orthogonality:

* The symplectic orthogonality of the first row $g_0$:

$$\langle g_0, g_0 \rangle_s = \langle (a, a \mathbf{t}), (0, a \mathbf{w}) \rangle_e + \langle (0, a \mathbf{w}), (a, a \mathbf{t}) \rangle_e = \langle a \mathbf{t}, a \mathbf{w} \rangle_e + \langle a \mathbf{w}, a \mathbf{t} \rangle_e = a \langle \mathbf{x}, \mathbf{x} \rangle_s = 0$$

* The symplectic orthogonality among the rows $g_i$ and $g_j$ for all $i, j \in \{1, \dots, k\}$:

$$
\begin{align*}
\langle g_i, g_j \rangle_s &= \langle (y_i, y_i, \mathbf{u}_i), (y_j, y_j, \mathbf{v}_j) \rangle_e + \langle (y_i, y_i, \mathbf{v}_i), (y_j, y_j, \mathbf{u}_j) \rangle_e \\
&= y_i y_j + \langle \mathbf{u}_i, \mathbf{v}_j \rangle_e + y_i y_j + \langle \mathbf{v}_i, \mathbf{u}_j \rangle_e \\
&= \langle \mathbf{u}_i, \mathbf{v}_j \rangle_e + \langle \mathbf{v}_i, \mathbf{u}_j \rangle_e \\
&= \langle \mathbf{r}_i, \mathbf{r}_j \rangle_s = 0.
\end{align*}
$$

This derived from the fact that $C_0$ is a symplectic self-orthogonal I-code and $2y_iy_j = 0$.

* The symplectic orthogonality between $g_0$ and $g_i$ for $i \in \{1, \dots, k\}$:

$$
\begin{align*}
\langle g_0, g_i \rangle_s &= \langle (a, a \mathbf{t}), (y_i, y_i, \mathbf{v}_i) \rangle_e + \langle (0, a \mathbf{w}), (y_i, y_i, \mathbf{u}_i) \rangle_e \\
&= a y_i + \langle a \mathbf{t}, \mathbf{v}_i \rangle_e + \langle a \mathbf{w}, \mathbf{u}_i \rangle_e \\
&= a y_i + \langle a \mathbf{t}, \mathbf{v}_i \rangle_e + \langle a \mathbf{w}, \mathbf{u}_i \rangle_e \\
&= a y_i + \langle a \mathbf{x}, \mathbf{r}_i \rangle_s \\
&= a y_i + a y_i \\
&= 0.
\end{align*}
$$
Thus, all generator rows are pairwise symplectic orthogonal, so $C = \langle g_0, g_1, \dots, g_k \rangle$ is a symplectic self-orthogonal code of length $2m + 2$.

Now, assume that $C_0$ is a symplectic-QSD code. Let $\hat{C}_0$ to be the subcode spanned by the last $k$ generators. For each $y \in I$, define $c_y = (y, y t, 0, y w)$. It follows that the construction described in the theorem is equivalent to

$$C = \bigcup_{y \in I} (c_y + \hat{C}_0),$$

where $\cup$ denotes the disjoint union. It follows that $|C| = 4|\hat{C}_0| = 4^{m+1}$.

Therefore, $C$ is a symplectic quasi self-dual code of length $2m + 2$. $\square$

## 3.2. Codes over the ring $E$

The ring $E$ is defined by

$$E = \langle a, b \mid 2a = 2b = 0, a^2 = a, b^2 = b, ab = a, ba = b \rangle.$$

Thus, $E$ is non-unitary, non-commutative and local ring with maximal ideal $J_E = \{0, c\}$. Its multiplication table is in Table 2. The canonical projection

<table><caption>**Table 2.** Multiplication table for the ring $E$</caption><thead><tr><th>×</th><th>0</th><th>a</th><th>b</th><th>c</th></tr></thead><tbody><tr><th>0</th><td>0</td><td>0</td><td>0</td><td>0</td></tr><tr><th>a</th><td>0</td><td>a</td><td>a</td><td>0</td></tr><tr><th>b</th><td>0</td><td>b</td><td>b</td><td>0</td></tr><tr><th>c</th><td>0</td><td>c</td><td>c</td><td>0</td></tr></tbody></table>

$$\alpha_E : E \to E/J_E \cong \mathbb{F}_2,$$

satisfies

$$\alpha_E(0) = \alpha_E(c) = 0, \quad \alpha_E(a) = \alpha_E(b) = 1.$$

An $E$-code of length $n$ is a left (resp. right) $E$-submodule of $E^n$. For a given $E$-code $C$, two binary codes of length $n$ are naturally associated:

$$\mathrm{res}_E(C) = \{\alpha_E(\mathbf{y}) \mid \mathbf{y} \in C\} \quad \text{and} \quad \mathrm{tor}_E(C) = \{\mathbf{x} \in \mathbb{F}_2^n \mid c\mathbf{x} \in C\}.$$

If $\dim(\mathrm{res}_E(C)) = k_1$ and $\dim(\mathrm{tor}_E(C)) = k_1 + k_2$, we say that $C$ is of type $\{k_1, k_2\}$. In this case, the number of elements in $C$ is $|C| = 2^{2k_1+k_2}$.

When $k_2 = 0$ (i.e., when $\mathrm{res}_E(C) = \mathrm{tor}_E(C)$), the code is referred to be free.

For vectors $\mathbf{x} = (\mathbf{u} | \mathbf{v})$ and $\mathbf{x}' = (\mathbf{u}' | \mathbf{v}')$ in $E^{2m}$, with $\mathbf{u}, \mathbf{v}, \mathbf{u}', \mathbf{v}' \in E^m$, define the symplectic inner product by

$$\langle \mathbf{x}, \mathbf{x}' \rangle_s = \langle \mathbf{u}, \mathbf{v} \rangle + \langle \mathbf{u}', \mathbf{v}' \rangle,$$

where $\langle \cdot, \cdot \rangle$ denotes the usual Euclidean inner product.

The left symplectic dual $C^{\perp L_s}$ of a linear code $C$ of $E^{2m}$ is a left module defined as

$$C^{\perp L_s} = \{ \mathbf{y} \in E^{2m} \mid \langle \mathbf{y}, \mathbf{x} \rangle_s = 0, \forall \mathbf{x} \in C \}.$$

Similarly, the right symplectic dual $C^{\perp R_s}$ of $C$ is a right module defined by

$$C^{\perp R_s} = \{ \mathbf{y} \in E^{2m} \mid \langle \mathbf{x}, \mathbf{y} \rangle_s = 0, \forall \mathbf{x} \in C \}.$$
An E-code $\mathcal{C}$ is said to be symplectic self-orthogonal if for any $\mathbf{u}, \mathbf{v} \in \mathcal{C}, \langle \mathbf{u}, \mathbf{v} \rangle_s = 0$. Moreover, any symplectic self-orthogonal code $\mathcal{C}$ satisfies $\mathcal{C} \subseteq C^{\perp L_s} \cap C^{\perp R_s}$.

An E-code that is symplectic self-orthogonal and has size $4^m$ is called symplectic quasi self-dual (symplectic-QSD).

### 3.2.1. Construction

**Theorem 4.** Let $C_0$ be a symplectic self-orthogonal E-code of length $2m$ with generator rows $r_i = (\mathbf{u}_i | \mathbf{v}_i)$, $i = 1, \dots, k$, and suppose $\mathbf{x} = (\mathbf{t} | \mathbf{w}) \in \mathbb{F}_2$.

Define $y_i = \langle \mathbf{x}, \mathbf{r}_i \rangle_s$, $i = 1, \dots, k$. Then the code $\mathcal{C}$ generated by the rows

$$g_0 = (a, a \mathbf{t} | 0, a \mathbf{w}), \quad g_i = (y_i, \mathbf{u}_i | y_i, \mathbf{v}_i), \quad i = 1, \dots, k,$$

is a symplectic self-orthogonal code over $\mathcal{E}$ of length $2m + 2$.

**Proof.** We check pairwise symplectic orthogonality:

* Self-orthogonality of the first row $g_0$:

$$\langle g_0, g_0 \rangle_s = \langle (a, at), (0, aw) \rangle_e + \langle (0, aw), (a, at) \rangle_e = \langle at, aw \rangle_e + \langle aw, at \rangle_e = a \langle x, x \rangle_s = 0$$

* The orthogonality among the rows $g_i$, and $g_j$ for all $i, j \in \{1, \dots, k\}$:

$$\begin{align*}
\langle g_i, g_j \rangle_s &= \langle (y_i, \mathbf{u}_i), (y_j, \mathbf{v}_j) \rangle_e + \langle (y_i, \mathbf{v}_i), (y_j, \mathbf{u}_j) \rangle_e \\
&= y_i y_j + \langle \mathbf{u}_i, \mathbf{v}_j \rangle + y_i y_j + \langle \mathbf{v}_i, \mathbf{u}_j \rangle_e \\
&= 2 y_i y_j + \langle \mathbf{u}_i, \mathbf{v}_j \rangle_e + \langle \mathbf{v}_i, \mathbf{u}_j \rangle_e \\
&= 0 + \langle r_i, r_j \rangle_s = 0.
\end{align*}$$

This follows since $C_0$ is symplectic self-orthogonal and $2y_iy_j = 0$.

* Orthogonality between $g_0$, and $g_i$ for $i \in \{1, \dots, k\}$:

$$\begin{align*}
\langle g_0, g_i \rangle_s &= \langle (a, at), (y_i, \mathbf{v}_i) \rangle_e + \langle (0, aw), (y_i, \mathbf{u}_i) \rangle_e \\
&= ay_i + \langle at, \mathbf{v}_i \rangle_e + \langle aw, \mathbf{u}_i \rangle_e \\
&= a(y_i + \langle t, \mathbf{v}_i \rangle_e + \langle w, \mathbf{u}_i \rangle_e) \\
&= a(y_i + \langle x, \mathbf{r}_i \rangle_s) \\
&= a(y_i + y_i) \\
&= 0.
\end{align*}$$

Thus, all generator rows are pairwise symplectic-orthogonal, so $\mathcal{C} = \langle g_0, g_1, \dots, g_k \rangle$ is symplectic self-orthogonal of length $2m + 2$.

**Corollary 1.** With the notation of Theorem 4, if $C_0$ is a symplectic-QSD code of length $2m$, then the extended code $\mathcal{C}$ is a symplectic-QSD code of length $2m + 2$.

**Proof.** By Theorem 4, the code $\mathcal{C}$ is symplectic self-orthogonal of length $2m + 2$. Let $\tilde{C}_0 = \langle g_1, \dots, g_k \rangle$ be the subcode of $\mathcal{C}$ generated by the last $k$ rows $g_i = (y_i, \mathbf{u}_i | y_i, \mathbf{v}_i)$. For each $e \in E$, define

$$c_e := (e, e \mathbf{t} | 0, e \mathbf{w}).$$
Then, every codeword in $\mathcal{C} = \langle g_0, g_1, \dots, g_k \rangle$ can be written uniquely as $\mathbf{c}_e + \mathbf{u}$ with $e \in E$ and $\mathbf{u} \in \hat{\mathcal{C}}_0$. Equivalently,

$$ \mathcal{C} = \bigcup_{e \in E} (\mathbf{c}_e + \hat{\mathcal{C}}_0). $$

We claim the cosets $\mathbf{c}_e + \hat{\mathcal{C}}_0$ are pairwise disjoint. Suppose to the contrary that for some $e, e' \in E$ and $\mathbf{u}, \mathbf{u}' \in \hat{\mathcal{C}}_0$ we have $\mathbf{c}_e + \mathbf{u} = \mathbf{c}_{e'} + \mathbf{u}'$. Then, $\mathbf{c}_e - \mathbf{c}_{e'} = \mathbf{u}' - \mathbf{u} \in \hat{\mathcal{C}}_0$. On the other hand,

$$ \mathbf{c}_e - \mathbf{c}_{e'} = (e - e', (e - e')\mathbf{t} \mid 0, (e - e')\mathbf{w}). $$

But every element of $\hat{\mathcal{C}}_0$, being a linear combination of rows of the form $(y_i, \mathbf{u}_i | y_i, \mathbf{v}_i)$ has equal left and right scalar coordinates.

Hence, if $\mathbf{c}_e - \mathbf{c}_{e'} \in \hat{\mathcal{C}}_0$ we must have $e - e' = 0$, which means $e = e'$. Therefore distinct $e$'s produce distinct cosets, and the union $\cup_{e \in E}(\mathbf{c}_e + \hat{\mathcal{C}}_0)$ is disjoint. It follows that, $|\mathcal{C}| = |E| \cdot |\hat{\mathcal{C}}_0| = 4|\hat{\mathcal{C}}_0|$. If $C_0$ and thus $\hat{\mathcal{C}}_0$ is symplectic-QSD of length $2m$, then $|\hat{\mathcal{C}}_0| = 4^m$, so $|\mathcal{C}| = 4^{m+1}$. Consequently, $\mathcal{C}$ is a symplectic-QSD code over $E$ of length $2m + 2$. $\square$

**Theorem 5.** Let $C_0$ be a symplectic self-orthogonal code of length $2m$ with generator rows

$$ r_i = (\mathbf{u}_i | \mathbf{v}_i) \in E^{2m}, \quad i = 1, \dots, k. $$

Choose a binary vector $\mathbf{x} = (\mathbf{t} | \mathbf{w}) \in \mathbb{F}_2^{2m}$ and set for $i = 1, \dots, k$, $y_i := \langle \mathbf{t}, \mathbf{v}_i \rangle_e$ and $z_i := \langle \mathbf{w}, \mathbf{u}_i \rangle_e$, so that $\langle \mathbf{x}, \mathbf{r}_i \rangle_s = y_i + z_i$.

Let $\mathcal{C}$ be the code generated by the rows of

$$ G = \begin{bmatrix} a & 0 & a\mathbf{t} & a & 0 & a\mathbf{w} \\ y_1 & y_1 & \mathbf{u}_1 & z_1 & z_1 & \mathbf{v}_1 \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ y_k & y_k & \mathbf{u}_k & z_k & z_k & \mathbf{v}_k \end{bmatrix}. $$

Then, $\mathcal{C}$ is a symplectic self-orthogonal code over $E$ of length $2m + 4$.

**Proof.** We write the new generator rows as

$$ g_0 = (a, 0, a\mathbf{t} | a, 0, a\mathbf{w}), \quad g_i = (y_i, y_i, \mathbf{u}_i | z_i, z_i, \mathbf{v}_i) \quad (i = 1, \dots, k), $$

and we check pairwise symplectic orthogonality:

* Self-orthogonality of the first row $g_0$:

$$ \begin{align*} \langle g_0, g_0 \rangle_s &= \langle (a, 0, a\mathbf{t}), (a, 0, a\mathbf{w}) \rangle_e + \langle (a, 0, a\mathbf{w}), (a, 0, a\mathbf{t}) \rangle_e \\ &= a^2 + \langle a\mathbf{t}, a\mathbf{w} \rangle_e + a^2 + \langle a\mathbf{w}, a\mathbf{t} \rangle_e \\ &= 2a^2 + a\langle \mathbf{x}, \mathbf{x} \rangle_s \\ &= 0. \end{align*} $$

* Orthogonality among the rows $g_i$, and $g_j$ for all, $i, j \in \{1, \dots, k\}$:

$$ \begin{align*} \langle g_i, g_j \rangle_s &= \langle (y_i, y_i, \mathbf{u}_i), (z_j, z_j, \mathbf{v}_j) \rangle_e + \langle (z_i, z_i, \mathbf{v}_i), (y_j, y_j, \mathbf{u}_j) \rangle_e \\ &= 2(y_i z_j) + \langle \mathbf{u}_i, \mathbf{v}_j \rangle_e + 2(z_i y_j) + \langle \mathbf{v}_i, \mathbf{u}_j \rangle_e \\ &= 0 + \langle \mathbf{r}_i, \mathbf{r}_j \rangle_s \\ &= 0. \end{align*} $$

The last equality follows from the hypothesis $C_0$ is symplectic self-orthogonal.
• Orthogonality between $g_0$, and $g_i$ for $i \in \{1, \dots, k\}$:

$$
\begin{align*}
\langle g_0, g_i \rangle_s &= \langle (a, 0, at), (z_i, z_i, v_i) \rangle_e + \langle (a, 0, aw), (y_i, y_i, u_i) \rangle_e \\
&= az_i + \langle at, v_i \rangle_e + ay_i + \langle aw, u_i \rangle_e \\
&= az_i + a \langle t, v_i \rangle_e + ay_i + a \langle w, u_i \rangle_e \\
&= a(z_i + y_i) + a \langle t, v_i \rangle_e + \langle w, u_i \rangle_e
\end{align*}
$$

Since $y_i = \langle \mathbf{t}, \mathbf{v}_i \rangle_e$ and $z_i = \langle \mathbf{w}, \mathbf{u}_i \rangle_e$, then $\langle g_0, g_i \rangle_s = 0$. Thus, all generator rows are pairwise symplectic-orthogonal. This implies that $C = \langle g_0, g_1, \dots, g_k \rangle$ is a symplectic self-orthogonal E-code of length $2m + 4$.

<figure><img src="image_2.png" /></figure>

3.3. Codes over the ring H

Define the ring H as

$$
H = \langle a, b | 2a = 2b = 0, a^2 = 0, b^2 = b, ab = 0 \rangle.
$$

The multiplication table for $H$ is given Table 3

<table><caption>**Table 3.** Multiplication Table for the Ring *H*</caption>
  <tr>
    <td>×</td>
    <td>0</td>
    <td>a</td>
    <td>b</td>
    <td>c</td>
  </tr>
  <tr>
    <td>0</td>
    <td>0</td>
    <td>0</td>
    <td>0</td>
    <td>0</td>
  </tr>
  <tr>
    <td>a</td>
    <td>0</td>
    <td>0</td>
    <td>0</td>
    <td>0</td>
  </tr>
  <tr>
    <td>b</td>
    <td>0</td>
    <td>0</td>
    <td>b</td>
    <td>b</td>
  </tr>
  <tr>
    <td>c</td>
    <td>0</td>
    <td>0</td>
    <td>b</td>
    <td>b</td>
  </tr>
</table>

This ring is non-unital, commutative and semi-local with two maximal ideals $\{0, a\}$ and $\{0, b\}$.

The map $\alpha_H^a : H \to \mathbb{F}_2$ defined as $\alpha_H^a(0) = \alpha_H^a(a) = 0$ and $\alpha_H^a(b) = \alpha_H^a(c) = 1$.
Also, the map $\alpha_H^b : H \to \mathbb{F}_2$ defined by $\alpha_H^b(0) = \alpha_H^b(b) = 0$ and $\alpha_H^b(a) = \alpha_H^b(c) = 1$.

By [14], to every linear code $C$ over $H$, there are two binary linear codes $C_a = \alpha_H^b(C)$ and $C_b = \alpha_H^a(C)$ associated canonically with $C$. Moreover, $C$ can be written as $C = aC_a \oplus bC_b$.

An H-code *C* is said to be *symplectic self-orthogonal* if

$C \subseteq C^{\perp s}$, and symplectic self-dual if $C = C^{\perp s}$. If $C$ is symplectic self-orthogonal with cardinality $4^m$, then we say $C$ is symplectic quasi self-dual (QSD).

3.3.1. Construction 186

**Theorem 6.** Let $C_0 = aC'_a \oplus bC'_b$ be a symplectic self-orthogonal code of length $n = 2m$ over the ring $H$, generated by

187

188

$$
G_0 = \begin{bmatrix} u_1 & v_1 \\ u_2 & v_2 \\ \vdots & \vdots \\ u_k & v_k \end{bmatrix}.
$$

Choose a nonzero binary vector $\mathbf{x} = (\mathbf{t} | \mathbf{w}) \in C_a^{\perp s}$, and define $y_i = \langle \mathbf{x}, \mathbf{r}_i \rangle_s$, for $i = 1, \dots, k$.
Let $C$ be the code of length $2m + 2$ with generator set

190

$$G = \begin{bmatrix} c & c\mathbf{t} & c & c\mathbf{w} \\ y_1 & \mathbf{u}_1 & y_1 & \mathbf{v}_1 \\ y_2 & \mathbf{u}_2 & y_2 & \mathbf{v}_2 \\ \vdots & \vdots & \vdots & \vdots \\ y_k & \mathbf{u}_k & y_k & \mathbf{v}_k \end{bmatrix}.$$

Then, $C$ is a symplectic self-orthogonal code of length $2m + 2$. Furthermore, if $C_0$ is a symplectic-QSD code, then $C$ is also a symplectic-QSD code.

191

192

**Proof.** We verify that all the rows in $G$ are symplectic self-orthogonal.

193

* The symplectic self-inner product of the first row in $G$ is given by:

194

$$ \begin{aligned} \langle ((c, c \mathbf{t}, c, c \mathbf{w}), (c, c \mathbf{t}, c, c \mathbf{w})))_s &= c^2 + c^2 \langle \mathbf{t}, \mathbf{w} \rangle_e + c^2 + c^2 \langle \mathbf{w}, \mathbf{t} \rangle_e \\ &= 2c^2 + c \langle \mathbf{x}, \mathbf{x} \rangle_s \\ &= 0. \end{aligned} $$

* For any $\mathbf{r}_i$ and $\mathbf{r}_j$ in $G_0$, we compute their symplectic self-inner product:

195

$$ \begin{aligned} \langle (y_i, \mathbf{u}_i, y_i, \mathbf{v}_i), (y_j, \mathbf{u}_j, y_j, \mathbf{v}_j) \rangle_s &= \langle (y_i, \mathbf{u}_i), (y_j, \mathbf{v}_j) \rangle_e + \langle (y_i, \mathbf{v}_i), (y_j, \mathbf{u}_j) \rangle_e \\ &= y_i y_j + \langle \mathbf{u}_i, \mathbf{v}_j \rangle_e + y_i y_j + \langle \mathbf{v}_i, \mathbf{u}_j \rangle_e \\ &= 2(y_i y_j) + \langle \mathbf{r}_i, \mathbf{r}_j \rangle_s \\ &= 0 + 0 = 0. \end{aligned} $$

Since $C_0$ is a symplectic self-orthogonal code and in characteristic 2.

196

* The symplectic inner product between the first row and any other row:

197

$$ \begin{aligned} \langle (c, c \mathbf{t}, c, c \mathbf{w}), (y_i, \mathbf{u}_i, y_i, \mathbf{v}_i) \rangle_s &= \langle (c, c \mathbf{t}), (y_i, \mathbf{v}_i) \rangle_e + \langle (c, c \mathbf{w}), (y_i, \mathbf{u}_i) \rangle_e \\ &= c y_i + \langle c \mathbf{t}, \mathbf{v}_i \rangle_e + c y_i + \langle c \mathbf{w}, \mathbf{u}_i \rangle_e \\ &= 2(c y_i) + \langle c \mathbf{t}, \mathbf{v}_i \rangle_e + \langle c \mathbf{w}, \mathbf{u}_i \rangle_e \\ &= 0 + \langle c \mathbf{x}, \mathbf{r}_i \rangle_s \\ &= 0 + c(0) = 0 \end{aligned} $$

Since $\mathbf{x} \in \mathrm{res}(C_0) \subseteq \mathrm{res}(C_0)^{\perp s}$, we have that $\langle c \mathbf{x}, \mathbf{r}_i \rangle_s = 0$ for each $i$. Now, assume that $C_0$ is a symplectic-QSD code. Let $\hat{C}_0$ to be the subcode spanned by the last $k$ generators. For each $y \in H$, define $c_y = (y, y \mathbf{t}, y, y \mathbf{w})$. It follows that the construction described in the theorem is equivalent to

198

199

200

201

$$C = \bigcup_{y \in H} (c_y + \hat{C}_0).$$

where $\cup$ denotes the disjoint union. It follows that $|C| = 4|\hat{C}_0| = 4^{m+1}$.

202

Therefore, $C$ is a symplectic quasi self-dual code of length $2m + 2$. $\square$

203
**Theorem 7.** Let $C_0$ be a symplectic self-orthogonal code of length $n = 2m$ with $m > 1$ over the ring $H$ with generator matrix

204

205

$$G_0 = \begin{bmatrix} \mathbf{u}_1 & \mathbf{v}_1 \\ \mathbf{u}_2 & \mathbf{v}_2 \\ \vdots & \vdots \\ \mathbf{u}_k & \mathbf{v}_k \end{bmatrix}.$$

Choose a nonzero binary vector $\mathbf{x} = (\mathbf{t} | \mathbf{w}) \in \mathbb{F}_2^n$. For each $i = 1, \dots, k$, define $y_i = \langle \mathbf{w}, \mathbf{u}_i \rangle_e$, and $z_i = \langle \mathbf{t}, \mathbf{v}_i \rangle_e$.

206

207

Then, the code $C$ with generator matrix

208

$$G = \begin{bmatrix} c & 0 & c\mathbf{t} & c & 0 & c\mathbf{w} \\ y_1 & y_1 & \mathbf{u}_1 & z_1 & z_1 & \mathbf{v}_1 \\ y_2 & y_2 & \mathbf{u}_2 & z_2 & z_2 & \mathbf{v}_2 \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ y_k & y_k & \mathbf{u}_k & z_k & z_k & \mathbf{v}_k \end{bmatrix}.$$

is a symplectic self-orthogonal H-code of length $2m + 4$.

209

**Proof.** We verify that all the generator in $G$ are pairwise symplectic orthogonal.

210

* The symplectic self-inner product of the first row in $G$ is given by:

211

$$\langle g_0, g_0 \rangle_s = 2 \langle (c, 0, c\mathbf{t}), (c, 0, c\mathbf{w}) \rangle_e = 0.$$

* The symplectic inner product between the first row and any other row:

212

$$\begin{align*}
\langle g_0, g_i \rangle_s &= \langle (c, 0, c\mathbf{t}), (z_i, z_i, \mathbf{v}_i) \rangle_e + \langle (y_i, y_i, \mathbf{u}_i), (c, 0, c\mathbf{w}) \rangle_e \\
&= c z_i + 0 \cdot z_i + \langle c\mathbf{t}, \mathbf{v}_i \rangle_e + y_i c + y_i \cdot 0 + \langle \mathbf{u}_i, c\mathbf{w} \rangle_e \\
&= c z_i + \langle c\mathbf{t}, \mathbf{v}_i \rangle_e + c y_i + \langle \mathbf{u}_i, c\mathbf{w} \rangle_e \\
&= c z_i + c z_i + c y_i + c y_i \\
&= 0.
\end{align*}$$

* The symplectic inner product between $i, j \ge 1$ generators:

213

$$\begin{align*}
\langle g_i, g_j \rangle_s &= \langle (y_i, y_i, \mathbf{u}_i), (z_j, z_j, \mathbf{v}_j) \rangle_e + \langle (y_j, y_j, \mathbf{u}_j), (z_i, z_i, \mathbf{v}_i) \rangle_e \\
&= (y_i z_j + y_i z_j) + \langle \mathbf{u}_i, \mathbf{v}_j \rangle_e + (y_j z_i + y_j z_i) + \langle \mathbf{u}_j, \mathbf{v}_i \rangle_e \\
&= 4 (y_j z_i) + \langle \mathbf{r}_i, \mathbf{r}_j \rangle_s \\
&= 0.
\end{align*}$$

Hence, $C$ is a symplectic self-orthogonal of length $2m + 4$. □

214

**Theorem 8.** Let $C_0$ be a symplectic self-orthogonal code over the ring $H$ of length $2m$ with generator rows $r_i = (\mathbf{u}_i | \mathbf{v}_i)$, $i = 1, \dots, k$ and suppose $\mathbf{x} = (\mathbf{t} | \mathbf{w}) \in \mathbb{F}_2^{2m} \setminus \{0\}$. Define $y_i = \langle \mathbf{x}, \mathbf{r}_i \rangle_s$, $i = 1, \dots, k$.

215

216

217

Then the code $C$ generated by the rows

218

$$g_0 = (c, c\mathbf{t} | 0, c\mathbf{w}), \quad g_i = (y_i, \mathbf{u}_i | y_i, \mathbf{v}_i), \quad i = 1, \dots, k,$$
is symplectic self-orthogonal of length 2m + 2. Moreover, if $C_0$ is symplectic-QSD over H, then so is C.

**Proof.** We check pairwise symplectic orthogonality:

* The self-inner product of $g_0$:

$$ \langle g_0, g_0 \rangle_s = \langle (c, c \mathbf{t}), (0, c \mathbf{w}) \rangle_e + \langle (0, c \mathbf{w}), (c, c \mathbf{t}) \rangle_e = \langle c \mathbf{t}, c \mathbf{w} \rangle_e + \langle c \mathbf{w}, c \mathbf{t} \rangle_e = c \langle \mathbf{x}, \mathbf{x} \rangle_s = 0. $$

* The product $\langle g_i, g_j \rangle_s$ for $i, j \in \{1, \dots, k\}$:

$$ \begin{aligned} \langle g_i, g_j \rangle_s &= \langle (y_i, y_i, \mathbf{u}_i), (y_j, y_j, \mathbf{v}_j) \rangle_e + \langle (y_i, y_i, \mathbf{v}_i), (y_j, y_j, \mathbf{u}_j) \rangle_e \\ &= y_i y_j + \langle \mathbf{u}_i, \mathbf{v}_j \rangle_e + y_i y_j + \langle \mathbf{v}_i, \mathbf{u}_j \rangle_e \\ &= \langle \mathbf{u}_i, \mathbf{v}_j \rangle_e + \langle \mathbf{v}_i, \mathbf{u}_j \rangle_e \\ &= \langle r_i, r_j \rangle_s = 0 \end{aligned} $$

The last equality follows since $C_0$ is symplectic self-orthogonal and $2y_iy_j = 0$.

* Cross-inner $\langle g_0, g_i \rangle_s$ for all $i \in \{1, \dots, k\}$:

$$ \begin{aligned} \langle g_0, g_i \rangle_s &= \langle (c, c \mathbf{t}), (y_i, y_i, \mathbf{v}_i) \rangle_e + \langle (0, a \mathbf{w}), (y_i, y_i, \mathbf{u}_i) \rangle_e \\ &= a y_i + \langle c \mathbf{t}, \mathbf{v}_i \rangle_e + \langle c \mathbf{w}, \mathbf{u}_i \rangle_e \\ &= c y_i + \langle c \mathbf{t}, \mathbf{v}_i \rangle_e + \langle c \mathbf{w}, \mathbf{u}_i \rangle_e \\ &= a y_i + \langle c \mathbf{x}, \mathbf{r}_i \rangle_s \\ &= c y_i + c y_i \\ &= 0. \end{aligned} $$

Therefore, all generator rows are pairwise symplectic orthogonal, so $C = \langle g_0, g_1, \dots, g_k \rangle$ is symplectic self-orthogonal of length $2m + 2$. Now, assume that $C_0$ is a symplectic-QSD code. Let $\hat{C}_0$ to be the subcode spanned by the last $k$ generators. For each $y \in H$, define $c_y = (y, y \mathbf{t}, 0, y \mathbf{w})$. It follows that the construction described in the theorem is equivalent to

$$ C = \bigcup_{y \in I} (c_y + \hat{C}_0), $$

where $\cup$ denotes the disjoint union. It follows that $|C| = 4|\hat{C}_0| = 4^{m+1}$. Therefore, $C$ is a symplectic-QSD code of length $2m + 2$. $\square$

# 4. Numerical Examples

## 4.1. Codes over I

Here, we begin with the four inequivalent symplectic-QSD codes of length $n = 2$ of type(1,0) over I from Manseri et al. [7]:

$$ C_1 = \langle [a | 0] \rangle, C_2 = \langle [a | a] \rangle, C_3 = \langle [a | b] \rangle, C_4 = \langle [a | c] \rangle. $$

The first table applies Theorem 1 to construct length-4 symplectic-QSD extensions from each $C_j$ for $j = 1, 2, 3, 4$.

The second table applies Theorem 2, enumerates all nonzero choices of $\mathbf{x}_i$,

$$ \mathbf{x}_1 = (1,0), \quad \mathbf{x}_2 = (0,1), \quad \mathbf{x}_3 = (1,1) \in \mathbb{F}_2^2, $$
records the associated $y$ and $z$, and presents the resulting length-6 symplectic self-orthogonal extensions. Finally, the third table applies Theorem 3, uses all nonzero $x_i$, computes the symplectic $y$ for each $C_j$, and reports the corresponding length-4 symplectic-QSD extensions.

240

241

242

243

<table><caption>**Table 4.** Extended codes of length 4.</caption><thead><tr><th>Generator of C<sub>j</sub></th><th>x<sub>i</sub></th><th>y</th><th>Generator of Extended Code</th></tr></thead><tbody><tr><td>[a | 0]</td><td>(1 | 0)</td><td>0</td><td><table><tr><td>a</td><td>a</td><td>a</td><td>0</td></tr><tr><td>0</td><td>a</td><td>0</td><td>0</td></tr></table></td></tr><tr><td>[a | a]</td><td>(1 | 1)</td><td>0</td><td><table><tr><td>a</td><td>a</td><td>a</td><td>a</td></tr><tr><td>0</td><td>a</td><td>0</td><td>a</td></tr></table></td></tr><tr><td>[a | b]</td><td>(1 | 0)</td><td>b</td><td><table><tr><td>a</td><td>a</td><td>a</td><td>0</td></tr><tr><td>b</td><td>a</td><td>b</td><td>b</td></tr></table></td></tr><tr><td>[a | c]</td><td>(1 | 1)</td><td>b</td><td><table><tr><td>a</td><td>a</td><td>a</td><td>a</td></tr><tr><td>b</td><td>a</td><td>b</td><td>c</td></tr></table></td></tr></tbody></table>

<table><caption>**Table 5.** Extended generators of length 6.</caption><thead><tr><th>Generator of C<sub>j</sub></th><th>x = (t | w)</th><th>y = &lang;w, u&rang;<sub>e</sub></th><th>z = &lang;t, v&rang;<sub>e</sub></th><th>Generator of Extended Code</th></tr></thead><tbody><tr><td rowspan="3">[a | 0]</td><td>(1 | 0)</td><td>0</td><td>0</td><td><table><tr><td>a</td><td>0</td><td>a</td><td>a</td><td>0</td><td>0</td></tr><tr><td>0</td><td>0</td><td>a</td><td>0</td><td>0</td><td>0</td></tr></table></td></tr><tr><td>(0 | 1)</td><td>a</td><td>0</td><td><table><tr><td>a</td><td>0</td><td>0</td><td>a</td><td>0</td><td>a</td></tr><tr><td>a</td><td>a</td><td>a</td><td>0</td><td>0</td><td>0</td></tr></table></td></tr><tr><td>(1 | 1)</td><td>a</td><td>0</td><td><table><tr><td>a</td><td>0</td><td>a</td><td>a</td><td>0</td><td>a</td></tr><tr><td>a</td><td>a</td><td>a</td><td>0</td><td>0</td><td>0</td></tr></table></td></tr><tr><td rowspan="3">[a | a]</td><td>(1 | 0)</td><td>0</td><td>a</td><td><table><tr><td>a</td><td>0</td><td>a</td><td>a</td><td>0</td><td>0</td></tr><tr><td>0</td><td>0</td><td>a</td><td>a</td><td>a</td><td>a</td></tr></table></td></tr><tr><td>(0 | 1)</td><td>a</td><td>0</td><td><table><tr><td>a</td><td>0</td><td>0</td><td>a</td><td>0</td><td>a</td></tr><tr><td>a</td><td>a</td><td>a</td><td>0</td><td>0</td><td>a</td></tr></table></td></tr><tr><td>(1 | 1)</td><td>a</td><td>a</td><td><table><tr><td>a</td><td>0</td><td>a</td><td>a</td><td>0</td><td>a</td></tr><tr><td>a</td><td>a</td><td>a</td><td>a</td><td>a</td><td>a</td></tr></table></td></tr><tr><td rowspan="3">[a | b]</td><td>(1 | 0)</td><td>0</td><td>b</td><td><table><tr><td>a</td><td>0</td><td>a</td><td>a</td><td>0</td><td>0</td></tr><tr><td>0</td><td>0</td><td>a</td><td>b</td><td>b</td><td>b</td></tr></table></td></tr><tr><td>(0 | 1)</td><td>a</td><td>0</td><td><table><tr><td>a</td><td>0</td><td>0</td><td>a</td><td>0</td><td>a</td></tr><tr><td>a</td><td>a</td><td>a</td><td>0</td><td>0</td><td>b</td></tr></table></td></tr><tr><td>(1 | 1)</td><td>a</td><td>b</td><td><table><tr><td>a</td><td>0</td><td>a</td><td>a</td><td>0</td><td>a</td></tr><tr><td>a</td><td>a</td><td>a</td><td>b</td><td>b</td><td>b</td></tr></table></td></tr><tr><td rowspan="3">[a | c]</td><td>(1 | 0)</td><td>0</td><td>c</td><td><table><tr><td>a</td><td>0</td><td>a</td><td>a</td><td>0</td><td>0</td></tr><tr><td>0</td><td>0</td><td>a</td><td>c</td><td>c</td><td>c</td></tr></table></td></tr><tr><td>(0 | 1)</td><td>a</td><td>0</td><td><table><tr><td>a</td><td>0</td><td>0</td><td>a</td><td>0</td><td>a</td></tr><tr><td>a</td><td>a</td><td>a</td><td>0</td><td>0</td><td>c</td></tr></table></td></tr><tr><td>(1 | 1)</td><td>a</td><td>c</td><td><table><tr><td>a</td><td>0</td><td>a</td><td>a</td><td>0</td><td>a</td></tr><tr><td>a</td><td>a</td><td>a</td><td>c</td><td>c</td><td>c</td></tr></table></td></tr></tbody></table>
<table><caption>**Table 7.** Extended generators of length 4.</caption><thead><tr><th>Generator of<br>C<sub>j</sub></th><th>x = (t | w)</th><th>y</th><th>Extended<br>generator G</th></tr></thead><tbody><tr><td rowspan="3">[c | 0]</td><td>(1 | 0)</td><td>0</td><td><table><tr><td>a</td><td>a</td><td>0</td><td>0</td></tr><tr><td>0</td><td>c</td><td>0</td><td>0</td></tr><tr><td>a</td><td>0</td><td>0</td><td>a</td></tr><tr><td>c</td><td>c</td><td>c</td><td>0</td></tr><tr><td>a</td><td>a</td><td>0</td><td>a</td></tr><tr><td>c</td><td>c</td><td>c</td><td>0</td></tr></table></td></tr><tr><td>(0 | 1)</td><td>c</td><td><table><tr><td>a</td><td>c</td><td>0</td><td>0</td></tr><tr><td>c</td><td>c</td><td>c</td><td>0</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>c</td><td>c</td><td>0</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>c</td><td>c</td><td>0</td></tr></table></td></tr><tr><td>(1 | 1)</td><td>c</td><td><table><tr><td>a</td><td>c</td><td>0</td><td>0</td></tr><tr><td>c</td><td>c</td><td>c</td><td>0</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>c</td><td>c</td><td>0</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>c</td><td>c</td><td>0</td></tr></table></td></tr><tr><td rowspan="3">[c | c]</td><td>(1 | 0)</td><td>c</td><td><table><tr><td>a</td><td>c</td><td>0</td><td>0</td></tr><tr><td>c</td><td>c</td><td>c</td><td>0</td></tr><tr><td>a</td><td>0</td><td>0</td><td>a</td></tr><tr><td>c</td><td>c</td><td>c</td><td>0</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>c</td><td>c</td><td>0</td></tr></table></td></tr><tr><td>(0 | 1)</td><td>c</td><td><table><tr><td>a</td><td>c</td><td>0</td><td>0</td></tr><tr><td>c</td><td>c</td><td>c</td><td>0</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>c</td><td>c</td><td>0</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>c</td><td>c</td><td>0</td></tr></table></td></tr><tr><td>(1 | 1)</td><td>0</td><td><table><tr><td>a</td><td>c</td><td>0</td><td>0</td></tr><tr><td>c</td><td>c</td><td>c</td><td>0</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>c</td><td>c</td><td>0</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>c</td><td>c</td><td>0</td></tr></table></td></tr><tr><td rowspan="3">[a | 0]</td><td>(1 | 0)</td><td>y<sub>1</sub> = 0, y<sub>2</sub> = c</td><td><table><tr><td>a</td><td>c</td><td>0</td><td>0</td></tr><tr><td>c</td><td>0</td><td>c</td><td>c</td></tr><tr><td>a</td><td>0</td><td>0</td><td>a</td></tr><tr><td>c</td><td>0</td><td>0</td><td>c</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>0</td><td>c</td><td>0</td></tr></table></td></tr><tr><td>(0 | 1)</td><td>y<sub>1</sub> = a, y<sub>2</sub> = 0</td><td><table><tr><td>a</td><td>c</td><td>0</td><td>0</td></tr><tr><td>c</td><td>0</td><td>c</td><td>c</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>0</td><td>c</td><td>0</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>0</td><td>c</td><td>0</td></tr></table></td></tr><tr><td>(1 | 1)</td><td>y<sub>1</sub> = a, y<sub>2</sub> = c</td><td><table><tr><td>a</td><td>c</td><td>0</td><td>0</td></tr><tr><td>c</td><td>0</td><td>c</td><td>c</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>0</td><td>c</td><td>0</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>0</td><td>c</td><td>0</td></tr></table></td></tr><tr><td rowspan="3">[a | a]</td><td>(1 | 0)</td><td>y<sub>1</sub> = a, y<sub>2</sub> = c</td><td><table><tr><td>a</td><td>c</td><td>0</td><td>0</td></tr><tr><td>c</td><td>0</td><td>c</td><td>c</td></tr><tr><td>a</td><td>0</td><td>0</td><td>a</td></tr><tr><td>c</td><td>0</td><td>c</td><td>c</td></tr><tr><td>a</td><td>0</td><td>c</td><td>0</td></tr><tr><td>c</td><td>0</td><td>c</td><td>0</td></tr></table></td></tr><tr><td>(0 | 1)</td><td>y<sub>1</sub> = a, y<sub>2</sub> = 0</td><td><table><tr><td>a</td><td>c</td><td>0</td><td>0</td></tr><tr><td>c</td><td>0</td><td>c</td><td>c</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>0</td><td>c</td><td>0</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>0</td><td>c</td><td>0</td></tr></table></td></tr><tr><td>(1 | 1)</td><td>y<sub>1</sub> = 0, y<sub>2</sub> = c</td><td><table><tr><td>a</td><td>c</td><td>0</td><td>0</td></tr><tr><td>c</td><td>0</td><td>c</td><td>c</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>0</td><td>c</td><td>0</td></tr><tr><td>a</td><td>c</td><td>c</td><td>0</td></tr><tr><td>c</td><td>0</td><td>c</td><td>0</td></tr></table></td></tr></tbody></table>
## Codes over $H$

In this section, we begin with the five inequivalent symplectic-QSD codes of length $n = 2$ of type(1, 1) over $H$ from Manseri et al. [17] namely

$$G_1 = \begin{bmatrix} a & 0 \\ b & 0 \end{bmatrix}, G_2 = \begin{bmatrix} a & 0 \\ 0 & b \end{bmatrix}, G_3 = \begin{bmatrix} a & 0 \\ b & b \end{bmatrix}, G_4 = \begin{bmatrix} a & a \\ 0 & b \end{bmatrix}, G_5 = \begin{bmatrix} a & a \\ b & b \end{bmatrix}.$$

The first table applies Theorem 6 to construct length-4 symplectic-QSD extensions from each $C_j$ for $j = 1, 2, 3, 4$.

The second table applies Theorem 7, enumerates all nonzero choices of $x_i$,

$$x_1 = (1,0), \quad x_2 = (0,1), \quad x_3 = (1,1) \in \mathbb{F}_2^2,$$

records the associated $y$ and $z$, and presents the resulting length-6 symplectic self-orthogonal extensions.

Finally, the third table (Table 11) applies Theorem 8, uses all nonzero $x_i$, computes the symplectic $y$ for each $C_j$, and reports the corresponding length-4 symplectic-QSD extensions.

<table><caption>**Table 9.** Extended generators of length 4.</caption><thead><tr><th>Generator of C<sub>j</sub></th><th>x<sub>i</sub></th><th>y<sub>1</sub>, y<sub>2</sub></th><th>Generator of Extended code</th></tr></thead><tbody><tr><td><b>[</b>a<sub>1</sub> 0<sub>2</sub><b>]</b></td><td>(1 0)</td><td>y<sub>1</sub> = 0, y<sub>2</sub> = 0</td><td><b>[</b>c c 0 0<sub>2</sub><b>]</b></td></tr><tr><td><b>[</b>0 0<sub>2</sub><b>]</b></td><td>(1 0)</td><td>y<sub>1</sub> = 0, y<sub>2</sub> = b</td><td><b>[</b>0 a 0 0<sub>2</sub><b>]</b></td></tr><tr><td><b>[</b>a<sub>1</sub> 0<sub>2</sub><b>]</b></td><td>(1 0)</td><td>y<sub>1</sub> = 0, y<sub>2</sub> = b</td><td><b>[</b>0 a 0 0<sub>2</sub><b>]</b></td></tr><tr><td><b>[</b>b<sub>1</sub> b<sub>2</sub><b>]</b></td><td>(1 1)</td><td>y<sub>1</sub> = 0, y<sub>2</sub> = b</td><td><b>[</b>0 a 0 0<sub>2</sub><b>]</b></td></tr><tr><td><b>[</b>a<sub>1</sub> a<sub>2</sub><b>]</b></td><td>(1 1)</td><td>y<sub>1</sub> = 0, y<sub>2</sub> = b</td><td><b>[</b>c c 0 0<sub>2</sub><b>]</b></td></tr><tr><td><b>[</b>0 0<sub>2</sub><b>]</b></td><td>(1 1)</td><td>y<sub>1</sub> = 0, y<sub>2</sub> = b</td><td><b>[</b>0 a 0 0<sub>2</sub><b>]</b></td></tr><tr><td><b>[</b>b<sub>1</sub> b<sub>2</sub><b>]</b></td><td>(1 1)</td><td>y<sub>1</sub> = 0, y<sub>2</sub> = b</td><td><b>[</b>0 a 0 0<sub>2</sub><b>]</b></td></tr></tbody></table>
<table><caption>**Table 11.** Extended generators of length 4.</caption><thead><tr><th>Generator of C<sub>j</sub></th><th>x<sub>i</sub></th><th>y</th><th>Generator of Extended code</th></tr></thead><tbody><tr><td rowspan="3">[a | 0]<br/>[b | 0]</td><td>(1 | 0)</td><td>y<sub>1</sub> = 0, y<sub>2</sub> = 0</td><td>[c c<br/>0 a<br/>0 b<br/>c 0<br/>a a<br/>b b<br/>c c<br/>a a<br/>b b<br/>0 0<br/>0 0<br/>0 0<br/>0 c<br/>a 0<br/>b 0<br/>0 c<br/>a 0<br/>b 0]</td></tr><tr><td>(0 | 1)</td><td>y<sub>1</sub> = a, y<sub>2</sub> = b</td><td>[c c<br/>0 a<br/>0 b<br/>c 0<br/>a a<br/>0 0<br/>c c<br/>a a<br/>b 0<br/>0 0<br/>0 c<br/>a 0<br/>b 0]</td></tr><tr><td>(1 | 1)</td><td>y<sub>1</sub> = a, y<sub>2</sub> = b</td><td>[c c<br/>0 a<br/>0 b<br/>c c<br/>a a<br/>b 0<br/>0 0<br/>0 c<br/>a 0<br/>b 0]</td></tr><tr><td rowspan="3">[a | 0]<br/>[0 | b]</td><td>(1 | 0)</td><td>y<sub>1</sub> = 0, y<sub>2</sub> = b</td><td>[c c<br/>0 a<br/>0 b<br/>c 0<br/>a a<br/>0 0<br/>c c<br/>a a<br/>b 0<br/>0 0<br/>0 c<br/>a 0<br/>b 0]</td></tr><tr><td>(0 | 1)</td><td>y<sub>1</sub> = a, y<sub>2</sub> = 0</td><td>[c c<br/>0 a<br/>0 b<br/>c 0<br/>a a<br/>b b<br/>c c<br/>a a<br/>0 b<br/>0 0<br/>0 c<br/>a 0<br/>b 0]</td></tr><tr><td>(1 | 1)</td><td>y<sub>1</sub> = a, y<sub>2</sub> = 0</td><td>[c c<br/>0 a<br/>0 b<br/>c c<br/>a a<br/>0 b<br/>0 0<br/>0 c<br/>a 0<br/>b 0]</td></tr><tr><td rowspan="3">[a | a]<br/>[0 | b]</td><td>(1 | 0)</td><td>y<sub>1</sub> = a, y<sub>2</sub> = b</td><td>[c c<br/>a a<br/>0 b<br/>c 0<br/>a a<br/>0 0<br/>c c<br/>a a<br/>b 0<br/>0 0<br/>0 c<br/>a 0<br/>b 0]</td></tr><tr><td>(0 | 1)</td><td>y<sub>1</sub> = a, y<sub>2</sub> = 0</td><td>[c c<br/>a a<br/>0 b<br/>c 0<br/>a a<br/>0 0<br/>c c<br/>a a<br/>b b<br/>0 0<br/>0 c<br/>a 0<br/>b 0]</td></tr><tr><td>(1 | 1)</td><td>y<sub>1</sub> = 0, y<sub>2</sub> = b</td><td>[c c<br/>a a<br/>0 b<br/>c c<br/>a a<br/>0 b<br/>0 0<br/>0 c<br/>a 0<br/>b 0]</td></tr><tr><td rowspan="3">[a | a]<br/>[b | b]</td><td>(1 | 0)</td><td>y<sub>1</sub> = a, y<sub>2</sub> = b</td><td>[c c<br/>a a<br/>0 b<br/>c 0<br/>a a<br/>b b<br/>c c<br/>a a<br/>b b<br/>0 0<br/>0 c<br/>a a<br/>b b]</td></tr><tr><td>(0 | 1)</td><td>y<sub>1</sub> = a, y<sub>2</sub> = b</td><td>[c c<br/>a a<br/>b b<br/>c 0<br/>a a<br/>b b<br/>c c<br/>a a<br/>b b<br/>0 0<br/>0 c<br/>a a<br/>b b]</td></tr><tr><td>(1 | 1)</td><td>y<sub>1</sub> = 0, y<sub>2</sub> = 0</td><td>[c c<br/>0 a<br/>0 b<br/>c c<br/>a a<br/>b b<br/>0 0<br/>0 c<br/>a 0<br/>b 0]</td></tr></tbody></table>
## 5. Conclusion

In this manuscript, we have presented build up methods for constructing symplectic self-orthogonal and symplectic-QSD codes over non-unitary rings of order four. As an application, we have generated numerous distinct codes over these rings up to equivalence for small lengths. As an open problem, this technique can be extended to other non-unitary rings of odd characteristic. Furthermore, a similar classification can be derived for longer code lengths.

**Author Contributions:** Conceptualization, A.A., S.M. and P.S.; methodology, A.A., S.M.; software, A.A.; validation, A.A., S.M.; formal analysis, A.A., S.M.; investigation, A.A., S.M.; resources, P.S.; data curation, S.M.; writing—original draft preparation, A.A., S.M.; writing—review and editing, S.M., P.S. and A.A.; visualization, A.A., S.M.; supervision, P.S.; project administration, A.A.; funding acquisition, A.A. All authors have read and agreed to the published version of the manuscript.

## References

1. MacWilliams, F.J.; Sloane, N.J.A. *The Theory of Error-Correcting Codes*; North-Holland: Amsterdam, The Netherlands, 1977.

2. Fine, B. Classification of finite rings of order $p^2$. *Math. Mag.* **1993**, *66*, 248–252.

3. Huffman, W.C.; Pless, V. *Fundamentals of Error-Correcting Codes*; Cambridge University Press: Cambridge, UK, 2003.

4. Alahmadi, A.; Melaibari, A.; Solé, P. Duality of codes over non-unital rings of order four. *IEEE Access* **2023**, *11*, 53120–53133.

5. Kim, J.-L.; Lee, Y. An efficient construction of self-dual codes. *Bull. Korean Math. Soc.* **2015**, *52*, 915–923.

6. Kim, J.-L.; Lee, Y. Construction of MDS self-dual codes over Galois rings. *Des. Codes Cryptogr.* **2007**, *45*, 247–258.

7. Manseri, S.; Betty, R.A.; Galvez, L.; Solé, P. Symplectic codes over a non-unitary ring. *J. Algebra Its Appl.* **2025**, in press.

8. Alahmadi, A.; Altassan, A.; Basaffar, W.; Shoaib, H.; Bonnecaze, A.; Solé, P. Type IV codes over a non-unital ring. *J. Algebra Its Appl.* **2022**, *21*, 2250142.

9. Li, X.; Zhu, Y. Relation between minimum Hamming and symplectic distances in $[2n, k]$-codes over finite fields. *J. Algebraic Coding Theory* **2024**, *15*, 123–135.

10. Alahmadi, A.; Altassan, A.; Basaffar, W.; Shoaib, H.; Bonnecaze, A.; Solé, P. The build-up construction over a commutative non-unital ring. *Des. Codes Cryptogr.* **2022**, *90*, 3003–3010.

11. Alahmadi, A.; Altassan, A.; Basaffar, W.; Shoaib, H.; Bonnecaze, A.; Solé, P. Quasi Type IV codes over a non-unital ring. *Appl. Algebra Eng. Commun. Comput.* **2021**, *32*, 217–228.

12. Alahmadi, A.; Altassan, A.; Basaffar, W.; Shoaib, H.; Bonnecaze, A.; Solé, P. Type IV codes over a non-unital ring. *J. Algebra Its Appl.* **2022**, *21*, 2250142.

13. Alahmadi, A.; Altassan, A.; Basaffar, W.; Bonnecaze, A.; Shoaib, H.; Solé, P. The build-up construction of quasi self-dual codes over a non-unital ring. *J. Algebra Its Appl.* **2021**, in press.

14. Alahmadi, A.; Altassan, A.; Basaffar, W.; Bonnecaze, A.; Shoaib, H.; Solé, P. Type IV codes over a non-local non-unital ring. *Proyecciones* **2020**, *39*, 963–978.

15. Calderbank, A.R.; Rains, E.M.; Shor, P.M.; Sloane, N.J.A. Quantum error correction via codes over GF(4). *IEEE Trans. Inf. Theory* **1998**, *44*, 1369–1387.

16. Jin, L.; Xing, C. Quantum Gilbert-Varshamov bound through symplectic self-orthogonal codes. In *Proceedings of the 2011 IEEE International Symposium on Information Theory*, St. Petersburg, Russia, 31 July–5 August 2011; pp. 455–458.

17. Manseri, S.; Alahmadi, A.; Basaffar, W.; Betty, R.A.; Galvez, L.; Solé, P. Symplectic QSD codes and their classification over a non-unital non-local ring of order four. Submitted.

**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.