Minimal State-Space Representation of Convolutional Product Codes

: In this paper, we study product convolutional codes described by state-space representations. In particular, we investigate how to derive state-space representations of the product code from the horizontal and vertical convolutional codes. We present a systematic procedure to build such representation with minimal dimension, i


Introduction
It is well-known that the combination of codes can yield a new code with better properties than the single codes alone. Such combinations have been widely used in coding theory in different forms, e.g., concatenation, product codes, turbo codes, array codes, or using EVENODD and interleaving methods [1][2][3][4][5][6][7][8]. The advantages of the combination of codes can be due to, for instance, larger distance, lower decoding complexity or improved burst error correction. In this paper, we shall focus on the so-called product codes, which is a natural generalization of the interleaved schemes. More concretely, we will focus on product convolutional codes.
In the context of block product codes, the codewords are constant matrices with entries in a finite field. We may consider that both rows and columns are encoded into error-correcting codes. Hence, for encoding, first the row redundant symbols are obtained (horizontal encoding using C h ), and then the column redundant symbols (vertical encoding using C v ). If C h has minimum distance d h , and C v has minimum distance d v , it is easy to see that the product code, denoted by C h ⊗ C v , has minimum distance d h d v . This class of product codes has been thoroughly studied and is widely used to correct burst and random errors using many possible different decoding procedures. However, the product of two convolutional codes has been less investigated and many properties that are known for block codes are still to be investigated in the convolutional context. Naturally, the class of convolutional codes generalizes the class of linear block codes, and, therefore, they are mathematically more involved than block codes. In this context, the data are considered as a sequence in contrast with block codes which operate with fixed message blocks (matrices in this case). Even though they split the data into blocks of a fixed rate as block codes do, the relative position of each block in the sequence is taken into account. The blocks are not encoded independently and previously encoded data (matrices in this case) in the sequence have an effect over the next encoded node. Because of this, convolutional codes have memory and can be viewed as linear systems over a finite field (see, for instance, [5,[9][10][11][12][13][14][15][16][17][18]). A description of convolutional codes can be provided by a time-invariant discrete linear system called discrete-time state-space system in control theory (see [19][20][21]). Hence, we consider product convolutional codes described by statespace representations. Convolutional codes have already been thoroughly investigated within this framework and fundamental system theoretical properties, such as observability, reachability, and minimality, have been derived in [11][12][13][14].
It is worth mentioning the results derived in [22,23] on fundamental algebraic properties of the encoders representing product convolutional codes. In addition, they showed that every product convolutional code can be represented as a woven code and introduced the notion of block distances. In [22], it is was shown that, if the generator matrices of the horizontal and vertical convolutional codes are minimal basic, then the generator matrix of the product code is also minimal basic. In this work, we continue this thread of research but within input-state-space framework instead of working with generator matrices. We present a constructive methodology to build a minimal state-space representations for these codes from two minimal state-space representation of the corresponding horizontal C h and vertical C v convolutional codes. These representations are, therefore, reachable and observable and are easily constructed by sorting and selecting some of the entries of a given matrix built upon the state-space representations of C h and C v . This is done directly without using the encoder matrix representations of the convolutional codes. The derived representations are minimal and, therefore, are reachable and observable. Moreover, they are easily constructed by sorting and selecting some of the entries of a given matrix built upon the state-space representations of C h and C v .
Recently, there have been new advances in the original idea of deriving an algebraic decoding algorithm of convolutional codes using state space representations. The idea was first proposed in [24] and heavily uses the structure of these representations to derive a general procedure, which will allow for extending known decoding algorithms for block codes (like, e.g., the Berlekamp-Massey algorithm) to convolutional codes. More concretely, the algorithm iteratively computes the state vector x t inside the trellis diagram, and, once this state vector is constructed, the algorithm computes, in an algebraic manner, a new state vector x t+s , where s is related to the observability index of the state representation. Recently, these ideas have been further developed in [25,26]. Hence, the ideas of this paper can be used to built a minimal state space representation of a product convolutional code with the property that its decoding can be simplified by considering the simpler horizontal and vertical component codes and applying the decoding algorithms developed in [25,26].
In [27], an input-state-output representation of each one of the convolutional codes C h and C v , two input-state-output representations of the product convolutional code C h ⊗ C v were introduced, but none of them are minimal, even if the two input-state-output representations are both minimal. In this paper, we give a solution to this problem.
The rest of the paper is organized as follows: In Section 2, we introduce the background on polynomial matrices and convolutional codes to understand the paper. In Section 3, we describe how product convolutional codes can be viewed as a convolutional code whose generator matrix is the Kronecker product of the corresponding generator matrices. In Section 4, we provide a state-space realization of the product convolutional code based on a state-space realization of each one of the convolutional codes involved in the product. Finally, in Section 5, we present the conclusions and future work.

Preliminaries
Let F be a finite field, F[z] the ring of polynomials in the variable z and coefficients in F, and F(z) the set of rational functions in the variable z and coefficients in F.
Assume that k and n are positive integers with n > k, denote by F[z] n×k the set of all n × k matrices with entries in F[z], and denote by F[z] n the set F[z] n×1 .
A matrix U(z) ∈ F[z] k×k is called unimodular if it admits a polynomial inverse; that is, its determinant is a nonzero element of F (see, for example [28,29]).
Assume that G(z) ∈ F[z] n×k . The internal degree of G(z) is the maximum degree of the k × k minors of G(z). We said that G(z) is basic if its internal degree is the minimum of the internal degrees of the matrices G(z)U(z), for all invertible matrices U(z) ∈ F(z) k×k ; i.e., the internal degree of G(z) is as small as possible (see, for instance, [17,[30][31][32][33]. In particular, if U(z) is unimodular, then G(z) and G(z)U(z) have the same internal degrees. G(z) is called right prime, if, for every factorization, G(z) = G (z)U(z) with G (z) ∈ F[z] n×k and U(z) ∈ F[z] k×k ; necessarily, U(z) is unimodular (see, for instance, [28,33,34]). Furthermore, G(z) is basic if and only if any (and therefore all) of the following equivalent conditions are satisfied: G(z) is right prime, G(z) has a polynomial left inverse [17,32]).
Assume that G(z) = g ij (z) ∈ F[z] n×k and denote by ν j = max 1≤i≤n deg g ij (z) the j-th column degree of G(z). We said that G(z) is column reduced if the rank of the high- is the coefficient of z ν j in g ij (z). Equivalently, G(z) is column reduced if and only if its internal and external degrees coincide, where the external degree of G(z) is the number ∑ k j=1 ν j . Note that the internal degree of a polynomial matrix is always less than or equal to its external degree [17]. For any G(z) ∈ F[z] n×k , there exists a unimodular matrix U(z) ∈ F[z] k×k such that G(z)U(z) is column reduced. Moreover, if G(z), G(z)U(z) ∈ F[z] n×k are column reduced matrices with U(z) ∈ F[z] k×k unimodular, then G(z) and G(z)U(z) have the same column degrees, up to a permutation. Column reduced matrices are also called minimal matrices [12,13,33]). Basic and reduced matrices are also called minimal-basic matrices [30][31][32] or canonical matrices [17].
A rate k/n convolutional code C is an F[z]-submodule of rank k of the module F[z] n (see [18,20,35]). Since F[z] is a Principle Ideal Domain, a convolutional code C has always a well-defined rank k, and there exists G(z) ∈ F[z] n×k , of rank k, such that (see [35]) where u(z) is the information vector, v(z) is the corresponding codeword, and G(z) is the generator or encoder matrix of C.
If G(z) ∈ F[z] n×k is a generator matrix of C and U(z) ∈ F[z] k×k is unimodular, then G(z)U(z) is also a generator matrix of C. Therefore, all generator matrices of C have the same internal degree. The degree or complexity of C is the internal degree of one (and therefore any) generator matrix and, therefore, is also equal to the external degree of one (and therefore any) column reduced generator matrix (see [17,34]). The column degrees of a basic and column reduced generator matrix of C are called Forney indices of C.
Since C always admits a generator matrix G(z) ∈ F[z] n×k which is column reduced, the row degrees ν 1 , ν 2 , . . . , ν k of G(z) are the Forney indices of C and ∑ k j=1 ν j = δ, the degree of C. From now on, we refer to a rate k/n convolutional code with degree δ as an (n, k, δ) convolutional code.
An (n, k, δ) convolutional code C can be described by a time invariant linear system (see [11,14,16,17]), denoted by (A, B, C, D), where A ∈ F m×m , B ∈ F m×k , C ∈ F n×m and D ∈ F n×k . For each instant t, we call x t ∈ F m the state vector, u t ∈ F k the input vector, and v t ∈ F n the output vector, and we say that the system (A, B, C, D) has dimension m. In the literature of linear systems, the above representation is known as the state-space representation (see, for example, [28,29,[36][37][38]).
is the transfer matrix of the system. We say that (A, is the transfer matrix of (A, B, C, D). For a given transfer matrix G(z), there are, in general, many possible realizations. A realization (A, B, C, D) of G(z) is called minimal if it has minimal dimension, and this happens if and only if the pair (A, B) is reachable and the pair (A, C) is observable (see, for instance, [28,29,36]). Recall that the pair (A, B) is called reachable if rank B AB · · · A δ−1 B = δ or equivalently (see [39]), rank λI δ − A B = δ, for all λ ∈F, whereF is the closure of F. Analogously, the pair (A, C) is observable if and only if the pair (A T , C T ) is reachable. The dimension of a minimal realization of a transfer matrix G(z) is called the McMillan degree of G(z). In the particular case that G(z) is a column reduced generator matrix of a convolutional code C, the McMillan degree of G(z) coincides with the degree δ of C.
Reachability and observability represent two major concepts of control system theory. They were introduced by Kalman in [40] in the context of systems theory and, in [35], the definitions of reachability and observability of convolutional codes were presented, see also [9,[41][42][43]. These notions are not only important for characterizing minimality of our state-space realization but also to describe the possibility of driving the state everywhere with the appropriate selection of inputs (reachability) and the ability of computing the state after from the observation of output sequence.
A system (A, B, C, D) is a realization of a convolutional code C if C is equal to the set of outputs corresponding to polynomial inputs u(z) ∈ F[z] k and to zero initial conditions; i.e., x 0 = 0. The minimal dimension of a realization of C is equal to the degree of C and the minimal realizations of the column reduced generator matrices of C are minimal realizations of the code.
If (Ā,B,C,D), withĀ ∈ F m×m ,B ∈ F m×k ,C ∈ F n×m , andD ∈ F n×k is a nonminimal realization of a transfer matrix with McMillan degree δ, from the Kalman's decomposition theorem (see, for example, [28,29,36,38,40,[44][45][46][47]), there exists an invertible matrix S ∈ F m×m such that That is, (A, B, C, D) is a minimal realization of the transfer matrix G(z). Moreover, if (A , B , C , D ) is another minimal realization of G(z), then there exists a unique invertible matrix P ∈ F δ×δ such that The state-space representation in expression (1), also known as, driving representation, is different from the input-state-output representation (see [21]) given by where A ∈ F m×m , B ∈ F m×k , C ∈ F (n−k)×m and D ∈ F (n−k)×k . This input-state-output representation has been thoroughly studied by many authors [9,10,18,19,21,27,33,35,48], and the codewords are the finite support input-output sequences {v t } t≥0 corresponding to finite support state sequences {x t } t≥0 . The next theorem (see [11,14]) provides a state-space realization for a given polynomial matrix, and it will be very useful in Section 4.
. . , k, and consider the matrices For the realization (A, B, C, D) of G(z) introduced in the previous theorem, it follows from expression (2) The following example will help us to understand the previous theorem.
Example 1. Let F = GF(2) be the Galois field of two elements and consider the polynomial matrix Since ν 1 = 2, ν 2 = 1, and rank(G ∞ ) = 2. It follows that G(z) is column reduced. Now consider the matrices Then, according to Theorem 1, it follows that (A, B, C, D) is a minimal state-space realization of G(z) with Moreover, E(z) =   z 0 z 2 0 0 z   and G(z) = CE(z) + D.

Product Convolutional Codes
In this section, we introduce the product of two convolutional codes called horizontal and vertical codes, respectively. Assume that C h and C v are horizontal (n h , k h , δ h ) and vertical (n v , k v , δ v ), respectively. Then, the product convolutional code (see [22,49]) C = C h ⊗ C v is defined to be the convolutional code whose codewords consist of all V(z) ∈ F[z] n v ×n h whose columns belong to C v and whose rows belong to C h .
Encoding of the product convolutional code C can be done as follows (see [22,49]): n v ×k v be generator matrices of the component convolutional codes C h and C v , respectively. Denote by U(z) ∈ F[z] k v ×k h an information matrix. Now, we can apply row-column encoding; i.e., every column of U(z) is encoded using G v (z), and then every row of the resulting matrix G v (z)U(z) is encoded using G h (z) as (G v (z)U(z))G h (z) T . We can also apply column-row encoding; i.e., every row of U(z) is encoded using G h (z), and then every column of the resulting matrix . As a consequence of the associativity of the product of matrices, we get the same matrix in both cases. Thus, the codeword matrix V(z) is given by and by using properties of the Kronecker product (see [50,51]), we have where vect(·) is the operator that transforms a matrix into a vector by stacking the column vectors of the matrix below one another. Now, since and rank(G(z)) = rank(G h (z)) rank(G v (z)) = k h k v , it follows that G(z) is a generator matrix of the product convolutional code C = C h ⊗ C v . Note that C is a rate k h k v /n h n v convolutional code. We will compute its degree in Theorem 5 below.
The following two theorems were introduced in [22,49] without proof. We include them here, with proof, for completeness and further references. The first one establishes that the generator matrix of the product code is basic if the generator matrices of the constituent codes are also basic.

Theorem 2.
Assume that G h (z) ∈ F[z] n h ×k h and G v (z) ∈ F[z] n v ×k v are generator matrices of the horizontal (n h , k h , δ h ) and vertical (n v , k v , δ v ) convolutional codes C h and C v , respectively. If G h (z) and G v (z) are basic, then G From the properties of the Kronecker product, it follows that L(z)G(z) = I k h k v . Consequently, G(z) is basic.
The next theorem gives us the column degrees of a generator matrix of the product code as a function of the column degrees of the generator matrices of the constituent codes.

Theorem 3. Assume that G h (z) ∈ F[z] n h ×k h and G v (z) ∈ F[z]
n v ×k v are generator matrices of the horizontal (n h , k h , δ h ) and vertical (n v , k v , δ v ) convolutional codes C h and C v , respectively. If k v , are the column degrees of C h and C v , respectively, then the column degrees of G(z) = G h (z) ⊗ G v (z) are j , with l = (i − 1)k v + j and j = 1, 2, . . . , k v .

Proof. Assume that
From the properties of the Kronecker product, it follows that j , respectively, it follows that the column degree of g j , and the theorem holds.
As an immediate consequence of the previous theorem, we have the following theorem: the high-order coefficient matrices of G h (z) and G v (z), respectively. If G ∞ is the high-order coefficient matrix of G(z), from Theorem 3, it follows that and, from the properties of the Kronecker product, Therefore, G(z) is column reduced.
Finally, as a consequence of Theorems 2 and 4, we obtain the following theorem that gives us the degree of the product code as a function of the degrees of the constituent codes.
Theorem 5. Assume that C h and C v are horizontal (n h , k h , δ h ) and vertical (n v , k v , δ v ) convolutional codes, respectively. Then, the degree of C n v ×k v are basic and column reduced generator matrices of C h and C v , respectively. With the notation of Theorem 3, k v , are the Forney indices of C h and C v , respectively, and, therefore, j . Moreover, from Theorems 2 and 4, G(z) = G h (z) ⊗ G v (z) is a basic and column reduced generator matrix for C. Again, with the notation of Theorem 3, j , for i = 1, 2, . . . , k h and j = 1, 2, . . . , k v , are the Forney indices of C, and, therefore, is the degree of C.
We will use the above theorems in the next section to obtain a minimal state-space realization of the product convolutional code C = C h ⊗ C v .

State-Space Realizations of Product Convolutional Codes
More specifically, let us assume that (A h , B h , C h , D h ) and (A v , B v , C v , D v ) are minimal realizations of column reduced generator matrices of the (n h , k h , δ h ) horizontal and (n v , k v , δ v ) vertical codes C h and C v , respectively. In this section, we will obtain a minimal state-space realization (A, B, C, D) of the (n, k, δ) product convolutional code C = C h ⊗ C v , where n = n h n v , k = k h k v and δ = δ h k v + k h δ v . This means that we must find matrices A ∈ F δ×δ , B ∈ F δ×k , C ∈ F n×δ and D ∈ F n×k , such that the pair (A, B) is reachable, the pair (A, C) is observable, and C(I δ − zA) −1 Bz + D is a basic and column reduced generator matrix for C.
We can assume, without loss of generality, that matrices A h , A v , and B h , B v have the form of matrices A and B in Theorem 1. That is, The next theorem allows us to obtain a reachable pair (A, B) from the reachable pairs A v , and B v as in expressions (4)- (7). For i = 1, 2, . . . , k h and j = 1, 2, . . . , k v , let and consider ∈ F ν (i−1)kv +j ×ν (i−1)kv +j , Then, (A, B) is a reachable par.
Proof. It is easy to see that rank λI δ − A B = δ, for all λ ∈F. Thus, the pair (A, B) is reachable.
A v , and B v as in expressions (4)- (7). From Theorem 1 and expressions (1) and (3), it follows that , for j = 1, 2, . . . , k v . (10) Now, since G(z) = G h (z) ⊗ G v (z), from expression (8) and the properties of the Kronecker product, we have that Note thatD = D h ⊗ D v is a matrix of size n h n v × k h k v ; that is, n × k. Thus, we can take D =D. However, sinceC , we cannot take the above matrix as matrix C. The following example will help us to understand how we should proceed to obtain the matrix C from the matrixC in expression (11). Example 2. Let F = GF(2) be the Galois field of two elements and consider G h (z), the column reduced matrix, and the minimal state-space realization (11), the generator matrix G(z) = G h (z) ⊗ G v (z) of the product convolutional code C = C h ⊗ C v is given by

Now, from expression
As we can observe,C has 31 columns, but we need a matrix with 16 columns. Furthermore, E(z) does not have the structure given by expression (3).
However, considering the rows ofĒ(z) whose elements have been written in red, we can move these rows to the appropriate positions and then, by Gaussian elimination from those rows, we can transform the matrixĒ(z) into the matrix and O the zero matrix of the appropriate size. This means that we can find an invertible matrix P ∈ F 31×31 such that and, thereforeCĒ(z) = CE(z), with C ∈ F 12×16 such thatCP −1 = C C .
We can use the argument introduced in the above example to prove the following theorem.
are minimal state-space realizations of the (n h , k h , δ h ) horizontal and (n v , k v , δ v ) vertical codes C h and C v , respectively, with A h , B h , A v , and B v as in expressions (4)- (7). Let A be the matrix defined in Theorem 6 and letC be the matrix in expression (11). Moreover, assume that . . , k h and j = 1, 2, . . . , k v , and consider the matrices E h (z) and E v (z) in expressions (9) and (10).
Proof. Note that the submatrix ofĒ(z) given by contains the necessary rows to construct the matrix E(z). Thus, by using an appropriate permutation matrix Q ∈ F (δ+δ h δ v )×(δ+δ h δ v ) , we have that Now, the entries in the first column of E(z) are 0 or z t with 1 ≤ t ≤ ν 1 − 1; therefore, by using Gaussian elimination, we can transform these entries in 0. Once this operation is completed, the entries in the second column of the modified E(z) are, again, 0 or z t with 2 − 1 and, therefore, we can transform these entries in 0. We continue with this argument, until we transform matrix E(z) into the zero matrix. In other words, we have found an invertible matrix Thus, we can take P = RQ and, from expression (11), it follows thatCĒ(z) = CE(z). Now, by a similar argument to the argument used in the proof of Theorem 1, it follows that the pair (A, C) is observable.
The proof of the previous theorem tells us which are the rows of matrixĒ(z) that we must consider to obtain matrix E(z). Therefore, it also tells us which are the columns of matrixC that we must consider. Specifically, the submatrix E(z) given in expression (12) will help us to determine a submatrix ofC, which contains the necessary columns to construct the matrix C. For that, on the one hand, the block E h (z) ⊗ I k v of E(z) means that we take all the columns of C h ⊗ D v . On the other hand, if we assume that then, from the properties of the Kronecker product, Therefore, the rest of the rows of matrix E(z) in expression (12) means that we must take the columns g (h) i ν (h) i ⊗ C v , for i = 1, 2, . . . , k h . Thus, by using the matrix P −1 , we have that with k = k h k v and ν as in Theorem 7. Now, as a consequence of Theorems 6 and 7, we obtain a minimal state-space realization of the convolutional product code. Corollary 1. With the notation of Theorems 6 and 7, the system (A, B, C, D), with D = D h ⊗ D v , is a minimal realization of the convolutional product code C = C h ⊗ C v .

Example 3.
For the matrices in Example 2, it follows that

Conclusions and Future Work
In this paper, we presented a constructive methodology to obtain a minimal state-space representation (A, B, C, D) of a convolutional product code from two minimal state-space representations, (A h , B h , C h , D h ) and (A v , B v , C v , D v ) of an horizontal and a vertical convolutional code, respectively. In this work, we have considered driven variable representations and showed that, even if the matrices A, B, and D of the product convolutional code can be built in a straightforward way from the given matrix representations (A h , B h , C h , D h ) and (A v , B v , C v , D v ), the matrix C requires further analysis. We showed, however, that C can still be computed if one properly selects the appropriate entries of a matrix that depends on C h , C v , D h and D v . In this way, the produced representation is minimal and can be computed in a relatively easy way.
An interesting line for future research would be to consider input-state-output representations instead of driven variables and study these different state space representations in the context of convolutional product codes.