{'fraction_non_alphanumeric': 0.051628184636715514, 'fraction_numerical': 0.012286005892661133, 'mean_word_length': 4.073766487542746, 'pattern_counts': {'":': 0, '<': 12, '<?xml version=': 0, '>': 10, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 25, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Connections between Linear Systems and Convolutional Codes

The article reviews different definitions for a convolutional code which can be found in the literature. The algebraic differences between the definitions are worked out in detail. It is shown that bi-infinite support systems are dual to finite-support systems under Pontryagin duality. In this duality the dual of a controllable system is observable and vice versa. Uncontrollability can occur only if there are bi-infinite support trajectories in the behavior, so finite and half-infinite-support systems must be controllable. Unobservability can occur only if there are finite support trajectories in the behavior, so bi-infinite and half-infinite-support systems must be observable. It is shown that the different definitions for convolutional codes are equivalent if one restricts attention to controllable and observable codes.


Introduction
It is common knowledge that there is a close connection between linear systems over finite fields and convolutional codes. In the literature one finds however a multitude of definitions for convolutional codes, which can make it confusing for somebody who wants to enter this research field with a background in systems theory or symbolic dynamics. It is the purpose of this article to provide a survey of the different points of view about convolutional codes.
The article is structured as follow: In Section 2 we will review the way convolutional codes have often been defined in the coding literature [20,21,28,35,38]. Section 3 reviews a definition for convolutional codes that can be found in the literature on symbolic dynamics. From the symbolic dynamics point of view [24,29,32], a convolutional code is a linear irreducible shift space.
In Section 4 we will review the class of time-invariant, complete linear behaviors in the sense of Willems [50,51,52]. We will show how these behaviors relate to the definitions given in Section 2 and 3.
In Section 5 we will give a definition for convolutional codes in which it is required that the code words have finite support. Such a definition was considered by Fornasini and Valcher [48,5] and by the author in collaboration with Schumacher, Weiner and York [42,44,49]. The study of behaviors with finite support has been done earlier in the context of automata theory and we refer to Eilenberg's book [1]. We show in Section 5 how this moduletheoretic definition relates to complete, linear and time-invariant behaviors by Pontryagin duality.
In Section 6 we will study different first-order representations connected with the different viewpoints. Finally, in Section 7 we compare the different definitions. We also show how cyclic redundancy check codes can naturally be viewed in the context of finite-support convolutional codes.
Throughout the paper we will emphasize the algebraic properties of the different definitions. We will also restrict ourselves to the concrete setting of convolutional codes defined over finite fields. It is however known that many of the concepts in this paper generalize to group codes [3,12,9] and multidimensional convolutional codes [4,5,16,48,49]. All of the definitions which we are going to give are quite similar, but there are some notable differences.
Since the paper draws from results from quite different research areas, one is faced with the problem that there is no uniform notation. In this paper we will adopt the convention used in systems theory in which vectors are regarded as column vectors. For the convenience of the reader, we conclude this section with a summary of some of the notation used in this paper: F A fixed finite field; The polynomial ring over F; The Laurent polynomial ring over F; F(z) The field of rationals; The ring of formal power series of the form ∞ i=0 a i z i ; F((z)) The field of formal Laurent series having the form ∞ i=d a i z i ; F[[z, z −1 ]] The ring of formal power series of the form ∞ i=−∞ a i z i ; Z The integers; Z + The nonnegative integers; Z − The nonpositive integers. Consider the ring of formal power series F[[z, z −1 ]]. We will identify the set F[[z, z −1 ]] with the (two-sided) sequence space F Z . We have natural embeddings: With these embeddings we can view e.g. the set of rationals F(z) as a subset of the sequence space F Z , and we will make use of such identifications throughout the paper.
The set of n-vectors with polynomial entries will be denoted by F n [z]. Similarly we define the sets F n (z), F n ((z)) etc. All these sets are subsets of the two sided sequence space (F n ) Z = F n [[z, z −1 ]]. The definitions of convolutional codes which we will provide in the next sections will all be F-linear subspaces of (F n ) Z .
The idea of writing a survey on the different points of view about convolutional codes was suggested to the author by Paul Fuhrmann during a stimulating workshop on "Codes, Systems and Graphical Models" at the Institute for Mathematics and its Applications (IMA) in August 1999. A first draft of this paper was circulated in October 1999 to about a dozen people interested in these research issues. This generated an interesting 'Internet discussion' on these issues, in which the different opinions were exchanged by e-mail. Some of these ideas have been incorporated into the final version of the paper and the author would like to thank Dave Forney, Paul Fuhrmann, Heide Gluesing-Luerssen, Jan Willems and Sandro Zampieri for having provided valuable thoughts. The author wishes also to thank the IMA and its superb staff, who made the above mentioned workshop possible.

The linear algebra point of view
The theory of convolutional codes grew out and extended the theory of linear block codes into a new direction. Because of this reason we start the section with linear block codes and we introduce convolutional codes in a quite intuitive way.
An [n, k] linear block code is by definition a linear subspace C ⊂ F n having dimension dim C = k. Let G be a n × k matrix with entries in F. The linear map ϕ : F k −→ F n , m −→ c = Gm is called an encoding map for the code C if im (ϕ) = C. If this is the case then we say G is a generator matrix or an encoder for the block code C.
Assume that a sequence of message blocks m 0 , . . . , m t ⊂ F k should be encoded into a corresponding sequence of code words c i = Gm i ∈ F n , i = 0, . . . , t. By introducing the polynomial vectors it is possible to describe the encoding procedure through the module homomorphism: 1 The original idea of a convolutional code goes back to the paper of Elias [2], where it was suggested to use a polynomial matrix G(z) in the encoding procedure (2.1).
Polynomial encoders G(z) are physically easily implemented through a feedforward linear sequential circuit. Massey and Sain [34,45] showed that there is a close connection between linear systems and convolutional codes. Massey and Sain viewed the polynomial encoder G(z) as a transfer function. More generally it is possible to realize a transfer function G(z) with rational entries by (see e.g. [20,21]) a linear sequential circuit whose elements include feedback components. If one allows rational entries in the encoding matrix then it seems natural to extend the possible message sequences to the set of rational vectors m(z) ∈ F k (z) and to process this sequence by a 'rational encoder' resulting again in a rational code vector c(z) ∈ F n (z). With this we have a first definition of a convolutional code as it can be found e.g. in the Handbook of Coding Theory [35,Definition 2.4]: If G(z) is a n × k matrix with entries in F(z) whose columns form a basis for C, then we call G(z) a generator matrix or an encoder for the convolutional code C. G(z) describes the encoding map: The field of rationals F(z) viewed as a subset of the sequence space consists precisely of those sequences whose support is finite on the negative sequence space F Z − and whose elements form an ultimately periodic sequence on the positive sequence space F Z + . It therefore seems that one equally well could restrict the possible message words m(z) ∈ F k (z) to sequences whose coordinates consists of Laurent polynomials only, in other words to sequences of the form m(z) ∈ F k [z, z −1 ]. Alternatively one could allow message words m(z) whose coordinates are not ultimately periodic and possibly not of finite support on the negative sequence space F Z − . This would suggest that one should take as possible message words the whole sequence space ]. The problem with this approach is that the multiplication of an element in F[[z, z −1 ]] with an element in F(z) is in general not well defined. If one restricts however the message sequences to the field of formal Laurent series then the multiplication is well defined. This leads to the following definition which goes back to the work of Forney [7]. The definition has been adopted in the book by Piret [38] and the book by Johannesson and Zigangirov [21], and it appears as Definition 2.3 in the Handbook of Coding Theory [35]: Definition A ′ A F((z))-linear subspace C of F n ((z)) which has a basis of rational vectors in F n (z) is called a convolutional code.
The requirement that C has a basis with rational entries guarantees that C has also a basis with only polynomial entries. C can therefore be represented by a n × k generator matrix G(z) whose entries consist only of rationals or even even polynomials. The encoding map with respect to G(z) is given through: If G(z) is a polynomial matrix, then finitely many components of m(z) influence only finitely many components of c(z), and the encoding procedure may be physically implemented by a simple feedforward linear shift register.
If G(z) contains rational entries, then it is in general the case that a finite (polynomial) message vector is encoded into an infinite (rational) code vector of the form c(z) = ∞ i=s c i z i .
This might cause some difficulties in the decoder. For the encoding process, G(z) can be physically realized by linear shift registers, in general with feedback (see e.g. [20,21]). From a systems theory point of view, it is classical [23] to view the encoding map (2.2) as an input-output linear system. This was the point of view taken by Massey and Sain [34,45] and thereafter in most of the coding literature. However unlike in systems theory, the important object in coding theory is the code C = im (ϕ). As a result one calls encoders ϕ which generate the same image im (ϕ) equivalent; we will say more about this in a moment. In Sections 3 and 4 we will view (2.2) as an image representation of a time-invariant behavior in the sense of Willems [50,51], which we believe captures the coding situation in a more natural way.
Assume that G(z) andG(z) are two n × k rational encoding matrices defining the same code C with respect to either Definition A or A ′ . In this case we say that G(z) andG(z) are equivalent encoders. The following lemma is a simple result of linear algebra: It follows from this lemma that Definition A and Definition A ′ are completely equivalent with respect to equivalence of encoders.
From an algebraic point of view we can identify a convolutional code in the sense of Definition A or Definition A ′ through an equivalence class of rational matrices. The following theorem singles out a set of very desirable encoders inside each equivalence class.
Theorem 2.2 Let G(z) be a n × k rational encoding matrix of rank k defining a code C. Then there is a k × k invertible rational matrix R(z) such thatG(z) = G(z)R(z) has the properties: (ii)G(z) is right prime.
Furthermore, every polynomial encoding matrix of C which is right prime and column-reduced has (unordered) column degrees {e 1 , . . . , e k }. Thus these indices are invariants of the convolutional code.
The essence of Theorem 2.2 was proved by Forney [6,Theorem 3]. In [8] Forney related the indices appearing in (iii) to the controllability and observability indices of a controllable and observable system. Paper [8] had an immense impact in the linear systems theory literature. We will follow here the suggestion of McEliece [35] and call these indices the Forney indices of the convolutional code, despite the fact that Theorem 2.2 can be traced back to the last century, when Kronecker, Hermite and in particular Dedekind and Weber studied matrices over the rationals and more general function fields. In Sections 4 and 5 we will make a distinction between the Forney indices as defined above and the Kronecker indices of a submodule of F n [z].
In the coding literature [21,38], an encoder satisfying conditions (i), (ii) and (iii) of Theorem 2.2 is called a minimal basic encoder .
So far we have used encoding matrices to describe a convolutional code. As is customary in linear algebra, one often describes a linear subspace as the kernel of a matrix. This leads to the notion of a parity-check matrix. The following theorem is well known (see e.g. [38]). Theorem 2.3 Let C ⊂ F n ((z)) be a rank-k convolutional code in the sense of Definition A ′ . Then there exists an r × n matrix H(z) such that the code is equivalently described as the kernel of H(z): Moreover, it is possible to choose H(z) in such a way that: Furthermore, every polynomial parity check matrix of C which is left prime and row reduced will have (unordered) row degrees {f 1 , . . . , f r }. Thus these indices are invariants of the convolutional code.
Properties (i)-(iii) essentially follow from the fact that the transpose H t (z) is a generator matrix for the dual (orthogonal) code C ⊥ .
The set of indices {e 1 , . . . , e k } and {f 1 , . . . , f r } differ in general, their sum is however always the same, and is called the degree of the convolutional code. One says that a rank-k code C ⊂ F n ((z)) has transmission rate k/n, controller memory m := max{e 1 , . . . , e k } and observer memory n := max{f 1 , . . . , f r }.
Another important code parameter is the free distance. The free distance of a code measures the smallest distance between any two different code words, and is formally defined as: where d H ( , ) denotes the usual Hamming distance on F n .

The symbolic dynamics point of view
In this section we present a definition of convolutional codes as it can be found in the symbolic dynamics literature [24,29,32]. Convolutional codes in this framework are exactly the linear, compact, irreducible and shift-invariant subsets of F n [[z, z −1 ]]. In order to make this precise, we will have to develop some basic notions from symbolic dynamics. In the sequel we will work with the finite alphabet A := F n . A block over the alphabet A is a finite sequence β = x 1 x 2 . . . x k consisting of k elements ] is a sequence, one says that the block β occurs in w if there is some integer j such that β = w j w j+1 . . . w k+j−1 . If X ⊂ F n [[z, z −1 ]] is any subset, we denote by B(X) the set of blocks which occur in some element of X.
The fundamental objects in symbolic dynamics are the shift spaces. For this let F be a set of blocks, possibly infinite.
] consisting of all sequences w(z) which do not contain any of the (forbidden) blocks of F is called a shift space.
The left-shift operator is the F-linear map (3.1) Let I n be the n × n identity matrix. The shift map σ extends to the shift map It is possible to characterize shift spaces in a topological manner. For this we will introduce a metric on F n [[z, z −1 ]]: In this metric two elements v(z), w(z) are 'close' if they coincide over a 'large block around zero'. One readily verifies that d( , ) indeed satisfies all the properties of a metric and therefore induces a topology on F n [[z, z −1 ]]. Using this topology we can characterize shift spaces: The topological space F n [[z, z −1 ]] is a typical example of a linearly compact vector space, a notion introduced by S. Lefschetz. There is a large theory on linearly compact vector spaces, and several of the results which we are going to derive are valid in this broader context. We refer the interested reader to [25, §10] for more details.
A further important concept is irreducibility which will turn out to be equivalent to the concept of controllability in our concrete setting.
] is called irreducible if for every ordered pair of blocks β, γ of B(X) there is a block µ such that the concatenated block βµγ is in B(X).
We are now prepared to give the symbolic dynamics definition for a convolutional code and to work out the basic properties for these codes.
This is an abstract definition and it is not immediately clear how one should encode messages with such convolutional codes. The following will make this clear.
Let G(z) be a n × k matrix with entries in the ring of Laurent polynomials F[z, z −1 ]. Consider the encoding map: In terms of polynomials the map ϕ is simply described through Recall that a continuous map is called closed if the image of a closed set is closed. Using the fact that F n [[z, z −1 ]] is compact, one (easily) proves the following result:

Lemma 3.5 The encoding map (3.3) is F-linear, continuous and closed.
Clearly im (ϕ) is also shift-invariant, and one shows [29] that the image of an irreducible set under ϕ is irreducible again.
In summary we have shown that im (ϕ) describes a convolutional code in the sense of Definition B. Actually the converse is true as well:

] is a convolutional code in the sense of Definition B if and only if there exists a Laurent polynomial matrix
A proof of this theorem will be given in the next section after Theorem 4.8. The question now arises how Definition B relates to Definition A and Definition A ′ . The following theorem will provide a partial answer to this question.
] is a nonzero convolutional code in the sense of Definition A or Definition A ′ . Then C is not closed, but the closure ofC of C is a convolutional code in the sense of Definition B.
Proof: Let G(z) be a minimal basic encoder of C and let w(z) ∈ F n [z] be the first column of G(z). Note that w(z) ∈ C and that there is at least one entry of w(z) which does not contain the factor (z − 1). Actually one can show that there is a bijective correspondence between the convolutional codes in the sense of Definition A (respectively Definition A ′ ) and the convolutional codes in the sense of Definition B, as we will show in Theorem 7.1 and Theorem 7.2. It is also worthwhile to remark that already in 1983 Staiger published a paper [47] where he studied the closure of convolutional codes generated by a polynomial generator matrix.
In analogy to Lemma 2.1, one has: We leave the proof again as an exercise for the reader. We remark that rational transformations of the form R(z) are needed to describe the equivalence, even though it is in general not possible to use a rational encoder G(z) in the encoding procedure (3.3). This is simply due to the fact that in general the multiplication of an element of F(z) with an element of F[[z, z −1 ]] is not defined. The following example should make this clear. (Compare also with Remark 4.4.) ]. Trying to multiply the two power series f (z), g(z) would result in a power series in which each coefficient would be infinite.
In the same way as at the end of Section 2 we define the transmission rate, the degree, the memory and the free distance of a convolutional code C in the sense of Definition B.

Linear time-invariant behaviors
In this section we will take the point of view that a convolutional code is a linear timeinvariant behavior in the sense of Willems [50,51,52]. Of course behavioral system theory is quite general, allowing all kinds of time axes and signal spaces. In order to relate the behavioral concepts to the previous points of view, we will restrict our study to linear behaviors Let σ be the shift operator defined in (3.1). One says that a subset The concept therefore coincides with the symbolic dynamics concept of shift-invariance.
In addition to linearity and time-invariance, there is a third important concept usually required of a time-invariant behavior: The definition simply says that B is complete if membership can be decided on the basis of finite windows. Completeness is an important well behavedness property for linear time-invariant behaviors, as Willems [50, p. 567] emphasized with the remark: As such, it can be said that the study of non-complete systems does not fall within the competence of system theorists and could be left to cosmologists or theologians.
In Definition 3.2 we introduced a metric on the vector space F n [[z, z −1 ]]. We remark that with respect to this metric a subset B ⊂ F n [[z, z −1 ]] is complete if and only if every Cauchy sequence converges inside B. In other words, the completeness notion of Definition 4.1 coincides with the usual topological notion of completeness.
The following result is known for linearly compact vector spaces, a proof can be found in [50]:

] is complete if and only if it is closed and hence compact.
With these preliminaries we can define a convolutional code as follows: It is immediate from Lemma 4.2 that the convolutional codes defined in Definition B are complete and that Definition C is more general than Definition B, since no irreducibility is required. It also follows from Theorem 3.7 and Lemma 4.2 that the convolutional codes defined in Definition A and Definition A ′ are in general not complete.
Before we elaborate on these differences we would like also to treat the situation when the time axis is Z + since traditionally a large part of linear systems theory has been concerned with systems defined on the positive time axis.
We first define the left-shift operator acting on (F n ) Z + = F n [[z]] through: We have used the same symbol as in (3.1) since the context will always make it clear if we work over Z or Z + . In analogy to (3.1) σ extends to the shift map σI n : Notice however that the map of (4.1), unlike that of (3.1), is not invertible. With this we have: The following fundamental theorem was proved by Willems [50,Theorem 5].
is continuous and its kernel is therefore a complete set. It is therefore immediate that the behavior defined in (4.2) is linear, time-invariant and complete. The harder part of Theorem 4.3 is the converse statement. Equation (4.2) is often referred to as a kernel (or AR) representation of a behavioral system. We will denote a behavior having the form (4.2) by ker P (σ). By contrast, the encoding map ϕ defined in (3.3) describes an image (or MA) representation of the behavior im (ϕ) = im G(σ).
The most general representation is an ARMA representation. For this let P (z) and G(z) be matrices of size r × n and r × k respectively, having entries in the Laurent polynomial ring F[z, z −1 ]. Then is called an ARMA model. One immediately verifies that the set B is linear and timeinvariant. It is a direct consequence of Lemma 3.5 that B is also closed and hence complete. Theorem 4.3 therefore states that it is possible to eliminate the so called 'latent variable' m(z) and describe the behavior B by a simpler kernel representation of the form (4.2). It follows in particular that the code im (ϕ) = im G(σ) defined in (3.3) has an equivalent kernel representation of the form (4.2) but that in general the converse is not true. In the sequel we will concentrate on representations of the form (4.2). Again the question arises, when are two kernel representations equivalent? The major difference between Definition B and Definition C seems to be that Definition C does not require irreducibility. This last concept corresponds to the term controllability (see [10]) in systems theory. We first start with some notation taken from [42]: , we use the symbol w + to denote the 'right half' ∞ 0 w i z i and the symbol w − to denote the 'left half' 0 −∞ w i z i . Definition 4.6 A behavior B defined on Z is said to be controllable if there is some integer ℓ such that for every w and w ′ in B and every integer j there exists a w ′′ ∈ B such that (z j w ′′ ) − = (z j w) − and (z j+ℓ w ′′ ) + = (z j+ℓ w ′ ) + .
Remark 4.7 Loeliger and Mittelholzer [30] speak of strongly controllable if a behavior satisfies the conditions of Definition 4.6. 'Weakly controllable' in contrast requires an integer ℓ which may depend on the trajectories w and w ′ . The notions are equivalent in our concrete setting.
We leave it as an exercise for the reader to show that irreducibility as introduced in Definition 3.4 is equivalent to controllability for linear, time-invariant and complete behav- ]. The next theorem gives equivalent conditions for a behavior to be controllable.

(iii) The behavior B has an image representation. This means there exists an
Combining the theorem with the facts that completeness corresponds to compactness and irreducibility corresponds to controllability gives a proof of Theorem 3.6.
We conclude the section by defining some parameters of a linear, time-invariant and complete behavior. For simplicity we will do this in an algebraic manner. We will first treat behaviors B ⊂ F n [[z]], i.e. behaviors in the sense of Definition C ′ . In Remark 4.10 we will explain how the definitions have to be adjusted for behaviors defined on the time axis Z.
Assume that P (z) is a r × n polynomial matrix of rank r defining the behavior B = ker P (σ). There exists a matrix U(z), unimodular over F[z], such thatP (z) = U(z)P (z) is row-reduced with ordered row degrees ν 1 ≥ . . . ≥ ν r . The indices ν = (ν 1 , . . . , ν r ) are invariants of the row module of P (z) (and hence also invariants of the behavior B), and are sometimes referred to as the Kronecker indices or observability indices of B. The invariant δ := r i=1 ν i is called the McMillan degree of the behavior B. If we think of B as a convolutional code in the sense of Definition C ′ then we say that B has transmission rate n−r n . Finally, the free distance of the code is defined as in (2.3).  ] is a linear, time-invariant and complete behavior, then we can define parameters like the Kronecker indices and the McMillan degree in the following way: Assume P (z) has the property that B = ker P (σ). There exists a matrix U(z), unimodular over F[z, z −1 ], such thatP (z) = U(z)P (z) is row-reduced and P (0) has full row rank r. One shows again that the row degrees ofP (z) are invariants of the behavior. The McMillan degree, the transmission rate and the free distance are then defined in the same way as for behaviors B ⊂ F n [[z]].

The module point of view
Fornasini and Valcher [5,48] and the present author in joint work with Schumacher, Weiner and York [42,44,49] proposed a module-theoretic approach to convolutional codes. The module point of view simplifies the algebraic treatment of convolutional codes to a large degree, and this simplification is probably almost necessary if one wants to study convolutional codes in a multidimensional setting [5,48,49].
From a systems theoretic point of view, the module-theoretic approach studies linear time-invariant systems whose states start at zero and return to zero in finite time. Such dynamical systems have been studied by Hinrichsen and Prätzel-Wolters [18,19], who recognized these systems as convenient objects for the study of systems equivalence.
In our development we will again deal with the time axes Z and Z + in a parallel manner.
We like the module-theoretic language. If one prefers to define everything in terms of trajectories then one could equivalently define C as F-linear, time-invariant subset of F n [[z, z −1 ]] whose elements have finite support.
The analogous definition for codes supported on the positive time axis Z + is: is called a convolutional code.
Since both the rings F[z, z −1 ] and F[z] are principal ideal domains (PID), a convolutional code C has always a well-defined rank k, and there is a full-rank matrix G(z) of rank k such that We will call G(z) an encoder of C, and the map an encoding map.

Remark 5.1
In contrast to the situation of Section 3, it is possible to define a convolutional code in the sense of Definition D (respectively Definition D ′ ) using a rational encoder. For this, assume that G(z) is an n × k matrix with entries in F(z). Then defines a submodule of F n [z, z −1 ]. Note that the map (5.1) involving a rational encoding matrix G(z) has to be 'input-restricted' in this case.
As we already mentioned earlier convolutional codes in the sense of Definitions D and D ′ are linear and time-invariant. The following theorem answers any question about controllability (i.e. irreducibility) and completeness.

Theorem 5.3 A nonzero convolutional code with either Definition D or D ′ is controllable and incomplete.
Sketch of Proof: The proof of the completeness part of the Theorem is analogous to the proof of Theorem 3.7. In order to show controllability, let G(z) be an encoding matrix for a code C ⊂ F n [z] and consider two code words w(z) = G(z)(a 0 + a 1 + · · · + a s z s ) and w ′ (z) = G(z)(b 0 + b 1 + · · · + b s z s ). The codeword w ′′ (z) required by Definition 4.6 can be constructed in the form G(z)(a 0 + a 1 + · · · + a j z j + b j+ℓ z j+ℓ + · · · + · · · + b s z s ).
Submodules of F n [z, z −1 ] (respectively of F n [z]) form the Pontryagin dual of linear, timeinvariant and complete behaviors in F n [[z, z −1 ]] (respectively F n [[z]]). In the following we follow [42] and explain this in a very explicit way when the time axis is Z. Of course everything can be done mutatis mutandis when the time axis is Z + .
Consider the bilinear form: where , represents the standard dot product on F n . One shows that ( , ) is well defined and nondegenerate, in particular because there are only finitely many nonzero terms in the sum. For any subset C of F n [z, z −1 ] one defines the annihilator The relation between these two annihilator operations is given by:

is a convolutional code with generator matrix G(z), then C ⊥ is a linear, left-shift-invariant and complete behavior with kernel representation P (z) = G t (z). Conversely, if B ⊆ F n [[z, z −1 ]] is a linear, left-shift-invariant and complete behavior with kernel representation P (z), then B ⊥ is a convolutional code with generator matrix
Remark 5.5 An elementary proof of Theorem 5.4 in the case of the positive time axis Z + is given in [42].
Remark 5.6 Theorem 5.4 is a special instance of a broad duality theory between solution spaces of difference equations on the one hand and modules on the other, for which probably the most comprehensive reference is Oberst [37]. In this article Oberst [37, p. 22] works with a bilinear form which is different from (5.2). This bilinear form induces however the same duality as shown in [16]. Extensions of duality results to group codes were derived by Forney and Trott in [12].
For finite support convolutional codes in the sense of Definition D or Definition D ′ the crucial issue is observability. In the literature there have been several definitions of observability [4,11,5,9,30,42] and it is not entirely clear how these definitions relate to each other.
In the sequel we will follow [4,42]. With this we have the 'Pontryagin dual statement' of Theorem 4.8: Theorem 5.8 (cf. [42,Prop. 2.10]) Let G(z) be a n × k matrix of rank k defined over F[z, z −1 ]. The following conditions are equivalent: (iii) The code C has a kernel representation. This means there exists an r × n 'parity-check

Remark 5.9
The concept of observability is clearly connected to the coding concept of non-catastrophicity. Indeed an encoder is non-catastrophic if and only if the code generated by this encoder is observable. In the context of Definition A (respectively Definition A ′ ) every code has a catastrophic as well as a non-catastrophic encoder. In the module setting of Definition D every encoder of an observable code is non-catastrophic and every encoder of an non-observable code is catastrophic. If one defines a convolutional code by Definition D then one could talk of a 'non-catastrophic convolutional code'. The term observable seems however much more appropriate.
As at the end of Section 4, we now define the code parameters. We do it only for codes given by Definition D ′ and leave it to the reader to adapt the definitions to codes given by Definition D.
Assume that G(z) is an n × k polynomial matrix of rank k defining the code C = colsp F[z] G(z). There exists a unimodular matrix U(z) such thatG(z) = G(z)U(z) is columnreduced with ordered column degrees κ 1 ≥ . . . ≥ κ k . The indices κ = (κ 1 , . . . , κ k ) are invariants of the code C, which we call the Kronecker indices or controllability indices of C. The invariant δ := r i=1 κ i is called the degree of the code C. The free distance of the code is defined as in (2.3). Finally we say that C has transmission rate k n .

First-order representations
In this section we provide an overview of the different first-order representations (realizations) associated with the convolutional codes and encoding maps which we have defined. We start with the encoding map (2.2). As is customary in most of the coding literature, we view the map (2.2) as an input-output operator from the message space to the code space. The existence of associated state spaces and realizations can be shown on an abstract level. Kalman [22,23] first showed how the encoding map (2.2) can be 'factored' resulting in a realization of the encoding matrix ϕ. Fuhrmamnn [13] refined the realization procedure in an elegant way. (Compare also [15,17].) In the sequel we will simply assume that a realization algorithm exists. We summarize the main results in the following two theorems: Consider the encoding map (2.2) with generator matrix G(z). Let m(z) = t i=s m i z i ∈ F k ((z)) and c(z) = t i=s c i z i ∈ F n ((z)) be the sequence of message and code symbols respectively. Then one has: Theorem 6.2 Assume that G(z) has the property that rank G(0) = k. Then G(z −1 ) is a proper transfer function, and by Theorem 6.1 there exist matrices (A, B, C, D) of appropriate sizes such that G(z −1 ) = C(zI − A) −1 B + D. The dynamics of (2.2) are then equivalently described by: The realization (6.3) is useful if one wants to describe the dynamics of the encoder G(z). It is however less useful if one is interested in the construction of codes having certain properties. The problem is that every code C has many equivalent encoders whose realizations appear to be completely different.

Example 6.3 The encoders
are equivalent since they define the same code in the sense of Definition A. The transfer functions G(z −1 ) andG(z −1 ) are however very different from a systems theory point of view. Indeed, they have different McMillan degrees, and over the reals the first is stable whereas the second is not. The state space descriptions are therefor very different for these encoders.
This example should make it clear that for the purpose of constructing good convolutional codes, representation (6.3) is not very useful.
We are now coming to the realization theory of the behaviors and codes of Section 4 and 5. We will continue with our algebraic approach. The results are stated for the positive time axis Z + , but they hold mutatis mutandis for the time axis Z. Theorem 6.4 (Existence) Let P (z) be an r × n matrix of rank r describing a behavior B of the form (4.2) with McMillan degree δ. Let k = n − r. Then there exist (constant) matrices G, F of size δ × (δ + k) and a matrix H of size n × (δ + k) such that B is equivalently described by: Moreover the following minimality conditions will be satisfied: (i) G has full row rank; (ii) G H has full column rank; For a proof, see [26,Thm. 4.3] or [27,41]. Equation (6.4) describes the behavior locally in terms of a time window of length 1. The computation of the matrices G, F, H from a kernel description is not difficult. It can even be done 'by inspection', i.e., just by rearranging the data [41]. The next result describes the extent to which minimal first-order realizations are unique. A proof is given in [26,Thm. 4.34]. The relation to the traditional state-space theory is as follows: Assume that P (z) can be partitioned into P (z) = (Y (z) U(z)) with U(z) a square r × r matrix and deg det U(z) = δ, the McMillan degree of the behavior B. Assume that (G, F, H) provides a realization for B through (6.4). Then one shows that the pencil zG−F H is equivalent to the pencil: The minimality condition (iii) simply translates into the condition that (A, C) forms an observable pair, showing that the behavior B is observable. One also verifies that the matrices The Pontryagin dual statements of Theorem 6.4 and 6.5 are (see [42]): Theorem 6.6 (Existence) Let G(z) be an n × k polynomial matrix generating a rate k n convolutional code C ⊆ F n [z] of degree δ. Then there exist (δ + n − k) × δ matrices K, L and a (δ + n − k) × n matrix M (all defined over F) such that the code C is described by Moreover the following minimality conditions will be satisfied: The minimality condition (iii) then translates into the condition that (A, B) forms a controllable pair, showing that the code C is controllable. One also verifies that the matrices (A, B, C, D) form a realization of the proper transfer function Y (z)U(z) −1 , that this is a minimal realization if and only if (A, C) forms an observable pair, and that this is the case if and only if the code C is observable. Finally, the Kronecker indices of C coincide with the controllability indices of the pair (A, B) [44]. The systems-theoretic meaning of the representation (6.9) is as follows (see [44]). Partition the code vector v(z) into: and consider the equation: . . , γ, y(z) = y 0 z γ + y 1 z γ−1 + . . . + y γ ; y t ∈ F n−k , t = 0, . . . , γ.

Then (6.10) is satisfied if and only if
x t+1 = Ax t + Bu t , y t = Cx t + Du t , is satisfied. Note that the state-space representation (6.11) is different from the representation (6.3). Equation (6.11) describes the dynamics of the systematic and rational encoder The encoding map u(z) → y(z) = G(z)U −1 (z)u(z) is input-restricted, i.e. u(z) must be in the column module of U(z) in order to make sure that y(z) and x(z) have finite support. In terms of systems theory, this simply means that the state should start at zero and return to zero in finite time. Linear systems satisfying these requirements have been studied by Hinrichsen and Prätzel-Wolters [18,19].

Differences and similarities among the definitions
After having reviewed these different definitions for convolutional codes, we would like to make some comparison. The definitions of Section 2 and Section 3 viewed convolutional codes as linear, timeinvariant, controllable and observable behaviors, not necessarily complete. Definition C and Definition C ′ were more general in the sense that non-controllable behaviors were accepted as codes. Definition D and Definition D ′ were more general in the sense that non-observable codes were allowed.
In the following subsection we show that all definitions are equivalent for all practical purposes if one restricts oneself to controllable and observable codes. ]] | P (σ)w(z) = 0}. If B is not controllable, then P (z) is not left prime and one has a factorization P (z) = V (z)P (z), whereP (z) is left prime and describes the controllable sub-behavior kerP (σ) ⊂ B. Since ker V (σ) is an autonomous behavior it follows that C = B ∩ F n ((z)) = ker P (σ) ∩ F n ((z)) = kerP (σ) ∩ F n ((z)).
Consider now a convolutional code C ⊂ F n ((z)) in the sense of Definition A ′ . Define: Conversely if C ⊂ F n [z] is a convolutional code in the sense of Definition D ′ , then define: By definition it is clear thatĈ ⊂Ĉ are convolutional codes in the sense of Definition D and Definition A ′ respectively.
is an observable code in the sense of Definition A ′ . Moreover the operationsˆandˇinduce a bijective correspondence between the observable codes C ⊂ F n [z] and convolutional codes C ⊂ F n ((z)) in the sense of Definition A ′ .
Theorem 7.2 is essentially the Pontryagin dual statement of Theorem 7.1; we leave it to the reader to work out the details. Theorem 7.1 and 7.2 together show that there is a bijection between controllable and observable codes in the sense of one definition and another definition. For controllable and observable codes the code parameters like the rate k/n, the degree δ and the Forney (Kronecker) indices are all the same. Moreover the free distance is in every case the same as well. For all practical purposes one can therefore say that the frameworks are completely equivalent, if one is only interested in controllable and observable codes.
The advantage of Definition D (respectively Definition D ′ ) over the other definitions lies in the fact that non-observable codes become naturally part of the theory. It also seems that for construction purposes the relation between quasi-cyclic codes and convolutional codes [33,46] is best described in a module-theoretic framework.
Definition C (respectively Definition C ′ ) allows one to introduce non-controllable codes in a natural way.
A Laurent series setting as in Definition A ′ seems to be most natural if one is interested in the description of the encoder and/or syndrome former. Extensions of the Laurent series framework to multidimensional convolutional codes is however much less natural than the polynomial framework, which is why the theory of multidimensional convolutional codes has mainly been developed in a module-theoretic framework [5,48,49].

Duality
In (5.2) we introduced a bilinear form which induced a bijection between behaviors B ⊂ F n [[z, z −1 ]] and modules C ⊂ F n [z, z −1 ]. This duality is a special instance of Pontryagin duality, and generalizes to group codes [12] and multidimensional systems [37].
In this subsection we show that the bilinear form (5.2) can also be used to obtain a duality between modules and modules (both in F n [z, z −1 ]) or between behaviors and behaviors (both For this let C ⊂ F n [z, z −1 ] be a submodule. Define: One immediately verifies that C ⊢ is a submodule of F n [z, z −1 ], which necessarily is observable. One always has C ⊂ (C ⊢ ) ⊢ . One can do something similar for behaviors. For this let B ⊂ F n [[z, z −1 ]] be a behavior. Define: Then it is immediate that B ⊢ is a controllable behavior, (B ⊢ ) ⊢ ⊂ B and (B ⊢ ) ⊢ describes the controllable sub-behavior of B.
It is also possible to adapt (5.2) for a duality of subspaces C ⊂ F n ((z)). For such a subspace we define: The duality (7.1) does not in general correspond to the linear algebra dual of the R = F[z, z −1 ] module C ⊂ R n since there is some 'time reversal' involved. The same is true for the duality (7.3), which does not correspond to the linear algebra dual of the F((z)) vector space C without time reversal.
If one works however with the 'time-reversed' bilinear form: then the definitions (7.1) and (7.3) do correspond to the module dual (and the linear algebra dual respectively), used widely in the coding literature [38]. In this case one has: If G(z) is a generator matrix of C ⊢ then H(z) := G t (z) is a parity check matrix of (C ⊢ ) ⊢ . In the Laurent-series context it is also possible to induce the duality (7.3) directly through the time-reversed bilinear form defined on F n ((z)) × F n ((z)): Note that the sum appearing in (7.5) is always well defined. This bilinear form has been widely used in functional analysis and in systems theory [14].

Convolutional codes as subsets of F[[z, z −1 ]], a case study.
In this subsection we illustrate the differences of the definitions in the peculiar case n = 1. If one works with Definition A or Definition B then there exist only the two trivial codes having the 1 × 1 generator matrix (1)  The situation of Definition C is already more interesting. For each polynomial p(z) one has the associated 'autonomous behavior': Autonomous behaviors are the extreme case of uncontrollable behaviors. If deg p(z) = δ, then B is a finite-dimensional F-vector space of dimension δ. For coding purposes B is not useful at all. Indeed, the code allows only δ symbols to be chosen freely, say the symbols w 0 , w 1 , . . . , w δ−1 . With this the codeword w(z) = ∞ i=−∞ w i z i ∈ B is determined, and the transmission of w(z) requires infinite symbols in the past and infinite symbols in the future. In other words, the code has transmission rate 0. The distance of the code is however very good, namely d free (B) = ∞. If B is defined on the positive time axis, i.e. B ⊂ F[[z]] then the situation is only slightly better. Indeed in this situation, one sends first δ message words and then an infinite set of 'check symbols'. As these remarks make clear, a code of the form (7.6) is not very useful.
The most interesting situation happens in the setup of Definition D and Definition D ′ . In this situation the codes are exactly the ideals < g(z) > ⊂ F[z, z −1 ] (respectively < g(z) > ⊂ F[z]). We now show that ideals of the form < g(z) > are of interest in the coding context. Example 7.3 Let F = F 2 = {0, 1}. Consider the ideal generated by g(z) = (z + 1). < g(z) > ⊂ F[z, z −1 ] consists in this case of the even-weight sequences, namely the set of all sequences with a finite and even number of ones. This code is controllable but not observable.
Ideals of the form < g(z) > are the extreme case of non-observable behaviors. In principle this makes it impossible for the receiver to decode a message. However with some additional 'side-information' decoding can still be performed, as we now explain.
One of the most often used codes in practice is probably the cyclic redundancy check code (CRC code). These codes are the main tool to ensure error-free transmissions over the Internet. They can be defined in the following way: Let g(z) ∈ F[z] be a polynomial. Then the encoding map is simply defined as: The code is then the ideal < g(z) > = im (ϕ). The distance of this code is 2, since there exists an integer N such that (z N − 1) ∈ < g(z) >. As we already mentioned the code is not observable. Assume now that the sender gives some additional side information indicating the start and the end of a message. This can be either done by saying: "I will send in a moment 1 Mb", or it can be done by adding some 'stop signal' at the end of the transmission.
Once the receiver knows that the transmission is over, he applies long division to compute c(z) =m(z)g(z) + r(z), deg r(z) < δ.
If r(z) = 0 the receiver accepts the messagem(z) as the transmitted message m(z). Otherwise he will ask for retransmission. The code performs best over a channel (like the Internet) which has the property that the whole message is transmitted correctly with probability p and with probability 1 − p whole blocks of the message are corrupted during transmission. One immediately sees that the probability that a corrupted messagem(z) is accepted is q −δ , where q = |F| is the field size.
One might argue that the code < g(z) > = im (ϕ) is simply a cyclic block code, but this is not quite the case. Note that the protocol does not specify any length of the code word and in each transmission a different message length can be chosen. In particular the code can be even used if the message length is longer than N, where N is the smallest integer such that (z N − 1) ∈ < g(z) >.
Example 7.4 Let F = F 2 = {0, 1} and let g(z) = z 20 + 1. Assume transmission is done on a channel with very low error probability where once in a while a burst error might happen destroying a whole sequence of bits. Assume that the sender uses a stop signal where he repeats the 4 bits 0011 for 100 times. Under these assumptions the receiver can be reasonably sure once a transmission has been complete. The probability of failure to detect a burst error is in this case 2 −20 which is less than 10 −6 . Note that g(z) is a very poor generator for a cyclic code of any block length.
Remark 7.5 CRC codes are in practice often implemented in a slightly different way than we described it above (see e.g. [36]). The sender typically performs long division on z δ m(z) and computes z δ m(z) = f (z)g(z) + r(z), deg r(z) < δ.
He then transmits the code word c(z) := z δ m(z) − r(z) ∈ < g(z) >. Clearly the schemes are equivalent. The advantage of the latter is that the message sequence m(z) is transmitted in 'plain text', allowing processing of the data immediately.

Some geometric remarks
One motivation for the author to take a module-theoretic approach to convolutional coding theory has come from algebraic-geometric considerations. As is explained in [31,39,40], a submodule of rank k and degree δ in F n [z] describes a quotient sheaf of rank k and degree δ over the projective line P 1 . The set of all such quotient sheaves having rank k and degree at most δ has the structure of a smooth projective variety denoted by X δ k,n . This variety has been of central interest in the recent algebraic geometry literature. In the context of coding theory, it has actually been used to predict the existence of maximum-distance-separable (MDS) convolutional codes [43].
The set of convolutional codes in the sense of Definition A or A ′ or B having rate k n and degree at most δ form all proper Zariski open subsets of X δ k,n . The points in the closure of these Zariski open sets are exactly the non-observable codes if the rate is 1 n . These geometric considerations suggest that non-observable convolutional codes should be incorporated into a complete theory of convolutional codes. The following example will help to clarify these issues: Example 7.6 Let δ = 2, k = 1 and n = 2, i.e., consider X 2 1,2 . Any code of degree at most 2 then has an encoder of the form: We can identify the encoder through the point (a 0 , a 1 , a 2 , b 0 , b 1 , b 2 ) ∈ P 5 . The variety X 2 1,2 is in this example exactly the projective space P 5 . For codes in the sense of Definition A or A ′ or B, G(z) must be taken as a basic minimal encoder in order to have a unique parameterization. This requires that g 1 (z) and g 2 (z) are coprime polynomials. The set of coprime polynomials g 1 (z), g 2 (z) viewed as a subset of P 5 forms a Zariski open subset U ⊂ P 5 described by the resultant condition For codes in the sense of Definition D, we require that a 0 and b 0 are not simultaneously zero in order to have a unique parameterization. Definition D leads to a larger Zariski open set V , i.e. U ⊂ V ⊂ P 5 . Only with Definition D ′ does one obtain the whole variety X 2 1,2 = P 5 .
In the general situation X δ k,n naturally contains the non-observable codes as well. If k = 1, then X δ 1,n = P n(δ+1)−1 , and the codes in the sense of Definition D ′ having rate 1 n and degree at most δ are exactly parameterized by X δ 1,n .

Conclusion
The paper surveys a number of different definitions of convolutional codes. All definitions have in common that a convolutional code is a subset C ⊂ F n [[z, z −1 ]] which is both linear and time-invariant. The definitions differ in requirements such as controllability, observability, completeness and restriction to finite support. If one requires that a code be both controllable and observable, then the restriction to any finite time window will result in equivalent definitions. Actually Loeliger and Mittelholzer [30] define a convolutional code locally in terms of one trellis section and they require in their definition that a code is controllable and observable. Algebraically such a trellis section is simply described through the generalized first order description (6.4) or (6.7).
If one wants to have a theory which allows one to work with rational encoders, then it will be necessary that the code has finite support on the negative time axis Z − (or alternatively on the positive time axis Z + ). This is one reason why a large part of the coding literature works with the field of formal Laurent series.
If one wants in addition to have a theory which can accommodate non-observable codes (and such a theory seems to have some value) then it is best to work in a module-theoretic setting.