On duals and parity-checks of convolutional codes over Z p r

A convolutional code C over Z p r (( D )) is a Z p r (( D ))-submodule of Z np r (( D )) that admits a polynomial set of generators, where Z p r (( D )) stands for the ring of (semi-inﬁnity) Laurent series. In this paper we study several structural properties of its dual C ⊥ . We use these results to provide a constructive algorithm to build an explicit generator matrix of C ⊥ . Moreover, we show that the transpose of such a matrix is a parity-check matrix (also called syndrome former) of C .


Introduction
Convolutional codes form a fundamental class of linear codes that are widely used in applications (see also the related notion of sequential cellular automata [2]) . They are typically described by means of a generator matrix, which is a polynomial matrix with coefficients in a finite field or a finite ring, depending on the application. Yet, the state of the art is totally different for these two classes of convolutional codes. The mathematical theory of convolutional codes over finite fields is much developed and has produced many sophisticated classes of codes. On the other hand, the mathematical theory of convolutional codes over finite rings is still in the beginnings. Many results and notions that are well-known for linear convolutional codes over finite fields have not been fully investigated in the context of finite rings. One of these notions is the one of dual code. Dual codes of convolutional codes over a finite field have been extensively studied, see e.g. the work of Forney and McEliece in [7,13] where they showed that when C is defined over F((D)), F a finite field, then, the dual code of C is again a convolutional code and C always admits a parity-check representation. In our quest to extend these results over finite fields, we consider in this paper convolutional codes C over Z p r ((D)) which are a particular class of linear codes and investigate their dual codes C ⊥ . We derive fundamental structural properties of C ⊥ and show that they possess the structure of a convolutional code. Moreover, we present a constructive methodology to derive a generator matrix for C ⊥ which will lead to an explicit construction of a paritycheck matrix for C. Hence, this work completes previous results in [3,16,14] and can be considered a generalization and an extension, to the ring case, of the work previously done for convolutional codes over a finite field. The outline of this paper is as follows. In Section 2 we present fundamental results on the structure of convolutional codes over the finite ring Z p r ((D)). We also present some results on free convolutional codes. In Section 3 we address and solve the main problems of the paper. We divide this section in three parts. The first treats the simpler case of free convolutional codes over Z p r ((D)) and then we address the general case. We conclude this section presenting a constructive algorithm to build a generator matrix of the dual code. Some of the most technical proof are presented in the appendix to ease readability.

Preliminaries results
In this section we present the setting and the necessary results to address the problems in the next section. Following most the literature on convolutional codes over a finite ring, we consider an approach in which code sequences are semi-infinite Laurent series, i.e., convolutional codes constituted by left compact sequences in Z p r , see [4,8,9,10,12]. Hence, the elements of the code (codewords) will be of the form where w t = 0 for t < for some ∈ Z and these sequences can be represented by Laurent series, Let us denote by Z p r [D] the ring of polynomials with coefficients in Z p r and by Z p r (D) the ring of rational matrices defined in Z p r . More precisely, Z p r (D) is the set This condition allows us to treat a rational function as an equivalence class in the relation Note that Z p r (D) is a subring of Z p r ((D)) and, obviously Z p r [D] is a subring of Z p r (D). The next results follow from Theorem 2 and Proposition 2 in [5].
for some C(D) ∈ Z × p r (D). Then, the inverse of A(D) is given by The converse is immediate.
The matrix G(D) is called a generator matrix of C. If G(D) is full row rank 1 , then, it is called an encoder of C and C is a free module, called free convolutional code.
Note that as we require the generator matrix to be polynomial, not all Z p r ((D))-submodules of Z n p r ((D)) are convolutional codes. A polynomial matrix H(D) is a parity-check matrix (or syndrome former) of a convolutional code C if C = Ker H T (D), i.e., for every It is easy to show that if G 1 (D), G 2 (D) ∈ Z k×n p r [D] are two encoders of a free convolutional code C, then, for some invertible matrix R(D) ∈ Z k×n p r (D). Next, we present some properties on free convolutional codes that will be fundamental for the study of the dual codes. First we consider the following auxiliary lemmas for free modules. From the lineality of C it readily follows that which immediately implies the next result.
Lemma 2. Let C be a free convolutional code of length n. For any given integers j ∈ {0, . . . r − 1} and i ≤ j we have that Note that if C is a free convolutional code over Z p r ((D)), then, its projection into Z p ((D)), C = C mod p, is also a convolutional code over Z p ((D)). More generally, one can easily prove that for free convolutional codes C, C 1 , C 2 of length n such that C = C 1 ⊕ C 2 it holds that for j = 0, 1, . . . , r − 1, From this the next result is straightforward.
Lemma 3. Let C, C 1 , C 2 be free convolutional codes of length n such that C = C 1 ⊕ C 2 . Then,C =C 1 ⊕C 2 mod p.
Lemma 4. Let C 1 , C 2 be free convolutional codes of length n. Then, for i ∈ {0, 1, . . . , r−1}, it holds that, Proof. It is easy to see that p j (C 1 ∩ C 2 ) = p j C 1 ∩ p j C 2 , for all j ∈ {0, 1, . . . , r − 1} and therefore using Lemma 2 for j = r − 1 it follows that and consequently We conclude the section by presenting a result that allows to decompose a convolutional code into simpler components. These simpler components are built over free convolutional codes, and therefore the next result together with the previous results on free convolutional codes will constitute the basic tools in order to address the main problem of the paper. This result can be found in [3] and its proof provides a procedure to obtain a generator matrix of the code of the form . . .
full row rank. We include the proof here for the sake of completeness.
Let C be a convolutional code over Z p r . Then, there exist free convolutional codes over Z p r , C 0 , C 1 , . . . , C r−1 , such that is full row rank then C is free and C = C 0 . Let us assume now that G(D) is not full row rank. Then, its projection into Z p ((D)) satisfies rank(G(D)) = k 0 < k and there exists a nonsingular matrix and is also a generator matrix of C.
Let us now consider , and therefore is not full row rank, then there exists a permutation matrix P and a rational is a full row rank rational matrix. Note that since P Proceeding in the same way we obtain a generator matrix of C of the form is full row rank. Thus C = C 0 ⊕pC 1 ⊕· · ·⊕p r−1 C r−1 with C i := Im G i (D) a free convolutional code, i = 0, 1, . . . , r − 1, and such that the sum C 0 ⊕ C 1 ⊕ · · · ⊕ C r−1 is direct.
As Z n p r ((D)) is a semi-simple module [11] the previous result readily follows for any submodule of Z n p r ((D)). Note however that convolutional codes are submodules of Z n p r ((D)) that admit a polynomial basis. It is worth mentioning that the previous theorem is the convolutional version of the linear block code decomposition of Caire and Biglieri in [1].

Dual Codes
We begin by recalling the standard definition of the dual of a code.
Definition 2. Let C be a convolutional code of length n. The dual of C, denoted by C ⊥ , is defined as The main result of this section is an algorithm for the explicit construction of a matrix representation (generator matrix) of C ⊥ . To this end, we shall decompose C as a direct summand of submodules given in terms of free modules. We first address the case when C is itself a free module and then, consider the general case. Lemma 6. If C is a free convolutional code with length n and rank k, then, C ⊥ is also a free convolutional code of length n and rank n − k . Moreover, with H(D) a rational matrix as defined in (3). Then is full column rank, there exists a full row rank matrix polynomial matrix G ⊥ (D) ∈ Z (n−k)×n p r [D] such that C ⊥ = Im Z p r ((D)) G ⊥ (D). Thus C ⊥ is a free convolutional code of rank n − k.
Therefore free convolutional codes admit representations by means of parity-check matrices. Note that the transposes of the encoders of C ⊥ are the parity-check matrices of C. We illustrate the free case by a simple example.
Example 1. Consider the free convolutional code C over Z 9 ((D)) with encoder Then, = Im Z 9 ((D)) 1 + 7D + 6D 2 8 + 7D + 8D 2 1 + 2D + D 2 and therefore 3.2. The dual of a convolutional code over Z p r ((D)): The general case In this subsection we investigate the structural properties of the dual and the existence of a parity-check matrix of a non necessarily free convolutional code. We use the free modules C i of Theorem 1 and the decomposition of C in terms of those C i to characterize the structure of C ⊥ as direct sum of submodules of C ⊥ . Lemma 7. Let C be a convolutional code defined in Z p r ((D)). Then, for all integers i ∈ {0, . . . r − 1} it follows that If C i are as in Theorem 1, then, for all k ∈ {0, 1, . . . , r − 1} it holds that Proof. Clearly C ⊥ + p r−i Z n p r ((D)) ⊂ (p i C) ⊥ . For the other inclusion, let y ∈ (p i C) ⊥ , then for all x ∈ C we have y · p i x T = p i y · x T = 0, thus p i y ∈ C ⊥ . It is easy to see that there exists x ∈ C ⊥ such that p i y = p i x. This implies that y = x. Thus there exists y 1 ∈ C ⊥ , y 2 ∈ Z p r ((D)) satisfying y = y 1 + py 2 . We have p i y = p i y 1 + p i+1 y 2 , then p i y − p i y 1 = p i+1 y 2 ∈ C ⊥ . Then y 2 = y 3 + py 4 where y 3 ∈ C ⊥ and y 4 ∈ Z n p r ((D)). Then y = y 1 + py 3 ∈C ⊥ +p 2 y 4 . By repeating this procedure r − i times, we obtain y = x 1 + p r−i x 2 with x 1 ∈ C ⊥ . For the second statement we proceed by induction on k. For k = 1 we use (5) to obtain that Assume now that the statement holds for k, we shall prove that it also holds for k + 1. Using (5) and the assumption, Lemma 8. Let C be a convolutional code of length n and let C 0 , C 1 , . . . , C r−1 be free convolutional codes such that C = C 0 ⊕ pC 1 ⊕ . . . ⊕ p r−1 C r−1 with Then, Proof. (⊃) We shall show that each term of the form p r−i (C 0 ⊕ C 1 ⊕ · · · ⊕ C i−1 ) ⊥ on the right-hand side of (6) is contained in C ⊥ , for i = 1, 2, . . . , r. First note that and since, obviously, Finally, by equation 1, Next we present our main result that fully characterizes the structure of C ⊥ as direct summand of some submodules which are given in terms of the free C i derived in Theorem 1.
Theorem 2. Let C be a convolutional code of length n and let C 0 , C 1 , · · · , C r−1 be free convolutional codes such that C = C 0 ⊕ pC 1 ⊕ · · · ⊕ p r−1 C r−1 with and let B r−i be a free convolutional code such that i = 1, . . . , r − 1, and B 0 = (C 0 ⊕ · · · ⊕ C r−1 ) ⊥ . Then, Proof. First note that the existence of such free B i 's follows from previous results in Section 3 as the dual of a free code is free. Since all the modules in (7) are free we can apply equation 2 to obtain that for all j ∈ {0, 1, . . . , r − 1}. By Lemma 8 we have that Using (8) for each term of (9) we get that It remains to show that Using recursively equation (7) it is easy to verify that Thus, which proves (10).
Next theorem shows that all convolutional codes admit parity-check matrices.
Theorem 3. Let C be a convolutional code of length n and H(D) be a generator matrix of C ⊥ . Then, for w(D) ∈ Z n p r ((D)),

An algorithm for building a generator matrix of C ⊥
We are now in position to present a constructive algorithm that produce a generator matrix of the dual of a given convolutional code C = Im Z p r ((D)) G(D). First we treat the case where G(D) is not the zero matrix. At the end of the section we indicate how to proceed in the other case.
Step 2: Compute H i (D) such that the following holds: . . .
To compute them we use that  is full row rank and then, we can construct an n × n invertible matrix where p i (D) are nonzero polynomials with coefficients in Z p r .
Step 3: The output gives which is a generator matrix of C ⊥ .
Note that [H i (D) · · · H 0 (D)] is a generator matrix of (C 0 ⊕ C r−1−i ) ⊥ , i = 0, . . . r − 1. Then, by Theorem 2, it follows that B i = Im H i (D), for i = 0, . . . , r − 1 are such that and therefore by Theorem 3 we conclude that H T (D) is a parity-check matrix of C.
Consider now the case in which the generator matrix G(D) of C is such that G(D) is the zero matrix. Applying Lemma 7 it follows that we can write G(D) = p i G(D) with G(D) satisfying the conditions of the first case, i.e., G(D) = 0. Thus, applying the algorithm for G(D) we obtain the parity-check matrix H(D) of Im Z p r ((D)) G(D) and therefore a generator matrix for C ⊥ is given by .
We present two examples to illustrate the procedure described above for the two cases considered.
Example 2. Consider the convolutional code C defined in Z 9 ((D)) with generator matrix where C 0 = Im Z 9 ((D)) G 0 (D) and C 1 = Im Z 9 ((D)) G 1 (D), with G 0 (D) = 1 + D 1 3D and G 1 (D) = 0 1 + D 1 + D . Since The following example is very similar to Example 2 but it was modified to illustrate better how to proceed for the second case.

Appendix
Here we need to introduce an auxiliary lemma.
Lemma 9. For j ∈ {0, 1, . . . , r − 1} it holds that Proof of the Auxiliary Lemma 9: We shall prove it using induction. Consider j = 1 and Now assume the statement holds for j − 1. We shall prove it holds for j. Consider Using the assumption and then multiplying w(D) by p j−1 the last term of (12) vanishes and we get that Again we use Lemma 4 to conclude that which implies that This completes the proof.
Applying Lemma 9 in (14) for j = r − 1 we immediately obtain that On the other hand, in the light of the relation (7) we can readily obtain the following relation (C 0 ⊕ C 1 ⊕ · · · ⊕ C i−1 ) ⊥ = B 0 ⊕ B 1 ⊕ · · · ⊕ B r−i .
Finally, applying these equalities in (15) we get that