+ All Categories
Home > Documents > Parity Check Matrices of Convolutional Codes Over Rings

Parity Check Matrices of Convolutional Codes Over Rings

Date post: 06-Aug-2015
Category:
Upload: herbertpalines
View: 22 times
Download: 0 times
Share this document with a friend
Description:
Herbert S. PalinesMS ThesisInstitute of Mathematical Sciences and PhysicsCollege of Arts and SciencesGraduate SchoolUniversity of the Philippines Los Baños
Popular Tags:
175
PARITY CHECK MATRICES OF CONVOLUTIONAL CODES OVER RINGS HERBERT SALUDES PALINES SUBMITTED TO THE FACULTY OF THE GRADUATE SCHOOL UNIVERSITY OF THE PHILIPPINES LOS BA ˜ NOS IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF MASTER OF SCIENCE (Mathematics) June 2011
Transcript
Page 1: Parity Check Matrices of Convolutional Codes Over Rings

PARITY CHECK MATRICES OFCONVOLUTIONAL CODES

OVER RINGS

HERBERT SALUDES PALINES

SUBMITTED TO THE FACULTY OF THE GRADUATE SCHOOLUNIVERSITY OF THE PHILIPPINES LOS BANOS

IN PARTIAL FULFILLMENT OF THEREQUIREMENTS FOR

THE DEGREE OF

MASTER OF SCIENCE(Mathematics)

June 2011

Page 2: Parity Check Matrices of Convolutional Codes Over Rings

ii

Page 3: Parity Check Matrices of Convolutional Codes Over Rings

BIOGRAPHICAL SKETCH

Herbert S. Palines was born on March 8, 1984 as the second eldest child of Spouses

Thelma DA. Saludes and Peter D. Palines. He attended his primary education at

Paaralang Elementarya ng Lucban in Quezon. He got his secondary education at

Southern Luzon Polytechnic College Laboratory High School also located in Lucban,

Quezon and graduated as salutatorian. With his love to learn mathematics, he contin-

ued his college education at University of the Philippines Los Banos with the degree

of Bachelor of Science in Mathematics. After his graduation, he became an instructor

of mathematics. It is his hope that teaching and learning mathematics can help solve

problems in our lives.

HERBERT SALUDES PALINES

iii

Page 4: Parity Check Matrices of Convolutional Codes Over Rings

ACKNOWLEDGEMENTS

I would like to extend my gratitude to the following:

Math Division, for supporting me to go on study leave.

Graduate School of UPLB and DOST, for giving the thesis grant.

Coding Theory Cluster of IMSP, especially to Prof. Cerezo, for the helpful con-versations on MAGMA routines.

Members of my guidance committee, for their time, especially to Dr. Cuaresma,for her valuable inputs in this manuscript.

My adviser, Dr. Sison, for his guidance and patience that enabled me to developan understanding of my thesis.

My family and friends, for their immeasurable support.

My wife, Kareen, for her love and understanding.

Above all, to Almighty God, who made all things possible.

iv

Page 5: Parity Check Matrices of Convolutional Codes Over Rings

TABLE OF CONTENTS

Page

Title Page i

Approval Page ii

Biographical Sketch iii

Acknowledgements iv

List of Tables viii

List of Figures ix

Abstract x

1 INTRODUCTION 1

1.1 Coding Theory 1

1.2 Applications 3

1.3 Objectives of the study 4

1.4 Synopsis 4

2 THEORETICAL BACKGROUND 11

2.1 Groups, Rings and Fields 11

2.2 Modules and Vector Spaces 20

2.3 Matrices 23

2.4 Linear Block Codes 29

2.5 Summary 31

v

Page 6: Parity Check Matrices of Convolutional Codes Over Rings

3 CONVOLUTIONAL CODES OVER RINGS 32

3.1 Definition of a Convolutional Code 32

3.2 Structural Properties of Convolutional Encoders 36

3.3 Estimating Free Distance 42

3.4 Summary 44

4 THE PARITY CHECK MATRIX OF ACONVOLUTIONAL CODE 45

4.1 Definition of a Parity Check Matrix 45

4.2 Deriving a Parity Check Matrix 48

4.2.1 A parity check matrix from a systematic encoder 48

4.2.2 A parity check matrix from a square polynomial matrix withpolynomial inverse (PMPI) 57

4.2.3 A parity check matrix from the subdeterminants of a generatormatrix 83

4.3 Summary 87

5 NEW EXAMPLES OF ENCODERS FOR SELF-DUALCONVOLUTIONAL CODES 88

5.1 Self-Dual Convolutional Codes 88

5.2 The Algorithm for Constructing the Examples 91

5.2.1 A 4× 8 minimal-basic PGM over Z2(D) 96

5.2.2 A 4× 8 systematic PGM over Z4(D) 99

5.3 Summary 100

6 STRUCTURAL PROPERTIES OFPARITY CHECK MATRICES 101

6.1 Connections Between Encoders 101

vi

Page 7: Parity Check Matrices of Convolutional Codes Over Rings

6.1.1 On subdeterminants 102

6.1.2 On constraint lengths 110

6.2 Structural Properties of a Parity CheckMatrix From a Generator Matrix over Zpr(D) 118

6.3 Summary 123

7 LOW-DENSITY CONVOLUTIONAL (LDC) CODES 124

7.1 Definition of LDC codes 124

7.2 Construction of an LDC code 127

7.3 Encoder of an LDC code 129

7.4 Summary 133

SUMMARY AND RECOMMENDATIONS 135

REFERENCES 138

A MAGMA PROGRAMS 141

A.1 Computing for the subdeterminants of a generator matrix 141

A.2 Checking basicity of a PGM 144

A.3 Checking reducedness of a PGM 148

A.4 Checking predictable degree property of a PGM 152

A.5 An estimation of the free distance of a code 156

A.6 For the new examples of encoders of self-dual convolutional codes 160

B LIST OF SYMBOLS 164

vii

Page 8: Parity Check Matrices of Convolutional Codes Over Rings

LIST OF TABLES

Table Page

2.1 The Lee weight function on Z4 30

viii

Page 9: Parity Check Matrices of Convolutional Codes Over Rings

LIST OF FIGURES

Figure Page

7.1 Illustration of the Jimenez - Zigangirov method for constructing thesyndrome former of a semi-homogeneous LDC (2, 2.5, 5)-code 128

ix

Page 10: Parity Check Matrices of Convolutional Codes Over Rings

ABSTRACT

PALINES, HERBERT S. University of the Philippines Los Banos, June 2011.Parity Check Matrices of Convolutional Codes Over Rings

Major Professor: Virgilio P. Sison

We extend the block code case of deriving a parity check matrix from a sys-tematic generator matrix to convolutional codes over rings. We show that if G(D) =(I, A) is a k×n generator matrix of a convolutional code C over a ring R where n = 2k(i.e. I, A ∈ R(D)k×k), A is invertible over R(D) and A−1 = −At, then the paritycheck matrix H(D) = (−At, I) for C is equivalent to G(D) and C is self-dual. Newexamples of encoders of self-dual convolutional codes over Z2 and Z4 are constructed.In the Zpr case, we show that the systematicity of the generator matrix implies thesystematicity, right invertibility, basicity, noncatastrophicity, and minimality of theparity check matrix. We consider specific conditions where a parity check matrix anda generator matrix are both minimal-basic.

By completing a basic encoder G(D) into a square polynomial matrix with poly-nomial inverse (PMPI) matrix B, a basic parity check matrix H(D) is taken fromB−1. This construction is obtained by proving that an encoder G(D) over Zpr [D] isbasic if and only if it is a submatrix of a square PMPI matrix over Zpr [D]. We showthat the minors of G(D) and H(D) are equivalent up to units in Zpr [D]. It is alsoproved that each i-th constraint length of H(D) is bounded above by the sum of rowdegrees of B.

From a given (n − 1) × n encoder G(D), we derive a 1 × n parity check matrixH(D). We prove that if G(D) is basic, then H(D) is basic. Given a polynomialgenerator matrix G(D), we show that the overall constraint length of H(D) is equalto the maximum degree of the minors of G(D).

Finally, a thorough discussion of the classical theory of low-density convolutional(LDC) codes is given. For time-invariant LDC codes, it has been observed that anencoder of a code can be obtained from the syndrome former H(D)t of the code ifthe parity check matrix H(D) is systematic and basic.

x

Page 11: Parity Check Matrices of Convolutional Codes Over Rings

Chapter 1

INTRODUCTION

In this chapter, we introduce a brief background of coding theory and its applications.

Then, we state the objectives of the study and discuss the synopsis of this material.

1.1 Coding Theory

Coding, in its broadest sense, is the transformation of information from one form to

another. On the other hand, the term coding theory pertains to a special kind of

coding that allows error detection and correction. According to the paper by Massey

[14], coding theory was initially a special tool in telegraphy and its development was

slow. It became a compact theory as a consequence of the Channel Coding Theorem

by Claude E. Shannon (1916-2001) as discussed in his 1948 paper entitled, “A Math-

ematical Theory of Communication” [20]. Because of this breakthrough, information

theory and its branch coding theory started to grow rapidly. It was further developed

by the work of R. W. Hamming who was stimulated by his colleague’s (Shannon)

discovery. Hamming then discovered the first general class of error correcting codes

(ECC). Originally, ECCs came about in response to practical problems in reliable

communication. The main idea in information theory is that every information is in

its digital form. Now, the given problem is that when the information is produced

Page 12: Parity Check Matrices of Convolutional Codes Over Rings

2

from a source and it passed through a noisy channel, it must be possible that the

original information can be recovered.

Coding theorists found out that in the construction of ECCs, sophisticated math-

ematics is required. At present, coding theory in the form of algebraic coding is also

a mathematical subject.

One of the oldest forms of coding for error control is the addition of parity check

bits to an information string. In a digital communication system, it is in source

coding where the original message is divided into sequences and then transformed in

its digital form using the symbols from a suitable alphabet, usually a ring. What

follows is channel coding or simply encoding where adding the parity check bits or

redundancy digits occurs. In this process, the message becomes a code. Then the

code is ready to combat noise in the channel.

The fundamental challenge in coding theory is to find good codes with both rea-

sonable information content and error handling ability. It is being done since it is

known that a message can be corrupted when it passes through a noisy channel or

it can be distorted when stored on a device with unreliable memory. To put it sim-

ply, there exists no perfect channel. By Shannon’s channel coding theorem, finding

good codes became possible. In other words, the theorem implies that an arbitrarily

reliable communication is possible.

Page 13: Parity Check Matrices of Convolutional Codes Over Rings

3

1.2 Applications

It has been said that the main motivation of coding theory comes from its practical

engineering applications, particularly in digital telecommunications. Coding is used

in compact discs and in Wi-fi and Wi-Max technologies, to mention some.

Philipsr invented the Compact Disc Digital Audio system that uses the so-

called Reed-Solomon codes that make the CDs still playable even after experiencing

scratches, cracks or other similar damages, to some extent.

The International Telecommunication Union (ITU) adopted Wi-Fi and Wi-Max as

one of the International Mobile Telecommunications-2000 (IMT-2000) Technologies

due to increasing demand of low complexity and higher performance systems. Wi-Fi

and Wi-Max technologies are major global cellular wireless standards. IEEE 802.16e

standards use low density parity check (LDPC) codes based on single frequency net-

work (SFN). LDPC codes with the help of high frequency powerful processors are

error correcting codes which allow transmission at rates in close proximity to Shan-

non’s limit for large block length. Gupta and Virmani [8] described various LDPC

codes for Wi-Fi and Wi-max technologies.

Page 14: Parity Check Matrices of Convolutional Codes Over Rings

4

1.3 Objectives of the study

This study aims to do the following:

1. Prove additional duality properties for convolutional codes over rings.

2. Construct new examples of convolutional codes over rings with desirable parity

check matrices.

3. Derive the induced structural properties of parity check matrices of convolu-

tional codes over rings from the structural properties of the generator matrices.

4. Observe the effect of using low density parity check matrix on the encoder of

the code.

1.4 Synopsis

In Chapter 2, we discuss the theoretical concepts needed in this thesis. We introduce

convolutional codes over rings in Chapter 3. Particularly, in Section 3.1, we describe

convolutional encoding and highlight its connection to the ring of Laurent series.

What follows is a definition of a convolutional code C over a ring R and a definiton

of a generator matrix over the ring of rational functions R(D). In Section 3.2, we

focus on the structural properties of convolutional encoders and consider polynomial

generator matrices (PGMs). The free distance of a code is an important parameter

Page 15: Parity Check Matrices of Convolutional Codes Over Rings

5

for the goodness of a code. Hence, a discussion on estimating the free distance based

on the truncation method by Sison [22] is given in Section 3.3.

The main results in this thesis are found in Chapters 4 to 7. To be guided in these

chapters, the definitions, examples, theorems, lemmas or corollaries without names

after it are formulated by the authors. Moreover, some theorems/lemmas/corollaries

in these chapters are classic results. However, we provide alternative proofs for them.

Particularly, we give our own proofs for Lemma 4.2, Corollary 6.1, Corollary 6.2,

Corollary 6.3 and Theorem 6.3. In the case of Theorem 6.5, we provide the details of

its proof.

In Chapter 4, we discuss parity check matrices of a convolutional code. In Section

4.1, we give the definition of a parity check matrix and a sufficient condition for its

existence. The main method in this thesis, which is on deriving a parity check matrix

from a generator matrix of a code, is discussed in Section 4.2. Specifically, in Section

4.2.1, a parity check matrix is derived from a systematic generator matrix (CI); in

Section 4.2.2, we complete a k×n basic encoder over Zpr [D] into a n×n polynomial

matrix with polynomial inverse (PMPI) matrix B over Zpr [D], then obtain a (n−k)×n

parity check matrix from the last (n− k) columns of B−1 (CII); and in Section 4.2.3,

a parity check matrix H(D) is taken from the (n− 1)× (n− 1) subdeterminants of a

(n− 1)× n encoder G(D) (CIII). Note that CII is attained by showing that a k × n

encoder G(D) over Zpr [D] is basic if and only if G(D) is a submatrix of a n×n PMPI

Page 16: Parity Check Matrices of Convolutional Codes Over Rings

6

matrix over Zpr [D]. The given constructions CI, CII and CIII are used repeatedly in

the succeeding chapters. CI is utilized in Sections 5.2, 5.2.1, 5.2.2, 6.1.2, 6.1.2 and

7.3, while CII and CIII are used in Sections 6, 6.1.2, 6.1.2 and 7.3.

In Chapter 5, we consider the dual of convolutional codes. Note that there are

two notions of duality for convolutional codes (see [23]). In our case, we define the

dual of a convolutional code in Section 5.1 as an analog to the dual of a linear block

code. Based on this definition and using CI, we show that if G(D) = (I, A) is a

k × n generator matrix of a convolutional code C over a ring R where n = 2k (i.e.

I, A ∈ R(D)k×k), A is invertible over R(D) and A−1 = −At, then the parity check

matrix H(D) = (−At, I) for C is equivalent to G(D) and C is self-dual. Moreover, we

consttuct new examples of 4 × 8 encoders for self-dual convolutional codes over Z2

and Z4 (see Sections 5.2.1 and 5.2.2, respectively). The said encoder over Z2(D) is

minimal-basic while the encoder over Z4(D) is a systematic PGM. In Section 5.2, the

algorithm for constructing these examples is given. We created a MAGMA program

to construct these examples (see Appendix A.6). Since MAGMA do not have an

intrinsic function that generates the ring of rational functions Z4(D), the constructed

encoder over Z4(D) is limited to polynomial entries.

A parity check matrix H(D) of a code C is an encoder of the the dual code C⊥. So,

in Chapter 6, we study the structural properties of H(D) and consider polynomial

Page 17: Parity Check Matrices of Convolutional Codes Over Rings

7

parity check matrices (PPCMs). Initially, in Section 6, we discuss connections be-

tween equivalent encoders of a code in terms of their subdeterminants and constraint

lengths. In Section 6, we show in the ring case that the k×k subdeterminants of two

equivalent generator matrices are equal up to units in R(D). Consequently, we prove

that the k×k minors of two equivalent basic generator matrices are equal up to units

in R[D]. Thus, in the field case, it is clear that the k × k minors of two equivalent

basic generator matrices are equal up to nonzero elements in the field. Verifying that

µ (the maximum degree among the k×k minors of a PGM) is invariant overall equiv-

alent basic encoders of convolutional codes over fields. Interestingly, we can extend

this idea among basic PGMs and PPCMs of a code. We show that if G(D) and H(D)

are both basic encoders over Zpr [D], then the (n− k)× (n− k) minors of H(D) are

equal to the k × k minors of G(D), up to units in Zpr [D]. In addition, we show that

if G(D) and H(D) are submatrices of unimodular matrices B and B−1 over Zpr [D],

that is det(B) and det(B−1) are units in Zpr , then µG = µH , where µG and µH are

the maximum degree among the k × k minors of G(D) and H(D), respectively. In

Section 6.1.2, we determine the connections of encoders in terms of their constraint

lengths. In the field case, the constraint lengths of equivalent minimal-basic encoders

are equal, except for the order. As a result, we show that the overall constraint

length ν is invariant among minimal-basic PGMs and PPCMs of a code. While in

the Zpr case, we show that if a k×n PGM G(D) and a (n− k)×n PPCM H(D) are

both basic such that they are submatrices of n × n PMPI matrices B and B−1 (see

CII), respectively, then the i-th constraint lengths of H(D) are bounded above by

Page 18: Parity Check Matrices of Convolutional Codes Over Rings

8

the sum of row degrees of B. In the context of CIII, it is immediate that the overall

constraint length νH of the 1 × n parity check matrix H(D) is exactly µG. In Sec-

tion 6.1.2, we focus on parity check matrices over Zpr(D) and study their structural

properties. We show that the systematicity of the encoder G(D) over Zpr [D] causes

the parity check matrix H(D) (derived from G(D) using CI) to be systematic, right

invertible, basic, noncatastrophic and minimal. Also, we consider a k × n (n = 2k)

PGM G(D) = (Ik, A) and a PPCM H(D) = (−At, Ik) of a code over Zpr(D) and give

conditions where G(D) and H(D) are both minimal-basic.

Chapter 7 is a thorough exposition of the theory of low-density parity check con-

volutional codes (LDPC-CCs) or low-density convolutional (LDC) codes. In Section

7.1, the definition of LDC code is introduced. A specific construction of LDC code

using Jimenez-Zigangirov method is given in Section 7.2. In Section 7.3, we focus

on time-invariant binary LDC code which is defined by a n × (n − k) polynomial

syndrome former H(D)t, the transposed of PPCM H(D). Note that an LDC code,

say C, is completely determined by its sparse syndrome former H t (in semi-infinite

matrix form). Nevertheless, an encoder G of C can be described by H t through

vjHt0 + vj−1H

t1 + · · ·+ vj−msH

tms = 01×(n−k) (1.1)

where v = v0v1v2 . . . vj . . . is a causal codeword of C and H t0, H

t1, . . . , H

tms are n×(n−k)

submatrices of H t over Z2. In particular, we observe the connections between the

syndrome former H(D)t and an encoder G(D) of C where H(D) is systematic and

basic. As a consequence of CI, if H(D) is systematic, then we can derive a systematic

Page 19: Parity Check Matrices of Convolutional Codes Over Rings

9

encoder G(D). We illustrate this through an example. Moreover, we verify that the

first k components of every codeblock vj, encoded by G at time j, coincide with the

information block uj and the last (n − k) components of vj are defined by (1.1). In

this situation, the memory of the syndrome former H(D)t is equal to the memory

of G(D). If H(D) is minimal-basic with overall constraint length νH , then C can be

encoded by a minimal-basic encoder with overall constraint length νH . Finally, we

show that if the n× (n− k) syndrome former H(D)t is basic, then using CII, a basic

k × n encoder G(D) can be obtained from a n× n PMPI matrix. It is shown that if

H(D)t is a submatrix of a n× n PMPI matrix B′, then the i-th constraint lengths of

G(D) are bounded above by the column degrees of B′ (or the row degrees of (B′)t).

We constructed MAGMA programs that helped us in the analysis of certain prob-

lems in this thesis and they are found in Appendix A. The subroutine given in Ap-

pendix A.1 is for computing the k× k subdeterminants of a k×n matrix, 1 ≤ k ≤ 4.

The subroutines in Appendix A.2 are used to check for the basicity of a k × n PGM

over F[D] via the minors, 1 ≤ k ≤ 4. In the field case, reducedness is equivalent to

µG = νG where G(D) is a PGM, µG is the maximum degree among the k × k minors

of G(D) and νG is the overall constraint length of G(D). Please note that we will not

use the notion of reducedness in this thesis so the reader is referred to [15]. However,

we created subroutines, found in Appendix A.3, to test for the reducedness of a given

k×n PGM G(D) through µG and νG. In Appendix A.4, the subroutines are intended

Page 20: Parity Check Matrices of Convolutional Codes Over Rings

10

to verify the predictable degree property (PDP) of a k×n PGM over the ring of poly-

nomials, where 1 ≤ k ≤ 4. Technically, the program on PDP works over any rings

defined in MAGMA. The subroutines given in Appendix A.5 are meant to estimate

the free distance of convolutional codes over Z2 and Z4. In this program, we use the

truncation method introduced by Sison [22]. Finally, the subroutines in Appendix

A.6 are used to construct examples of 4× 8 encoders of self-dual convolutional codes

over Z2 and Z4.

Page 21: Parity Check Matrices of Convolutional Codes Over Rings

11

Chapter 2

THEORETICAL BACKGROUND

In this chapter we introduce groups, rings, fields, modules, vector spaces, matrices,

and linear block codes. We look closely on the special kind of rings, the ring of Laurent

series and its subrings which are of great use in the discussion of the succeeding

chapters. These mathematical concepts are necessary for the understanding of this

thesis. The references for this chapter are the works by Hungerford [10] and Sison

[21]. Proofs and some details are excluded so the reader is referred to [10] and [21],

accordingly.

2.1 Groups, Rings and Fields

Definition 2.1. A group is a non-empty set G together with a binary operation ∗

on G such that the following three properties hold:

(i) ∗ is associative, that is, for any a, b, c ∈ G,

a ∗ (b ∗ c) = (a ∗ b) ∗ c;

(ii) there is an identity element eG in G such that for all a ∈ G,

a ∗ eG = eG ∗ a = a;

Page 22: Parity Check Matrices of Convolutional Codes Over Rings

12

(iii) for each a ∈ G, there exists an inverse element a−1 ∈ G such that

a ∗ a−1 = a−1 ∗ a = eG.

If the group also satisfies

(iv) for all a, b ∈ G, a ∗ b = b ∗ a,

then the group is called abelian.

Example 2.1.

1. The set Z2 = {0, 1} is an abelian group under addition modulo 2. We can also

use the notation F2 for Z2.

2. Similarly, the set Z4 = {0, 1, 2, 3} is an abelian group under addition modulo 4.

3. The set of all n-tuples over F2 [resp. Z4], denoted by Fn2 [resp. Zn4 ] is an abelian

group under componentwise addition modulo 2 [resp. addition modulo 4].

A non-empty subset H of a group G is said to be a subgroup of G if properties

(i)-(iii) hold for arbitrary elements a, b, c ∈ H.

Theorem 2.1. A non-empty subset H of a group G is a subgroup if and only if

a ∗ b−1 ∈ H for all a, b ∈ H.

Definition 2.2. A ring is a non-empty set R together with two binary operations,

usually denoted as addition (+) and multiplication (·), such that:

Page 23: Parity Check Matrices of Convolutional Codes Over Rings

13

(i) (R,+) is an abelian group;

(ii) (ab)c = a(bc) for all a, b, c ∈ R;

(iii) a(b+ c) = ab+ ac and (a+ b)c = ac+ bc for all a, b, c ∈ R.

If in addition:

(iv) ab = ba for all a, b ∈ R,

then R is said to be a commutative ring. If R contains an element 1R such that

(v) 1Ra = a1R = a for all a ∈ R,

then R is said to be a ring with identity (unity), and the identity is the element

1R. The additive identity of R is called the zero element and is denoted by 0.

From this point up to the last part of this section, the ring R under consideration

is assumed to be a commutative ring with identity, unless otherwise specified. A zero

divisor is a nonzero element a ∈ R such that ab = 0 for some nonzero b ∈ R. An

element c ∈ R is called nilpotent if there is a positive integer n such that cn = 0.

A ring R has no zero divisor if and only if the cancellation laws hold in R. If a

commutative ring R with identity 1R 6= 0 has no zero divisor, then R is said to be an

Page 24: Parity Check Matrices of Convolutional Codes Over Rings

14

integral domain.

If there is a smallest positive integer n such that na = 0 for all a in a ring R,

then R is said to have characteristic n, denoted by charR = n. If no such n exists,

then R is said to have characteristic zero, charR = 0. If R has identity 1R and

charR = n > 0, then n is the order of 1R in the additive group of R. Furthermore,

if R is an integral domain, then n is prime.

An element a ∈ R is said to be left [resp. right] invertible if there exists c ∈ R

[resp. b ∈ R] such that ca = 1R [resp. ab = 1R]. The element c [resp. b] is called a left

[resp. right] inverse of a. If an element a of R is both left and right invertible, then a

is said to be invertible or a unit in R. The set of units in R form a multiplicative

group. From this point, we denote that group by Ru.

A nonzero element q of R is said to divide an element p ∈ R, or to be a divisor

of p, denoted q|p, if there exists x ∈ R such that qx = p. In this case, we say that p is

a multiple of q, or that p is divisible by q. Further if q|p and p|q, then we say that

q and p are associates. A nonzero nonunit element c of R is said to be irreducible

if c = ab, then a or b is a unit in R.

A ring D with identity 1D 6= 0 in which every nonzero element is a unit is called

a division ring. A field is a commutative division ring. Every field is an integral

domain, and every finite integral domain is a field. A finite field of order q is usually

Page 25: Parity Check Matrices of Convolutional Codes Over Rings

15

called as Galois field, denoted by GF (q). Henceforth, we use F or GF (q) to denote

an arbitrary field.

A nonempty subset I of a commutative ring R is called an ideal if and only if,

for all a, b ∈ I and r ∈ R, the following conditions hold:

a, b ∈ I =⇒ a− b ∈ I

r ∈ R and a ∈ I =⇒ ra ∈ I .

Let a ∈ R, then the set Ra = {ra | r ∈ R} is an ideal, called the principal ideal

generated by a which can be denoted by (a). If every ideal of a ring is principal,

that ring is called a principal ideal ring. The ring ZM is a principal ideal ring. A

principal ideal ring which is an integral domain is called a principal ideal domain

(PID).

Example 2.2.

1. The set of integers Z is an infinite ring under the usual addition and multipli-

cation.

2. The set of integers ZM = {0, 1, 2, . . . ,M − 1} together with addition modulo M

and multiplication modulo M is a finite commutative ring with identity. This

ring is usually called the ring of integers modulo M If M = pr, where p is a

prime and r ∈ Z, r > 0, then we have Zpr .

Page 26: Parity Check Matrices of Convolutional Codes Over Rings

16

3. In the set Z4 = {0, 1, 2, 3} together with addition and multiplication modulo 4,

2 is a zero divisor while 1 and 3 are both units. Hence, Z4 is not a field since 2

is not a unit.

4. Z2 = {0, 1} under addition and multiplication modulo 2 is a field and commonly

known as the binary field.

5. Consider a commutative ring R with unity and the indeterminate D. We intro-

duce the ring of Laurent Series and its subrings.

(a) A Laurent Series is an infinite sum in D with a finite number of negative

powers of D. For instance,

x(D) =+∞∑i=−∞

xjDj

where the coefficients xj are in R, is a Laurent series over R in indetermi-

nate D. We denote the ring of Laurent Series over R in indeterminate

D as R((D)) where an element of this ring is given by x(D) above. If R is

a field, then R((D)) is also a field. A Laurent series is said to be causal if

it contains no negative powers of D.

(b) The ring of formal power series, denoted by R[[D]] , contains an ele-

ment of the form

x(D) =+∞∑i=0

xjDj

where xj ∈ R. A formal power series is nothing more than a causal Laurent

series.

Page 27: Parity Check Matrices of Convolutional Codes Over Rings

17

(c) The ring of polynomials is denoted by R[D] where each element contains

no negative power and only finite number of positive powers of D. That

is, every element p(D) in R[D] is of the form

p(D) = a0 + a1D + a2D2 + . . .+ anD

n =n∑i=0

aiDi

where ai ∈ R and n is a nonnegative integer.

Consider f(D), g(D) ∈ R[D] given by f(D) =n∑i=0

aiDi and g(D) =

m∑i=0

biDi, respectively, then addition is defined as

f(D) + g(D) =

max(n,m)∑i=0

(ai + bi)Di

and multiplication is given by

f(D)g(D) =n+m∑k=0

ckDk ,

where ck =k∑i=0

ak−ibi.

The leading coefficient of a nonzero polynomial is the nonzero coefficient

of the term with the largest power of D. On the other hand, the trailing

coefficient of a nonzero polynomial is the nonzero coefficient of the term

with the smallest power of D. For p(D) ∈ R[D], if an 6= 0 and ai = 0

for all i > n, then n is the degree of the polynomial p(D), denoted by

deg(p(D)). The leading coefficient of the polynomial p(D) shown above is

Page 28: Parity Check Matrices of Convolutional Codes Over Rings

18

an if an 6= 0.

A polynomial p(D) is said to be a monic polynomial if the leading coeffi-

cient of p(D) is 1R. The additive identity of R[D] is the zero polynomial,

the polynomial whose coefficients are all zero. A root of a nonzero poly-

nomial p(D) ∈ R[D] is an element w in a ring S ⊃ R, such that p(w) = 0.

Given that p(D) ∈ R[D] is not a unit, p(D) is said to be irreducible over

R[D] if for every factorization p(D) = r(D)s(D), either r(D) or s(D) is a

unit in R[D].

(d) We let the ring of rational functions R(D) be the set

{p(D)q(D)

p(D), q(D) ∈ R[D], q(D) 6= 0 and the trailing coefficient of

q(D) is a unit in R} .

The condition that the trailing coefficient of q(D) is a unit in R allows us

to treat a rational function as an equivalence class in the relation

p1(D)

q1(D)∼ p2(D)

q2(D)if and only if p1(D)q2(D) = p2(D)q1(D).

Note that we can expand p(D)q(D)

by performing long division and thus, every

rational fraction is uniquely expressible as a Laurent series with at most

finitely many negative powers of D.

(e) F(D) is a field and F[D] is a PID.

(f) Z4(D) is a principal ideal ring [5] while Z4[D] is not a field since it contains

zero divisors.

Page 29: Parity Check Matrices of Convolutional Codes Over Rings

19

(g) A considerable subring of R(D) is the ring of realizable functions Rr(D)

. This ring consists of rational functions p(D)/q(D), where q(0) is a unit

in R. A realizable function when expanded into a Laurent series is a causal

rational function. That is, the ring Rr(D) can be seen as the intersection

of R(D) and R[[D]].

If R and S are rings, a function f : R → S is a ring homomorphism provided

that for all a, b,∈ R, we have

f(a+ b) = f(a) + f(b) and f(ab) = f(a)f(b) .

We focus our attention on a specific ring homomorphism α on Zpr , called mod-p

reduction map, given by

α : Zpr −→ Zp

x 7→ x mod p .

We also consider a natural extension of α to Zpr [D] defined by

φ : Zpr [D] −→ Zp[D]

a0 + a1D + · · ·+ anDn 7−→ α(a0) + α(a1)D + · · ·+ α(an)Dn . (2.1)

The extended map φ is a ring homomorphism from Zpr [D] onto Zp[D].

Consider p1(D), p2(D) ∈ Zpr [D]. Then p1(D) and p2(D) are said to be coprime

in Zpr [D] if there are polynomials c1(D), c2(D) ∈ Zpr [D] such that

c1(D)p1(D) + c2(D)p2(D) = 1 .

Page 30: Parity Check Matrices of Convolutional Codes Over Rings

20

Two non-invertible polynomials p1(D) and p2(D) are coprime in Zpr [D] if and only if

φ(p1(D)) and φ(p2(D)) are coprime in Zp[D] (see [21]).

2.2 Modules and Vector Spaces

Definition 2.3. Consider a commutative ring R. An R-module is an additive

abelian group A together with a function R × A −→ A, where the image of the

ordered pair (r, a) ∈ R × A is denoted by ra, such that for all r, s ∈ R and a, b ∈ A,

the following properties are satisfied:

(i) r(a+ b) = ra+ rb;

(ii) (r + s)a = ra+ sa;

(iii) (rs)a = r(sa);

If R has an identity element 1R and

(iv) 1Ra = a for all a ∈ A.

then A is said to be a unitary R-module. If R is a division ring, then a unitary

R-module is called a vector space.

Moreover, if R is a field, that R-module is also regarded as a vector space or an

Page 31: Parity Check Matrices of Convolutional Codes Over Rings

21

R-vector space.

A non-empty subset B of an R-module A is called a submodule of A if B is an

additive subgroup of A and rb ∈ B for all r ∈ R and all b ∈ B. A submodule of a

vector space is called a subspace.

Theorem 2.2 (Compact Criterion, [10]). A non-empty set W of an F-vector space

V is a subspace if and only if a+ rb ∈ W for all a, b ∈ W and r ∈ F.

Example 2.3.

1. The set of all n-tuples over F, denoted by Fn , is a vector space.

2. F2(D)n is a vector space over F2(D) while F2[D]n is an F2[D]-module.

3. Z4(D)n and Z4[D]n are Z4(D)-module and Z4[D]-module, respectively.

Definition 2.4. If u = (u1, . . . , un) and v = (v1, . . . , vn) are vectors in Fn. Then the

inner product of u and v is

u · v =n∑i=1

uivi.

If u · v = 0, then u and v are orthogonal to each other.

A subset X of an R-module A is said to be linearly independent provided that

for distinct x1, x2, . . . , xn ∈ X and ri ∈ R

r1x1 + r2x2 + . . .+ rnxn = 0⇒ ri = 0 for every i.

Page 32: Parity Check Matrices of Convolutional Codes Over Rings

22

We say that a set Y spans A if A is generated by Y as an R-module. If R has an

identity and A is unitary, every element of A may be written as a linear combination:

r1y1 + r2y2 + . . .+ rnyn,

ri ∈ R, yi ∈ Y if and only if Y spans A. A linearly independent subset of A that

spans A is called a basis of A. An R-module F with a nonempty basis X is also

called a free R-module on the set X, and X is called a free basis.

Every vector space V over a division ring D has a basis and is therefore a free

D-module. In general, every linearly independent subset of V is contained in a basis

of V . R is said to have the invariant dimension property if any two basis of a

free R-module F have the same cardinality. The cardinal number of any basis of F is

called the dimension (or rank) of F over R. Furthermore, if F has a basis of finite

cardinality containing k elements, then F is said to be finitely generated with k

generators, and F is said to have dimension (or rank) k. The dimension (or rank)

of F is uniquely determined by F .

A module A is said to satisfy the ascending chain condition (ACC) on sub-

modules (or to be Noetherian) if for every chain

A1 ⊆ A2 ⊆ A3 ⊆ . . .

of submodules of A, there is an integer s such that Ai = As for all i ≥ s.

A module B is said to satisfy the descending chain condition (DCC) on

Page 33: Parity Check Matrices of Convolutional Codes Over Rings

23

submodules (or to be Artinian) if for every chain

B1 ⊇ B2 ⊇ B3 ⊇ . . .

of submodules of B, there is an integer t such that Bi = Bt for all i ≥ t.

A commutative ring R is considered as a module over itself, and the submodules

of R are precisely the ideals of R. The ring R is said to be Noetherian or Artinian

if R satisfies the ACC or DCC on its ideals, respectively. The integer ring ZM is

both Noetherian and Artinian. An R-module A has finite length if and only if A is

Noetherian and Artinian.

2.3 Matrices

In this section, we discuss some properties and operations on matrices and a special

type of matrices, the unimodular matrices. For convenience, we denote by Rk×n the

set of all k× n matrices with entries coming from R. Similarly, when we want to say

that a matrix A is a k × n matrix over R, we write Ak×n or A ∈ Rk×n . We denote

the a× a identity matrix by Ia or simply I when the size is not important.

In our discussion, a k × n matrix A over R can also be written as

A = (aij)

where aij is the (i, j)-th entry (the entry in the i-th row and j-th column of A) or

Page 34: Parity Check Matrices of Convolutional Codes Over Rings

24

the (i, j)-th element of A. Clearly, aij ∈ R for i = 1 to k and j = 1 to n. Further, we

write At to indicate the transpose of A which is given by the n×k matrix At = (bij)

such that bij = aji for all 1 ≤ i ≤ k and 1 ≤ j ≤ n.

Definition 2.5 (Hungerford, [10]). Let R be a commutative ring with identity and

A = (aij) ∈ Rn×n. The determinant function, denoted by det , is defined by

det(A) =∑σ∈S

(sgnσ)a1σ(1)a2σ(2) · · · anσ(n),

where the summation is over all permutations σ of the set S = {1, 2, . . . , n} and sgnσ

is taken + or − according to whether σ is even or odd, respectively.

It is well known that a determinant of a matrix, say A, can be expressed as a

cofactor expansion along a selected row or column of A. The general case of this

is through the Laplace’s expansion of det(A), where det(A) is expanded along a

selected set of rows or columns of A. We now discuss how to obtain such expansion

and consider the expansion of det(A) along a selected set of rows of A. Even so, the

same arguments and notations will carry through if we expanded det(A) along a set

of selected columns of A. Let A = (aij), i, j ∈ I = {1, 2, . . . , n}. Select any k rows of

A indexed by

K = {i1, i2, . . . , ik} ⊂ I ,

where i1 < i2 < . . . < ik. Then form the k×k matrix A(s)k = (arc), r ∈ K, by choosing

column indices c ∈ Cs = {j1, j2, . . . , jk} ⊂ I, j1 < j2 < . . . < jk. Consequently, the

corresponding (n−k)× (n−k) matrix A(s)n−k can be formed by removing the columns

Page 35: Parity Check Matrices of Convolutional Codes Over Rings

25

and rows indexed by Cs and K, respectively. That is, we can think of A(s)k and A

(s)n−k

as complements with respect to A. Since we are choosing k columns out of n columns,

the number of matrices Ask (similarly A(s)n−k) that can be formed is given by

N =

(nk

)=

n!

k!(n− k)!.

Also, the number of distinct index sets Cs that can be formed is N . Moreover, for a

given column index set Cs and row index set K that determine Ask, we let

Ks = j1 + j2 + . . .+ jk + i1 + i2 + . . .+ ik .

We are now ready to state the Laplace’s Expansion Theorem.

Theorem 2.3 (Laplace’s Expansion). If A is an n × n matrix over a commutative

ring with unity, then for any choice of k rows (or k columns) of A,

det(A) =N∑s=1

(−1)Ks det(A(s)k ) det(A

(s)n−k) . (2.2)

The factor (−1)Ks det(A(s)n−k) in (2.2) is also known as the cofactor of det(A

(s)k ).

When k = 1, (2.2) is the cofactor expansion of det(A) along a row or column.

The following lemmas are standard results in linear algebra.

Lemma 2.1. If A,B ∈ Rn×n, then det(AB) = det(A) det(B).

Lemma 2.2 (Hoffman and Kunze, [9]). Consider R to be a commutative ring with

identity. Suppose M ∈ Rn×n is a block matrix say

A B

C D

where A ∈ Rk×k,

Page 36: Parity Check Matrices of Convolutional Codes Over Rings

26

B ∈ Rk×(n−k), C ∈ R(n−k)×k, D ∈ R(n−k)×(n−k), k ≤ n and either B or C is a zero

matrix, that is M is either

A 0

C D

or

A B

0 D

or

A 0

0 D

, then det(M) =

det(A)det(D).

We say that a square matrix S is invertible over R if there exists a square matrix

S ′ such that SS ′ = S ′S = I or if det(S) is a unit in R.

Definition 2.6 (McEliece, [15]). A unimodular matrix over F[D] is a square poly-

nomial matrix whose determinant is a nonzero scalar in F.

We adopt the given definition for the ring case.

Definition 2.7. A unimodular matrix over R[D] is a square polynomial matrix

whose determinant is a unit in R.

Consider the set U(n,R[D]) of all n×n unimodular matrices over R[D]. Note that

in general, all matrices in U(n,R[D]) are invertible over R(D). But, the following

theorem gives more about the invertibility of matrices in U(n,R[D]).

Theorem 2.4. U(n,R[D]) is a group.

Proof:

U(n,R[D]) is not empty since In ∈ U(n,R[D]) where it is clear that

In is a polynomial matrix and det(In) ∈ Ru. Let A,B ∈ U(n,R[D]),

Page 37: Parity Check Matrices of Convolutional Codes Over Rings

27

then det(A), det(B) ∈ Ru; A,B are both polynomial matrices, hence the

product AB is also a polynomial matrix; and det(AB) = det(A) det(B) ∈

Ru. Thus, U(n,R[D]) is closed under matrix multiplication. Moreover,

matrix multiplication is associative in U(n,R[D]).

It remains to show that if A ∈ U(n,R[D]), then A−1 ∈ U(n,R[D]).

Specifically, we want to show that A−1 is also a polynomial matrix and

det(A−1) ∈ Ru.

Since A is invertible, we can compute for A−1 using a standard formula

in linear algebra. Suppose A = (aij), then A−1 is given by

A−1 =

A11

det(A)A21

det(A)· · · An1

det(A)

A12

det(A)A22

det(A)· · · An2

det(A)

......

. . ....

A1n

det(A)A2n

det(A)· · · Ann

det(A)

where Aij = (−1)i+j det(Mij) is the cofactor of aij and Mij is a (n− 1)×

(n− 1) submatrix of A obtained by deleting the i-th row and j-th column

of A. It is clear that Aij ∈ R[D] since det(Mij) ∈ R[D]. Also, since

det(A) ∈ Ru, thusAij

det(A)∈ R[D], therefore A−1 ∈ R[D]n×n.

Expanding det(A−1) using Definition 2.5, we have

det(A−1) =∑σ∈Sn

(sgnσ)Aσ(1)1

det(A)

Aσ(2)2

det(A)· · ·

Aσ(n)n

det(A). (2.3)

Page 38: Parity Check Matrices of Convolutional Codes Over Rings

28

As another standard result in linear algebra, we have

A(adj(A)) = (adj(A))A = det(A)In = diag(det(A), det(A), . . . , det(A))

=

det(A) 0 · · · 0

0 det(A) · · · 0

......

. . ....

0 0 · · · det(A)

(2.4)

Where adj(A) is the so-called adjoint of A. So, getting the determinants

of both sides of (2.4) will result to

det(A) det(adj(A)) = [det(A)]n or det(adj(A)) = [det(A)]n−1. (2.5)

From (2.3) and (2.5), it follows that

det(A−1) =∑σ∈Sn

(sgnσ)Aσ(1)1Aσ(2)2 · · ·Aσ(n)n

[det(A)]n

= 1[det(A)]n

·∑σ∈Sn

(sgnσ)Aσ(1)1Aσ(2)2 · · ·Aσ(n)n

= 1[det(A)]n

· det(adj(A))

= 1[det(A)]n

· [det(A)]n−1

= 1det(A)

∈ Ru

since det(A) ∈ Ru. Thus, A−1 ∈ U(n,R[D]).

The theorem above simply says that a unimodular matrix is a square polynomial

matrix over R[D] with determinant in Ru, thus its inverse is also a polynomial matrix.

Page 39: Parity Check Matrices of Convolutional Codes Over Rings

29

Since the units in R[D], where R is a commutative ring with unity, are not only the

nonzero units in R, apparently, there is a larger set of square polynomial matrices

which are invertible over R[D]. It is also immediate from the proof of Theorem 2.4

that this set of square polynomial matrices over R[D] forms a group. We call such a

matrix as square polynomial matrix with polynomial inverse (PMPI).

2.4 Linear Block Codes

A block encoder is described by a linear map that is completely determined by a

k×nmatrixG over R, wherein a k-tuple u of symbols in R, called information word,

is sent to an n-tuple v of symbols over R, called a codeword, via the relationship

v = uG .

A rate-k/n linear block code B over R generated by G is the set of those codewords

given by

B = {v ∈ Rn | v = uG, u ∈ Rk} .

The matrix G is called a generator matrix for B if the rows of G span B and if no

proper subset of the rows of G generates B. In general, a block code B over R is a

subset of Rn, but, if B is linear, then B can be regarded as an R-submodule of Rn

which may not be necessarily free.

One of the indicators of the goodness of a code is its minimum distance. The

Page 40: Parity Check Matrices of Convolutional Codes Over Rings

30

distance measures the capability of the code to detect and correct errors. A linear

block code can be equipped with a suitable distance metric through a weight function

wt defined on B and is given by

wt : Rn −→ R .

We discuss the Hamming metric and Lee metric.

The Hamming weight of an element x ∈ R is given by

wtH(x) =

1 if x 6= 0

0 if x = 0

. (2.6)

Let y = (y1, y2, . . . , yn) ∈ Rn, then the Hamming weight of y is given by

wtH(y) = wtH(y1) + wtH(y2) + . . .+ wtH(yn) .

We consider a quaternary linear block code to be a linear block code whithalphabet Z4. The Lee weight of an element x ∈ Z4, denoted by wtL(x) , is given

below:

Table 2.1: The Lee weight function on Z4

x wL(x)0 01 12 23 1

Suppose y = (y1, y2, . . . , yn) ∈ Zn4 , the Lee weight of y is extended as follows:

wtL(y) = wtL(y1) + wtL(y2) + . . .+ wtL(yn) .

Page 41: Parity Check Matrices of Convolutional Codes Over Rings

31

The minimum (Hamming, Lee, etc.) distance d of a linear block code B is

given by

d = min{wt(v − v′)|v, v′ ∈ B, v 6= v′}

where wt is a weight function (Hamming, Lee, etc.) defined on B and wt(v − v′) is

the (Hamming, Lee, etc.) distance between v and v′.

Consider a linear block code over a field and codewords v and v′. The number of

coordinates where v and v′ are different is precisely given by wtH(v − v′). So if v is

a sent codeword and v′ is the received codeword after transmission, then wtH(v− v′)

is the number of errors that occurred during the transmission. A linear block code B

with minimum distance d can correct up to⌊d−12

⌋number of errors. Thus, the higher

the minimum distance, the better the code is. Thus, for most practical applications,

the minimum distance of a code is one of the most important parameters. However,

determining the minimum distance of a code is not an easy problem.

2.5 Summary

The basic algebraic structures such as groups, rings, fields, modules and vector spaces

have been discussed. A special kind of rings, the ring of Laurent series and its subrings,

especially the ring of rational functions and ring of polynomials, were considered since

they will be of great use in the discussion of the succeeding chapters. Some properties

and notations on matrices were established. A general background on linear block

codes have been presented.

Page 42: Parity Check Matrices of Convolutional Codes Over Rings

32

Chapter 3

CONVOLUTIONAL CODES OVER RINGS

In this chapter, we discuss convolutional encoder. Then we adopt a specific definition

of a convolutional code. We also give the structural properties of generator matrices

and the free distance of a convolutional code. The references used in this chapter are

the works by McEliece [15], Mittelholzer [16, 17], Sison [21, 22] and Wittenmark [23].

3.1 Definition of a Convolutional Code

A convolutional encoder over R is a linear mapping where the input sequence

u is possibly an infinite sequence of information blocks uj , denoted by

u = . . . u−2u−1u0u1u2 . . .

where each block uj has k symbols, that is

uj = (u(1)j , u

(2)j , . . . , u

(k)j )

where u(i)j ∈ R, i = 1, . . . , k.

At a given time-instant j, a k-ary block uj is fed into the convolutional encoder

and an n-ary block vj, called the code block is produced. Consequently, after

Page 43: Parity Check Matrices of Convolutional Codes Over Rings

33

each information block has passed through the convolutional encoder, the output

sequence v is obtained, which is given by

v = . . . v−2v−1v0v1v2 . . . ,

where

vj = (v(1)j , v

(2)j , . . . , v

(n)j )

and v(i)j ∈ R, i = 1, . . . , n. It should be noted that the information sequence and code

sequence u and v, respectively, should start at some finite time j (conveniently at

j = 0) but may or may not end.

In convolutional encoding, the code block vj uses not only the current informa-

tion block uj, but also uses a fixed number, say m, of earlier information blocks

uj−1, uj−2, . . . , uj−m. Specifically, at each time-instant j, the code block vj is gener-

ated as

vj = ujG0 + uj−1G1 + . . .+ uj−mGm (3.1)

where each generator submatrix Gi is a k×n matrix over R, i = 1, 2, . . . ,m. Unlike

the block encoder, convolutional encoder has the so-called memory, which is given

by the integer m. We can think of a linear block code as a degenerate special case of

a convolutional code. That is, we can say that a linear block code is a memory-less

(m = 0) convolutional code.

Consider an information sequence u. The code sequence v is determined through

v = uG

Page 44: Parity Check Matrices of Convolutional Codes Over Rings

34

or

. . . v−2v−1v0v1v2 . . . = (. . . u−2u−1u0u1u2 . . .)G

where G is the semi-infinite scalar matrix over R given by

G0 G1 G2 · · · Gm−1 Gm

G0 G1 G2 · · · Gm−1 Gm

G0 G1 G2 · · · Gm−1 Gm

. . . . . . . . . · · · . . . . . .

where each empty cell is assumed to be filled with zeros. The matrix G is called

the generator matrix for the code. In the convolutional encoding process, we see

that for every k-tuple of information block, a corresponding n-tuple of code block is

produced. Then we say that the convolutional code is of rate-k/n.

We can represent the input sequence u and output sequence v in another way

through the delay operator D or the so-called D-transform. The D-transforms of

the sequences u and v are given by

u(D) = . . .+ u−1D−1 + u0 + u1D

1 + u2D2 + . . .

and

v(D) = . . .+ v−1D−1 + v0 + v1D

1 + v2D2 + . . . ,

respectively. The exponent j of D gives the time-instant when uj and vj appeared in

Page 45: Parity Check Matrices of Convolutional Codes Over Rings

35

the sequences. Since uj ∈ Rk and vj ∈ Rn, we have

u(D) = [u1(D), . . . , uk(D)]

and

v(D) = [v1(D), . . . , vn(D)]

where

uj(D) =+∞∑i=−∞

u(j)i Di, j = 1, . . . , k

and

vj(D) =+∞∑i=−∞

v(j)i Di, j = 1, . . . , n .

They are related through the equation

v(D) = u(D)G(D)

where

G(D) = G0 +G1D +G2D2 + . . .+GmD

m

is a generator matrix in D-transform. As a result, we can view convolutional

codes as a linear block codes over the ring of Laurent series R((D)) or over the

ring of rational functions R(D). In this case, convolutional codes can be studied

“algebraically”.

As a result, we have the following definition, due to Massey.

Definition 3.1. A rate-k/n convolutional code C over R is an R(D)-submodule

of R(D)n given by

C = {u(D)G(D)|u(D) ∈ R(D)k}

Page 46: Parity Check Matrices of Convolutional Codes Over Rings

36

where G(D) is a k × n matrix over R(D) whose rows are free over R(D), that is,

the kernel of G(D) is trivial. The free module C is the R(D)-row span of G(D).

The rational matrix G(D) is called a transfer function matrix. If the entries of

G(D) are realizable then G(D) is called a generator matrix or encoding matrix

or simply an encoder for C. In this sense, we can view the convolutional code C as

a rate-k/n linear block code over R(D) with its block generator matrix G(D).

Another definition of convolutional code is due to G.D. Forney wherein C is re-

garded as an R((D))-submodule of R((D))n given by

C = {u(D)G(D)|u(D) ∈ R((D))k}

where G(D) is a k × n matrix over R(D) whose rows are free over R((D)). For

convolutional codes over fields or over Notherian rings, the two definitions lead to

equivalent theories. But in general, this is not true. T. Mittelholzer, in [17] found

out that there exist generator matrices over R(D) whose rows are free over R(D) but

not free over R((D)).

In this thesis, we use Definition 3.1, by Massey. Moreover, since ZM is Noetherian,

it is sufficient to use Definition 3.1 for convolutional codes over ZM .

3.2 Structural Properties of Convolutional Encoders

Encoding and decoding are important parts of the communication process. We

can see that the quality of encoding is merely dependent on the structural properties

Page 47: Parity Check Matrices of Convolutional Codes Over Rings

37

of the encoders or the generator matrices. We can also look at the encoding process

as a linear mapping from the input space R(D)k to the output space R(D)n, also

known as the convolutional transducer over R(D), given by

ϕ : R(D)k −→ R(D)n

u(D) 7→ v(D).

The codeword v(D) is obtained via

v(D) = u(D)G(D) .

We require the rows of G(D) to be free over R(D) or equivalently, we want ϕ to be

injective so that the reconstruction of the information sequence u(D) from v(D) after

transmission is possible, even when there is no noise in the channel.

For the entire section, we consider C to be a rate-k/n convolutional code over the

ring R.

The study of encoding naturally leads to the study of the encoders or generator

matrices. The generator matrix of a code is not unique. We say that two generator

matrices are equivalent if they generate the same code. Further, two generator

matrices G(D) and G′(D), of C, are equivalent if and only if there exists a k × k

Page 48: Parity Check Matrices of Convolutional Codes Over Rings

38

invertible matrix T (D) over R(D) such that G′(D) = T (D)G(D) [23].

We say that the code C is right invertible if it has a generator matrix G(D)

which has a right inverse over R(D). If the code C has a generator matrix G(D)

which has a right inverse over R(D), so does every generator matrix for this code. It

is well-known that every generator matrix of a convolutional code over a field is right

invertible. Not in the ring case, where there exist convolutional codes over R which

are not right invertible. However, if R satisfies the DCC, then every convolutional

code over R is right invertible [17]. Hence, for codes over finite commutative rings

ZM , every generator matrix has a right inverse.

A generator matrix G(D) of C is said to be systematic if it causes the information

symbols to appear unchanged among the code symbols, i.e., if some k of its columns

form Ik. Convolutional codes over fields have both systematic and nonsystematic

generator matrices. So we say, systematicity in the field case is an encoder property.

In the ring case, it is a code property. A convolutional code C is systematic if it

has a systematic generator matrix. C is systematic if and only if it has a generator

matrix G(D) that has k × k submatrix whose determinant is a unit in Rr(D) and a

convolutional code over Zpr is systematic if and only if G(0) mod p has full rank over

GF (p) (see [23]). It is worth noting that if C is systematic, then C is right invertible,

Page 49: Parity Check Matrices of Convolutional Codes Over Rings

39

but the converse is not true.

A generator matrix is said to be non-catastrophic if there does not exist an

infinite weight information sequence u(D) that gives a codeword v(D) of finite weight.

On the other hand, a decoding catastrophe is said to have occurred if there is a

codeword of finite weight, but after decoding, the corresponding information word

has infinite weight resulting to an infinite error [15]. Obviously, in all cases, we do

not want our generator matrices to be catastrophic.

In [16], it was reported that every realizable generator matrix over R(D) can be

realized with a finite number of memory cells capable of storing a finite number of

scalars and adders that perform multiplication by constants and additions, respec-

tively, within the ring R. The multiplication and addition happen during the encoding

process. To see this, recall that at time-instant j, the code block vj needs m number

of previous information blocks uj, uj − 1, . . . , uj−m. We call this set as the encoder

states at time j. G(D) is minimal if there exists a realization of G(D) that uses

the least number of encoder states required to generate the code. Furthermore, every

realizable systematic generator matrix is minimal [16].

A code can have rational and polynomial generator matrices. We give much atten-

tion to the latter. A generator matrix G(D) is called polynomial generator matrix

(PGM) if all its entries are polynomial. Let v(D) = (v1(D), v2(D), . . . , vn(D)) be a

polynomial vector (i.e a vector which all the components vi(D) are polynomial),

Page 50: Parity Check Matrices of Convolutional Codes Over Rings

40

and define the degree of v(D), denoted by degv(D), to be degv(D)=max{degvi(D)}.

We let gi(D) to be the i-th row of the k × n generator matrix G(D) = (gij(D)). The

i-th constraint length, νi , is given by νi = deggi(D), i = 1, . . . , k. Its overall

constraint length, ν , is the sum of all the constraint lengths. The memory m is

given by m = max1≤i≤k

{νi}.

If u(D) = (u1(D), u2(D), . . . , uk(D)) is a polynomial input and v(D) is a polyno-

mial output given by v(D) = u(D)G(D), then in general we have

degv(D) ≤ maxi{degui(D)gi(D)} = max

i{degui(D) + νi} .

If degv(D) = maxi{degui(D) + νi} for all polynomial input u(D), then we say that

the generator matrix G(D) has the predictable degree property (PDP). Define

the indicator matrix [G(D)]h to be a k×n matrix over R with the row-wise highest

degree coefficients of the entries in G(D) in the corresponding positions of [G(D)]h ,

and zeros elsewhere. A polynomial generator matrix G(D) has the predictable degree

property if and only if the rows of the [G(D)]h are free over R. Moreover, if [G(D)]h

has a k × k submatrix whose determinant is a unit in R, then the rows of [G(D)]h

Page 51: Parity Check Matrices of Convolutional Codes Over Rings

41

are free, hence G(D) has PDP (see [23]).

Let µ be the highest degree among the determinants of the k × k submatrices of

a PGM G(D). If G(D) has PDP, then µ = ν [23].

In some literature (see for instance [6, 5, 15]), the term minor is used to indicate

the determinant of a k × k submatrix of a PGM G(D). Henceforth, we use the term

minor for the determinant of a k × k submatrix of a k × n PGM G(D).

We say that a generator matrix G(D) is basic if it is polynomial and has a

polynomial right inverse G′(D) such that G(D)G′(D) = I. Basicity is equivalent

with the so-called “polynomial output implies polynomial input (POPI)” property

[3]. In the field case, a k × n PGM G(D) is basic if and only if the gcd of the k × k

minors of G(D) is 1 and equivalently, if the invariant factors of G(D) are all 1 (see

Theorem 4.1). Also, G(D) is non-catastrophic if and only if the gcd of the k × k

minors of G(D) is a power of D ([15]). So, in the field case we have:

systematicity ⇒ basicity ⇒ non-catastrophicity (see [15]).

A generator matrix G(D) is minimal-basic if it is basic and the overall constraint

length ν is minimal over all equivalent basic generator matrices. A basic generator

matrix G(D) with PDP is minimal-basic [23]. In the field case, the four statements

are equivalent for a basic G(D): G(D) has PDP, [G(D)]h has full rank, G(D) is

Page 52: Parity Check Matrices of Convolutional Codes Over Rings

42

minimal-basic and µ = ν. Moreover, in the field case, if G(D) is minimal-basic then

it is minimal. In the ring case, minimal-basicity does not imply minimality [23].

3.3 Estimating Free Distance

Consider a codeword v(D) = (v1(D), v2(D), . . . , vn(D)) ∈ C. The weight of vi(D)

is the sum of the weights (Hamming, Lee, etc.) of the Laurent series coefficients of

vi(D). The weight of v(D) is the sum of the weights of its components vi(D), which

probably infinite. The free distance of C, denoted by dfree(C) is given by

dfree(C) = min{wt(v(D))|v(D) ∈ C, v(D) 6= 0}

where wt is a weight function (Hamming, Lee, etc.) defined on R.

It is known that for practical purposes that the free distance of a code is the main

important parameter that determines the goodness of a code. Computing for the free

distance of a code is not an easy job. That is why bounds for the free distance is very

important. In [22], V.P. Sison found the Heller-type bounds for the homogeneous free

distance of convolutional codes over finite Frobenius rings, which are the generalized

upper bounds of the free distances of convolutional codes over rings. In the proof of

Theorem 1 in [22], Sison suggested how to estimate the said bound and it is reflected

in the MAGMA program found in Appendix A.5. We discuss the algorithm of the

Page 53: Parity Check Matrices of Convolutional Codes Over Rings

43

said estimation.

Consider a k × n PGM G(D) of a rate-k/n convolutional code C over a finite

commutative ring with unity, say R. Let m and νGi be the memory and the i-th con-

straint length of G(D), respectively. Moreover, let u(D) = [u1(D), u2(D), . . . , uk(D)]

be a polynomial information word of C. We truncate C by making

deg(ui(D)) ≤ L− 1, (3.2)

where 1 ≤ i ≤ k and L is a non-negative integer. Consequently, the corresponding

codeword v(D) given by v(D) = u(D)G(D) satisfies

deg(v(D)) ≤ m+ L− 1

since νGi ≤ m, for all 1 ≤ i ≤ k. Since R is finite, the set of polynomial inputs

u(D), say PL−1, is also finite. Specifically, the number of polynomials ui(D), that

satisfy (3.2), is given by |R|L. Thus, PL−1 has |R|kL elements. Since G(D) is a

PGM, therefore the set of all possible polynomial codewords v(D) = u(D)G(D),

say CL, has |R|kL elements. We focus on CL and call it the truncated code of

C at parameter L. We now consider a linear block code, say BL, corresponding

to CL. Let v(D) = [v1(D), v2(D), . . . , vn(D)] be a codeword in CL. Recall that

we can write each vi(D) as vi(D) = v(i)0 + v

(i)1 D + v

(i)2 D2 + · · · + v

(i)m+L−1D

m+L−1,

v(i)j ∈ R. Then a corresponding causal finite sequence to V (D) is given by v =

v(1)0 v

(2)0 . . . v

(n)0 v

(1)1 v

(2)1 . . . v

(n)1 . . . v

(1)m+L−1v

(2)m+L−1 . . . v

(n)m+L−1. Note that the length of v

is given by n(m+L). The set of all causal finite sequence v obtained from CL form the

Page 54: Parity Check Matrices of Convolutional Codes Over Rings

44

linear block code BL of length n(m+L). The minimum distance of BL approximates

the free distance of C. We now give the algorithm of the estimation process for

MAGMA implementation.

1. Construct PL−1.

2. Generate CL via v(D) = u(D)G(D), where u(D) ∈ PL−1.

3. Transform each v(D) in CL to a causal finite sequence v.

4. Take BL to be the set of all causal finite sequences v.

5. Get the minimum distance of BL.

3.4 Summary

We introduced convolutional codes over rings and adopted the definition by Massey.

The connections between convolutional encoding and the ring of Laurent series have

been emphasized. We defined a generator matrix of a convolutional code over the

ring of rational functions R(D) and considered PGMs. The structural properties of

convolutional encoders were given. Estimation of free distance of a convolutional code

based on the truncation method proposed by Sison [22] was discussed.

Page 55: Parity Check Matrices of Convolutional Codes Over Rings

45

Chapter 4

THE PARITY CHECK MATRIX OF A

CONVOLUTIONAL CODE

In this chapter, we define a parity check matrix of a convolutional code and introduce

three ways of deriving a parity check matrix from a given generator matrix. These

constructions serve as the main tool in this thesis.

4.1 Definition of a Parity Check Matrix

A code is completely determined by its generator matrix. In some cases, a code can

be described by its parity check matrix. In the field case, it is known that the parity

check matrix of a convolutional code always exists. While in the ring case, it only

happens if the the ring satisfies the descending chain condition (DCC). It is stated in

the following lemma.

Lemma 4.1 (Mittelholzer, [17]). Let R be a commutative ring satisfying the descend-

ing chain condition and let G(D) be a k × n matrix over R(D). Then the following

statements are equivalent:

(i) The kernel of G(D) is trivial;

(ii) G(D) has a right inverse G(D)′ ∈ R(D)n×k;

Page 56: Parity Check Matrices of Convolutional Codes Over Rings

46

(iii) The code C generated by G(D) can be characterized by a parity check matrix

H(D) ∈ R(D)(n−k)×n, i.e.,

C = {x(D) ∈ R(D)n|x(D)H(D)t = 01×(n−k)} .

Since the kernel of G(D) is trivial, i.e. the rows of G(D) are free over R(D),

the code C generated by G(D) is a free R(D)-submodule of R(D)n. In other words,

every codeword in C can be expressed as a linear combination of the rows of G(D).

Consequently, the rows of G(D) are also codewords in C. Thus, to verify whether

H(D) is a parity check matrix of C, it is enough to check that G(D)H(D)t = 0k×(n−k).

It will suffice that each codeword in C is orthogonal to the rows of H(D).

For the entire paper, we assume that a ring R satisfies DCC when we are talking

about the parity check matrix of a convolutional code over the ring R.

Example 4.1 (McEliece, [15]).

G(D) =

1 0 0 1

0 1 0 1

0 0 1 D2 + 1

is a generator matrix of a rate-3/4 convolutional code C over Z2. A parity check

matrix of C is given by

H(D) =

(1 1 D2 + 1 1

).

Page 57: Parity Check Matrices of Convolutional Codes Over Rings

47

We can verify that G(D)H(D)t = 03×1. This is given by

G(D)H(D)t =

1 0 0 1

0 1 0 1

0 0 1 D2 + 1

1

1

D2 + 1

1

=

(1)(1) + (0)(1) + (0)(D2 + 1) + (1)(1)

(0)(1) + (1)(1) + (0)(D2 + 1) + (1)(1)

(0)(1) + (0)(1) + (1)(D2 + 1) + (D2 + 1)(1)

=

0

0

0

.

Example 4.2 (Wittenmark, [23]). Consider the convolutional code C over Z4, of

rate-1/2, generated by a PGM G(D) given by

G(D) =

(D2 + 3D + 3 2D2 +D + 2

).

A parity check matrix H(D) of C is given by

H(D) =

(2D2 + 3D + 2 D2 + 3D + 3

).

Similarly, we verify that G(D)H(D)t = 0.

G(D)H(D)t =

(D2 + 3D + 3 2D2 +D + 2

)2D2 + 3D + 2

D2 + 3D + 3

=

((D2 + 3D + 3)(2D2 + 3D + 2) + (2D2 +D + 2)(D2 + 3D + 3)

)=

((2D4 +D3 +D2 + 3D + 2) + (2D4 + 3D3 + 3D2 +D + 2)

)=

(0

).

Now, the problem at hand is deriving a parity check matrix of a code. We consider

it in the following section.

Page 58: Parity Check Matrices of Convolutional Codes Over Rings

48

4.2 Deriving a Parity Check Matrix

Since one of our objectives is to study the connections between encoders and parity

check matrices of a code, hence we device ways of deriving a parity check matrix

from a given encoder of a code. Specifically, we derive a parity check matrix from a

systematic encoder, a basic encoder, and from the subdeterminants of the encoder.

4.2.1 A parity check matrix from a systematic encoder

The given lemma below is a natural extension from the block code case.

Lemma 4.2 (McEliece, [15]). Let G(D) be a k × n matrix over R(D). If G(D) =

(Ik, A) (i.e. G(D) is a systematic encoder in standard form) is a generator matrix of

a convolutional code C over R, then a (n− k)× n parity check matrix H(D) of C is

given by

H(D) =(−At, In−k

).

The proof is motivated by [13]. Note that we can extend this proof to the case

where the columns of Ik are not necessarily the first k columns of G(D). However,

without loss of generality, we consider the following.

Proof:

Suppose

Page 59: Parity Check Matrices of Convolutional Codes Over Rings

49

G(D) = (Ik, A) =

1 0 . . . 0 a1(k+1) a1(k+2) . . . a1n

0 1 . . . 0 a2(k+1) a2(k+2) . . . a2n

......

. . ....

......

......

0 0 . . . 1 ak(k+1) ak(k+2) . . . akn

.

Consider the homogeneous system

G(D)

x1

x2

...

xk

xk+1

...

xn

= 0k×1 (4.1)

where (x1, x2, . . . , xk, xk+1, . . . , xn) is an arbitrary n-tuple in R(D)n and

0 is the k × 1 zero matrix.

Our aim is to find a basis for the solution set of (4.1) that will constitute

the parity check matrix H(D) of C. From (4.1), we have

x1 + xk+1a1(k+1) + xk+2a1(k+2) + . . .+ xna1n = 0

x2 + xk+1a2(k+1) + xk+2a2(k+2) + . . .+ xna2n = 0

...

xk + xk+1ak(k+1) + xk+2ak(k+2) + . . .+ xnakn = 0

. (4.2)

Page 60: Parity Check Matrices of Convolutional Codes Over Rings

50

By a change of variable, we let xk+1, xk+2, . . ., xn as s1, s2, . . . , sn−k, re-

spectively. Then solving for xi in (4.2) in terms of the other, we obtain

x1 = −s1a1(k+1) − s2a1(k+2) − . . .− sn−ka1n

x2 = −s1a2(k+1) − s2a2(k+2) − . . .− sn−ka2n

...

xk = −s1ak(k+1) − s2ak(k+2) − . . .− sn−kakn

.

So we can express the solution as

x1

x2

...

xk

xk+1

xk+2

...

xn

=

−s1a1(k+1) − s2a1(k+2) − . . .− sn−ka1n

−s1a2(k+1) − s2a2(k+2) − . . .− sn−ka2n

...

−s1ak(k+1) − s2ak(k+2) − . . .− sn−kakn

s1

s2

...

sn−k

Page 61: Parity Check Matrices of Convolutional Codes Over Rings

51

= s1

−a1(k+1)

−a2(k+1)

...

−ak(k+1)

1

0

...

0

+ s2

−a1(k+2)

−a2(k+2)

...

−ak(k+2)

0

1

...

0

+ . . .+ sn−k

−a1n

−a2n

...

−akn

0

0

...

1

. (4.3)

Since s1, s2, . . . , sn−k can be assigned with arbitrary values, we can con-

veniently assign the following value for si’s and obtain the corresponding

solution for each assignment. Thus, it will follow from (4.3) that:

when s1 = 1, s2 = 0, . . . , sn−k = 0, then a solution h1 is given by

Page 62: Parity Check Matrices of Convolutional Codes Over Rings

52

h1 =

−a1(k+1)

−a2(k+1)

...

−ak(k+1)

1

0

...

0

,

when s1 = 0, s2 = 1, . . . , sn−k = 0, then a solution h2 is given by

h2 =

−a1(k+2)

−a2(k+2)

...

−ak(k+2)

0

1

...

0

,

...

and when s1 = 0, s2 = 0, . . . , sn−k = 1, then a solution hn−k is given by

Page 63: Parity Check Matrices of Convolutional Codes Over Rings

53

hn−k =

−a1n

−a2n

...

−akn

0

0

...

1

.

The fact that

x1

x2

...

xk

xk+1

...

xn

= s1h1 + s2h2 + . . .+ sn−khn−k, where the si’s are

arbitrary elements in R(D), the set {h1, h2, . . . , hn−k} spans the solution

set of (4.1). Moreover, if

α1h1 + α2h2 + . . .+ αn−khn−k =

Page 64: Parity Check Matrices of Convolutional Codes Over Rings

54

α1

−a1(k+1)

−a2(k+1)

...

−ak(k+1)

1

0

...

0

+ α2

−a1(k+2)

−a2(k+2)

...

−ak(k+2)

0

1

...

0

+ . . .+ αn−k

−a1n

−a2n

...

−akn

0

0

...

1

= 0n×1 (4.4)

for some αi ∈ R(D), then from the last n − k rows of the solutions

h1, h2, . . . , hn−k, it can be easily seen in (4.4) that αn−k = . . . = α2 =

α1 = 0. Hence, h1, h2, . . . , hn−k are linearly independent. Thus, the set

{h1, h2, . . . , hn−k} is a basis of the solution set of (4.1).

We can now construct the matrixH(D) from the basis {h1, h2, . . . , hn−k}

given by

H(D) =

ht1

ht2

...

htn−k

=

−a1(k+1) −a2(k+1) . . . −ak(k+1) 1 0 . . . 0

−a1(k+2) −a2(k+2) . . . −ak(k+2) 0 1 . . . 0

......

......

......

. . ....

−a1n −a2n . . . −akn 0 0 . . . 1

Page 65: Parity Check Matrices of Convolutional Codes Over Rings

55

= (−At, In−k) .

By direct computation, we can verify that the rows of G(D) and H(D)

are orthogonal. That is,

G(D)H(D)t =

−a1(k+1) + a1(k+1) −a1(k+2) + a1(k+2) . . . −a1n + a1n

−a2(k+1) + a2(k+1) −a2(k+2) + a2(k+2) . . . −a2n + a2n

......

......

−ak(k+1) + ak(k+1) −ak(k+2) + ak(k+2) . . . −akn + akn

= 0k×(n−k).

Therefore, H(D) = (−At, In−k) is a parity check matrix for C.

Example 4.3 (McEliece, [15]). Let

G(D) =

1 0 11+D

D1+D

0 1 D1+D

11+D

be generator matrix over Z2(D). By Lemma 4.2, a parity check matrix H(D) is given

by

H(D) =

11+D

D1+D

1 0

D1+D

11+D

0 1

.

Page 66: Parity Check Matrices of Convolutional Codes Over Rings

56

Let G(D) = (I2, A), where A =

11+D

D1+D

D1+D

11+D

. Notice that A = −At. In addition,

A−1 = −At. Note that G(D) satisfies the conditions given in Theorem 5.1. In

this case, G(D) is an encoder of a rate-2/4 binary self-dual convolutional code (see

Chapter 5).

Example 4.4 (Wittenmark, [23]). Consider the generator matrix

G(D) =

1 0 1 + 3D +D2

0 1 1 +D +D2

over Z4(D). Note that Z4 satisfies DCC. By Lemma 4.2, a parity check matrix H(D)

is given by

H(D) =

(3 +D + 3D2 3 + 3D + 3D2 1

).

We call the construction of a parity check matrix specified by Lemma 4.2 as

CI. If a parity check matrix has entries which are all polynomial, we call such as a

polynomial parity check matrix or PPCM.

Page 67: Parity Check Matrices of Convolutional Codes Over Rings

57

4.2.2 A parity check matrix from a square polynomial matrixwith polynomial inverse (PMPI)

The first part of this section focuses on parity check matrices over F[D], while the

latter part is on parity check matrices over Zpr [D].

Consider an arbitrary k×n PGM G(D) for a convolutional code C over the field F.

The invariant factor decomposition of G(D), also known as the Smith normal form

of G(D), can be used to find a basic (hence non-catastrophic) and minimal-basic

generator matrix equivalent to G(D). The said decomposition can also be used to

find a polynomial right inverse for a basic generator matrix for C, and a parity check

matrix for C (see [15]).

Theorem 4.1 (Forney, [6]). Let R be a principal ideal domain (PID) and let G be a

k × n matrix over R. Then G has an invariant factor decomposition

G = AΓB ,

where A and B are k × k and n × n invertible matrices over R, respectively, that is

both det(A) and det(B) are units in R; and Γ is a k × n matrix given by

Γ =

(Pk 0k×(n−k)

)

where 0k×(n−k) is the zero matrix and Pk is a diagonal matrix whose diagonal entries

γi, i = 1, . . . , k, are called the invariant factors of G with respect to R. The

invariant factors are unique and are computable as follows: let λi be the greatest

Page 68: Parity Check Matrices of Convolutional Codes Over Rings

58

common divisor of the i×i subdeterminants (minors) of G, with λ0 = 1 by convention;

then γ = λi/λi+1. We have that γi divides γi+1 if γi+1 is not zero, for i = 1, . . . , k −

1. The matrices A and B, which are not unique in general, can be obtained by a

computational algorithm. Finally, if there is any decomposition G = AΓB such that

A and B are invertible matrices over R and Γ is a diagonal matrix with λi|λi+1 or

λi+1 = 0, then λi are the invariant factors of G with respect to R.

The key tool in finding such decomposition of a matrix is the “extended Smith

algorithm” that gives matrices A, Γ and B. The reader is referred to [15] for some

examples and for a detailed discussion of the said algorithm.

Theorem 4.1 states that every matrix over a PID R has a unique set of invariant

factors, except for the order, with respect to R. That is, Γ is unique with respect to

R. Suppose G(D) is a PGM of C over F and suppose G(D) = AΓB is the invariant

factor decomposition of G(D) with respect to F[D]. Via block matrix multiplication,

we can write the product AΓ as

A

(Pk 0k×(n−k)

)=

(APk A0k×(n−k)

)=

(T (D) 0k×(n−k)

),

where T (D) = APk ∈ F[D]k×k. Write

B =

G′(D)

L(D)

,

where G′(D) ∈ F[D]k×n, L(D) ∈ F[D](n−k)×n. Through block matrix multiplication,

Page 69: Parity Check Matrices of Convolutional Codes Over Rings

59

we now have

G(D) = AΓB =

(T (D) 0k×(n−k)

)G′(D)

L(D)

=

(T (D)G′(D) + 0k×n

)= T (D)G′(D).

Therefore, the first k rows of matrix B, given by G′(D), can be taken to constitute

an equivalent encoder to G(D) since T (D) is invertible over F(D). We compute for

the inverse of B and write it as

B−1 =

(P (D) K(D)

),

where P (D) ∈ F[D]n×k and K(D) ∈ F[D]n×(n−k). Again, via block matrix multipli-

cation, we have

BB−1 =

G′(D)

L(D)

(P (D) K(D)

)

=

G′(D)P (D) G′(D)K(D)

L(D)P (D) L(D)K(D)

=

Ik 0k×(n−k)

0(n−k)×k In−k

.

Thus, G′(D) is basic since it has a polynomial right inverse given by P (D). Further-

more, the last (n− k) columns of B−1, given by K(D), yields to a (n− k)× n parity

check matrix of C, given by K(D)t. Note that matrices A and B are unimodular

matrices over F[D].

Example 4.5 (McEliece, [15]). Consider matrix G(D) over Z2(D) given by

G(D) =

1 D2 +D + 1 D2 + 1 D + 1

D D2 +D + 1 D2 1

.

Page 70: Parity Check Matrices of Convolutional Codes Over Rings

60

The invariant factor decomposition of G(D), with respect to Z2[D], is given by

G(D) = AΓB

where

A =

1 0

D 1

,

Γ =

1 0 0 0

0 D2 +D + 1 0 0

,

and

B =

1 D2 +D + 1 D2 + 1 D + 1

0 D + 1 D 1

0 0 1 0

0 1 0 0

.

We can take the first 2 rows of B to be an equivalent PGM to G(D), say G′(D),

given by

G′(D) =

1 D2 +D + 1 D2 + 1 D + 1

0 D + 1 D 1

,

Page 71: Parity Check Matrices of Convolutional Codes Over Rings

61

which appears in [15] as G3 where it is basic and non-catastrophic.

To find for T (D) such that G(D) = T (D)G′(D), get the product

AΓ =

1 0 0 0

D D2 +D + 1 0 0

and take

T (D) =

1 0

D D2 +D + 1

.

B−1 is given by

B−1 =

1 D + 1 D + 1 D

0 0 0 1

0 0 1 0

0 1 D D + 1

,

taking the last 2 columns of B−1 as H(D)t, we have

H(D) =

D 1 0 D + 1

D + 1 0 1 D

as a parity check matrix for C. One can immediately verify that G(D)H(D)t =

Page 72: Parity Check Matrices of Convolutional Codes Over Rings

62

0k×(n−k) = G′(D)H(D)t. Moreover, the first 2 columns of B−1 is a polynomial right

inverse of G′(D).

Example 4.6. Consider the minimal-basic generator matrix G(D) given by

G(D) =

1 0 0 1 1 0 0 1

1 1 0 0 0 0 1 1

1 0 1 0 0 1 0 1

D 0 0 1 0 1 1 D + 1

of a convolutional code C over Z2. Its invariant factor decomposition is given by

G(D) =

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0

0 0 1 0 0 0 0 0

0 0 0 1 0 0 0 0

1 0 0 1 1 0 0 1

1 1 0 0 0 0 1 1

1 0 1 0 0 1 0 1

D 0 0 1 0 1 1 D + 1

1 0 0 0 0 0 0 0

0 0 0 0 0 1 0 0

0 0 0 0 0 0 1 0

0 0 0 0 0 0 0 1

.

(4.5)

Notice that the first four rows (from top) of the rightmost matrix in 4.5 is equiv-

alent, in fact equal, to G(D). Similarly with the previous examples, a parity check

matrix H(D) is taken to be the transpose of the last four columns of the inverse of

the rightmost matrix in 4.5 which is given by

Page 73: Parity Check Matrices of Convolutional Codes Over Rings

63

H(D) =

1 1 1 D D + 1 0 0 0

0 0 1 1 1 1 0 0

0 1 0 1 1 0 1 0

0 1 1 D + 1 D 0 0 1

.

The discussion above is a good motivation to consider unimodular matrices on

getting a parity check matrix from a given encoder. We saw in the field case that

every polynomial encoder G(D) has invariant factor decomposition that is given by

AΓB, with respect to F[D]. So, we can always obtain a parity check matrix from

B−1. However, in the ring case, R[D] is not a PID in general. That is, the invariant

factor decomposition of a PGM G(D) with respect to R[D] is not possible. One

main reason is due to the existence of zero divisors in R[D]. That is, R[D] is not

an integral domain. Hence, R[D] cannot be a Euclidean domain. This makes the

algorithm for invariant factor decomposition impossible to work over R[D] (see [15]).

Nevertheless, Fagnani and Zampieri [5] noted that there is the so called “adapted

form” (which we will not consider here) of a PGM G(D) over Zpr [D,D−1] which can

be considered as the counter part of the invariant factor decomposition with respect

to F[D]. Moreover, they used the “Smith normal form” of a generator matrix over

Zpr(D) (given the fact that Zpr(D) is a principal ideal ring) to analyze the connections

between the generator matrix and the generated code.

In this thesis, we introduce an alternative method that uses unimodular matrices

or in general, square polynomial matrix with polynomial inverse (PMPI) for

Page 74: Parity Check Matrices of Convolutional Codes Over Rings

64

deriving a parity check matrix from a given basic generator matrix. Hence, we offer

Lemma 4.3, Corollary 4.1, and Theorem 4.2.

Lemma 4.3. If G(D) is a basic generator matrix over Zpr [D], then there exists a

set of minors of G(D), say M, such that the elements of M are pairwise coprime in

Zpr [D].

Proof:

Consider the minors of G(D), say δi, i = 1, 2, . . . , N =

(nk

). Since the

map φ given in (2.1) is a ring homomorphism, it follows that the minors

of G(D)mod2 are given by φ(δi), i = 1, 2, . . . , N . Since G(D) is basic,

G(D) mod p is also basic [23]. So, the gcd of φ(δi) ∈ Zp[D] is 1, for all

i ∈ {1, 2, . . . , N} [15]. Now, consider the set M of all relatively prime

φ(δi). Let the elements of M be indexed by 1 < i1 < i2 < . . . < is ≤ N .

Recall that two polynomials in Zp[D] are coprime if and only if they

have no common divisor of degree greater than or equal to 1. That is,

two relatively prime polynomials in Zp[D] are coprime in Zp[D]. Thus,

M = {φ(δi1), φ(δi2), . . . , φ(δis)} is a set of pairwise coprime polynomials

in Zp[D]. Since two non-invertible polynomials are coprime in Zpr [D] if

and only if they are coprime in Zp[D], hence

M = {δi1 , δi2 , . . . , δis}

is a set of pairwise coprime polynomials in Zpr [D].

Page 75: Parity Check Matrices of Convolutional Codes Over Rings

65

The following corollary is immediate from Lemma 4.3.

Corollary 4.1. Any non-empty subset S ⊆M (cardinality of S ≥ 2) spans 1.

Now, we consider the main theorem of this section. This theorem is a generaliza-

tion of the result in the field case by McEliece [15].

Theorem 4.2. A k × n PGM G(D) over Zpr [D] is basic if and only if G(D) is a

submatrix of an n× n PMPI matrix B over Zpr [D].

Proof:

Consider a n × n PMPI matrix B′. Since det(B′) is a unit in Zpr [D], it

follows that the rows of B are linearly independent. Hence, we can take

any k rows of B′ to be the PGM G(D). For simplicity, we rearrange the

rows of B′ such that the first k rows form G(D). Suppose

B = AB′

where A is the k × k elementary matrix that corresponds to such rear-

rangements of rows. Let

B =

G(D)

L(D)

and

B−1 =

(P (D) K(D)

)

Page 76: Parity Check Matrices of Convolutional Codes Over Rings

66

where G(D) ∈ Zpr [D]k×n, L(D) ∈ Zpr [D](n−k)×n, P (D) ∈ Zpr [D]n×k and

K(D) ∈ Zpr [D]n×(n−k). Via block matrix multiplication,

BB−1 =

G(D)P (D) G(D)KD)

L(D)P (D) L(D)K(D)

=

Ik 0k×(n−k)

0(n−k)×k In−k

.

It is clear that P (D) is a polynomial right inverse of G(D), hence G(D)

is basic.

Now, suppose G(D) is a basic. We want to show that it is possible to

complete G(D) to a n × n PMPI matrix B. Specifically, by letting B =G(D)

L(D)

, we want to show that it is possible to find a (n−k)×n matrix

L(D) such that det(B) is a unit in Zpr [D].

Case 1. G(D) is a basic (n− 1)× n PGM (i.e. n− k = 1).

Let

B =

G(D)

L(D)

=

g11 g12 · · · g1n

g21 g22 · · · g2n

...... · · · ...

gk1 gk2 · · · gkn

lk+1,1 lk+1,2 · · · lk+1,n

. (4.6)

Page 77: Parity Check Matrices of Convolutional Codes Over Rings

67

Expand the determinant of B with respect to its n-th row:

det(B) =n∑j=1

lk+1,j(−1)k+1+j det(G(j)k ) . (4.7)

where det(B) is set as a unit in Zpr [D]; G(j)k is a (n− 1)× (n− 1) subma-

trix of B obtained by removing the n-th row and j-th column of B and

det(G(j)k ) is a minor of G(D). Let

M′ ={φ(

det(G(1)k )), φ(

det(G(2)k )), . . . , φ

(det(G

(n)k ))}

,

where φ is given in (2.1). Consider setM⊆M′ that contains all relatively

prime elements ofM′. Since G(D) is basic, following the proof of Lemma

4.3, there is a non-empty set M of polynomials in Zpr [D], corresponding

to M such that the elements of M are pairwise coprime in Zpr [D]. Let

M ={φ(

det(G(s1)k )

), φ(

det(G(s2)k )

), . . . , φ

(det(G

(sm′ )k )

)},

for some 1 ≤ s1 < s2 < . . . < sm′ ≤ n, where m′ is the cardinality of M.

Thus,

M ={

det(G(s1)k ), det(G

(s2)k ), . . . , det(G

(sm′ )k )

}.

By Corollary 4.1,M spans 1. That is, there exist cs1(D), cs2(D), . . . , csm′ (D) ∈

Zpr [D] such that

m′∑h=1

csh(D) det(G(sh)k ) = 1 . (4.8)

We arrange the minors of G(D) and write it in this manner:

det(G(s1)k ), det(G

(s2)k ), . . . , det(G

(sm′ )k ), det(G

(sm′+1)

k ), . . . , det(G(sn)k )

Page 78: Parity Check Matrices of Convolutional Codes Over Rings

68

where 1 ≤ sm′+1 < sm′+2 < . . . < sn ≤ n. We can also think of the

arrangement s1, s2, . . . , sn as corresponding to a permutation of 1, 2, . . . , n.

Thus, we can rewrite (4.7) as

det(B) =m′∑h=1

lk+1,sh(−1)k+1+sh det(G(sh)k )

+n∑

h=m′+1

lk+1,sh(−1)k+1+sh det(G(sh)k ) (4.9)

From (4.9),m′∑h=1

lk+1,sh(−1)k+1+sh det(G(sh)k )

= det(B)−n∑

h=m′+1

lk+1,sh(−1)k+1+sh det(G(sh)k ) . (4.10)

We can give the corresponding polynomials for lk+1,sh , h = m′ + 1, . . . , n,

of our own choice. Then, simplify the right-hand side of (4.10) to a single

polynomial in Zpr [D], say r(D). So, we have

m′∑h=1

lk+1,sh(−1)k+1+sh det(G(sh)k ) = r(D) . (4.11)

Multiply both sides of (4.8) by r(D):

m′∑h=1

r(D)csh(D) det(G(sh)k ) = r(D) . (4.12)

Combine (4.11) and (4.12):

m′∑h=1

lk+1,sh(−1)k+1+sh det(G(sh)k ) =

m′∑h=1

r(D)csh(D) det(G(sh)k ) . (4.13)

Page 79: Parity Check Matrices of Convolutional Codes Over Rings

69

Now, we can supply the corresponding polynomials for the remaining en-

tries lk+1,sh , for h = 1, . . . ,m′, satisfying the following:

lk+1,sh(−1)k+1+sh = r(D)csh(D)

or

lk+1,sh =[(−1)k+1+sh

]−1r(D)csh(D) .

Case 2. G(D) is a basic k × n PGM, k 6= n− 1.

We begin this construction through Laplace’s expansion of det(B) (see

Theorem 2.3) with respect to the first k rows of B, given by

det(B) =N∑i=1

(−1)Ki det(B(i)k ) det(B

(i)n−k) , (4.14)

where it is clear that det(B(i)k ) is a minor of G(D) corresponding to column

indices 1 ≤ j1 < j2 < . . . < jk ≤ n labeled as i. The value of N is given

by N =

(nk

)and Ki = 1 + 2 + · · ·+ k + j1 + j2 + · · ·+ jk. To be guided

properly along the construction, we let G(i)k = B

(i)k and L

(i)n−k = B

(i)n−k so

that we can easily identify that G(i)k and L

(i)n−k are k×k and (n−k)×(n−k)

submatrices of G(D) and L(D), respectively. Rewrite (4.14) to

det(B) =N∑i=1

(−1)Ki det(L(i)n−k) det(G

(i)k ) . (4.15)

We set the value of det(B) to be a unit in Zpr [D]. We can immediately

notice that this construction focuses on supplying the appropriate poly-

nomial entries for L(D) such that (4.14) or (4.15) is being satisfied. For

some notational requirements, let

Page 80: Parity Check Matrices of Convolutional Codes Over Rings

70

B =

g11 g12 · · · g1n

g21 g22 · · · g2n

...... · · · ...

gk1 gk2 · · · gkn

lk+1,1 lk+1,2 · · · lk+1,n

lk+2,1 lk+2,2 · · · lk+2,n

...... · · · ...

ln1 ln2 · · · lnn

and

L(i)n−k =

l(i)11 l

(i)12 · · · l

(i)1r

l(i)21 l

(i)22 · · · l

(i)2r

......

. . ....

l(i)r1 l

(i)r2 · · · l

(i)rr

,

r = n− k.

Rearrange terms in (4.15) such that the first Nn terms contain the factors

det(L(i)n−k) wherein the submatrix L

(i)n−k contains the n-th column of L(D).

Consequently, consider an arrangement of indices 1, 2, . . . , N given by

i1, i2, . . . , iNn , iNn+1, . . . , iN

where i1 < i2 < . . . < iNn and iNn+1 < . . . < iN . Thus,

det(B) =

iNn∑i=i1

(−1)Ki det(L(i)n−k) det(G

(i)k )+

iN∑i=i(Nn+1)

(−1)Ki det(L(i)n−k) det(G

(i)k )

Page 81: Parity Check Matrices of Convolutional Codes Over Rings

71

or

iNn∑i=i1

(−1)Ki det(L(i)n−k) det(G

(i)k ) = det(B)−

iN∑i=i(Nn+1)

(−1)Ki det(L(i)n−k) det(G

(i)k ).

(4.16)

Using Definition 2.5,

det(L(i)n−k) =

∑σ∈Sr

(sqnσ)l(i)1σ(1)l

(i)2σ(2) · · · l

(i)rσ(r) . (4.17)

Combining (4.17) to the left-hand side of (4.16), we have

iNn∑i=i1

(−1)Ki∑σ∈Sr

(sqnσ)l(i)1σ(1)l

(i)2σ(2) · · · l

(i)rσ(r) det(G

(i)k ) =

det(B)−iN∑

i=i(Nn+1)

(−1)Ki det(L(i)n−k) det(G

(i)k ) . (4.18)

Let

p(D) = det(B)−iN∑

i=i(Nn+1)

(−1)Ki det(L(i)n−k) det(G

(i)k ) .

We focus on the left-hand side of (4.18). Expand it with respect to i:

iNn∑i=i1

(−1)Ki∑σ∈Sr

(sqnσ)l(i)1σ(1)l

(i)2σ(2) · · · l

(i)rσ(r) det(G

(i)k )

= (−1)Ki1∑σ∈Sr

(sqnσ)l(i1)1σ(1)l

(i1)2σ(2) · · · l

(i1)rσ(r) det(G

(i1)k )

+(−1)Ki2∑σ∈Sr

(sqnσ)l(i2)1σ(1)l

(i2)2σ(2) · · · l

(i2)rσ(r) det(G

(i2)k ) (4.19)

...

+(−1)KiNn∑σ∈Sr

(sqnσ)l(iNn )

1σ(1) l(iNn )

2σ(2) · · · l(iNn )

rσ(r) det(G(iNn )k ) .

Since each submatrix L(i)n−k on the left-hand side of (4.18) contains the

n-th row of L(D), we can rewrite each det(L(i)n−k), i = i1, i2, . . . , iNn , as

Page 82: Parity Check Matrices of Convolutional Codes Over Rings

72

det(L(i)n−k) =

∑σ∈Srσ 6=σ

(sqnσ)l(i)1σ(1)l

(i)2σ(2) · · · l

(i)rσ(r)

+∑σ∈Srσ=σ

(sqnσ)l(i)1σ(1)l

(i)2σ(2) · · · l

(i)r−1,σ(r−1)lnn , (4.20)

where the permutations σ correspond to l(i)rσ(r) = lnn. Incorporating (4.20)

in each term in (4.19) and distributing (−1)Ki and det(G(i)k ), we have

iNn∑i=i1

(−1)Ki∑σ∈Sr

(sqnσ)l(i)1σ(1)l

(i)2σ(2) · · · l

(i)rσ(r) det(G

(i)k )

= (−1)Ki1∑σ∈Srσ 6=σ

(sqnσ)l(i1)1σ(i1)l

(i1)2σ(2) · · · l

(i1)rσ(r) det(G

(i1)k )

+(−1)Ki1∑σ∈Srσ=σ

(sqnσ)l(i1)1σ(1)l

(i1)2σ(2) · · · l

(i1)r−1,σ(r−1)lnn det(G

(i1)k )

+(−1)Ki2∑σ∈Srσ 6=σ

(sqnσ)l(i2)1σ(1)l

(i2)2σ(2) · · · l

(i2)rσ(r) det(G

(i2)k )

+(−1)Ki2∑σ∈Srσ=σ

(sqnσ)l(i2)1σ(1)l

(i2)2σ(2) · · · l

(i2)r−1,σ(r−1)lnn det(G

(i2)k )

... (4.21)

+(−1)KiNn∑σ∈Srσ 6=σ

(sqnσ)l(iNn )

1σ(1) l(iNn )

2σ(2) · · · l(iNn )

rσ(r) det(G(iNn )k )

+(−1)KiNn∑σ∈Srσ=σ

(sqnσ)l(iNn )

1σ(1) l(iNn )

2σ(2) · · · l(iNn )

r−1,σ(r−1)lnn det(G(iNn )k ) .

Substituting (4.21) to the left-hand side of (4.18) and placing the terms

without the factor lnn to the right-hand side of (4.18) will result to

lnn(ai1(D) + ai2(D) + · · ·+ aiNn (D)

)= p(D)−

(bi1(D) + bi2(D) + · · ·+ biNn (D)

)(4.22)

where

Page 83: Parity Check Matrices of Convolutional Codes Over Rings

73

ai1(D) = (−1)Ki1∑σ∈Srσ=σ

(sqnσ)l(i1)1σ(1)l

(i1)2σ(2) · · · l

(i1)r−1,σ(r−1) det(G

(i1)k )

ai2(D) = (−1)Ki2∑σ∈Srσ=σ

(sqnσ)l(i2)1σ(1)l

(i2)2σ(2) · · · l

(i2)r−1,σ(r−1) det(G

(i2)k )

...

aiNn (D) = (−1)KiNn∑σ∈Srσ=σ

(sqnσ)l(iNn )

1σ(1) l(iNn )

2σ(2) · · · l(iNn )

r−1,σ(r−1) det(G(iNn )k )

bi1(D) = (−1)Ki1∑σ∈Srσ 6=σ

(sqnσ)l(i1)1σ(i1)l

(i1)2σ(2) · · · l

(i1)rσ(r) det(G

(i1)k )

bi2(D) = (−1)Ki2∑σ∈Srσ 6=σ

(sqnσ)l(i2)1σ(1)l

(i2)2σ(2) · · · l

(i2)rσ(r) det(G

(i2)k )

...

biNn (D) = (−1)KiNn∑σ∈Srσ 6=σ

(sqnσ)l(iNn )

1σ(1) l(iNn )

2σ(2) · · · l(iNn )

rσ(r) det(G(iNn )k ) .

Letting the right-hand side of (4.22) to be q(D) and a(D) = ai1(D) +

ai2(D) + · · ·+ aiNn (D) we have

lnna(D) = q(D) . (4.23)

It is clear that lnn is a polynomial in Zpr [D] if a(D) is a unit in Zpr [D].

Note that we can express a(D) as

a(D) =Nn∑h=1

fih(D) det(G(ih)k ) (4.24)

where

fih(D) = (−1)Kih∑σ∈Srσ=σ

(sqnσ)l(ih)1σ(1)l

(ih)2σ(2) · · · l

(ih)r−1,σ(r−1), h = 1, 2, . . . , Nn.

Page 84: Parity Check Matrices of Convolutional Codes Over Rings

74

Let

M′ ={φ(

det(G(i1)k )), φ(

det(G(i2)k )), . . . , φ

(det(G

(iNn )k )

)}.

Consider set M⊆M′ that contains all relatively prime elements of M′.

Again, following the proof of Lemma 4.3, there is a non-empty set M, of

polynomials in Zpr [D], corresponding to M such that the elements ofM

are pairwise coprime in Zpr [D]. Let

M ={φ(

det(G(s1)k )

), φ(

det(G(s2)k )

), . . . , φ

(det(G

(sm′ )k )

)},

i1 ≤ s1 < s2 < . . . < sm′ ≤ iNn , where m′ is the cardinality of M. Thus,

M ={

det(G(s1)k ), det(G

(s2)k ), . . . , det(G

(sm′ )k )

}.

By Corollary 4.1,M spans 1. That is, there exist cs1(D), cs2(D), . . . , csm′ (D) ∈

Zpr [D] such that

m′∑h=1

csh(D) det(G(sh)k ) = 1 . (4.25)

Multiply both sides of (4.25) by a(D):

m′∑h=1

a(D)csh(D) det(G(sh)k ) = a(D) . (4.26)

From (4.24) and (4.26):

m′∑h=1

a(D)csh(D) det(G(sh)k ) =

Nn∑h=1

fih(D) det(G(ih)k ) . (4.27)

Page 85: Parity Check Matrices of Convolutional Codes Over Rings

75

Let a(D) be a unit in Zpr [D]. In (4.27), if m′ = Nn (i.e. sh = ih for

h = 1, 2, . . . , Nn), then the value of fih(D) is subject to:

fih(D) = a(D)csi(D)

or

(−1)Kih∑σ∈Srσ=σ

(sqnσ)l(ih)1σ(1)l

(ih)2σ(2) · · · l

(ih)r−1,σ(r−1) = a(D)csi(D) .

Thus, supplying the corresponding polynomials for l(ih)1σ(1), l

(ih)2σ(2), . . . , l

(ih)r−1,σ(r−1)

is restricted to the following:

∑σ∈Srσ=σ

(sqnσ)l(ih)1σ(1)l

(ih)2σ(2) · · · l

(ih)r−1,σ(r−1) =

[(−1)Kih

]−1a(D)csh(D) , (4.28)

for h = 1, 2, . . . , Nn. If m′ < Nn, we rearrange the terms in the left-hand

side of (4.27) such that its first m′ terms contain the factor det(G(ih)k ) =

det(Gshk ). By a change of indices we can rewrite (4.27) as

m′∑h=1

a(D)csh(D) det(G(sh)k ) =

m′∑h=1

fsh(D) det(G(sh)k )+

Nn∑h=m′+1

fsh(D) det(G(sh)k ).

(4.29)

Similar with (4.28), supplying the corresponding polynomials for l(sh)1σ(1), l

(sh)2σ(2),

. . . , l(sh)r−1,σ(r−1) is restricted to the following:

∑σ∈Srσ=σ

(sqnσ)l(sh)1σ(1)l

(sh)2σ(2) · · · l

(sh)r−1,σ(r−1) =

[(−1)Ksh

]−1a(D)csh(D) ,

Page 86: Parity Check Matrices of Convolutional Codes Over Rings

76

for h = 1, 2, . . . ,m′ and

∑σ∈Srσ=σ

(sqnσ)l(sh)1σ(1)l

(sh)2σ(2) · · · l

(sh)r−1,σ(r−1) = 0 ,

for h = m′ + 1, . . . , Nm. We partially constructed B after giving the cor-

responding polynomials for l(ih)1σ(1), l

(ih)2σ(2), . . . , l

(ih)r−1,σ(r−1) such that (4.27) or

(4.29) is satisfied. We totally complete the construction of B by supply-

ing the polynomials for the other entries of L(D) then solving for lnn. By

doing so, we can simplify q(D), in (4.23), to a single polynomial and it

immediately follows that lnn = a(D)−1q(D) ∈ Zpr [D].

Thus, considering cases 1 and 2, we completed G(D) into a n×n PMPI

matrix B =

G(D)

L(D)

.

Remarkably, we can complete a k×n basic encoder G(D) over Zpr [D] into a n×n

PMPI matrix B over Zpr [D], given by B =

G(D)

L(D)

. Moreover, a corresponding

PPCM H(D) can be obtained from the inverse of the matrix B given by B−1 =(P (D) H(D)t

). We call this construction as CII . We illustrate this in Example

4.7 and in Example 4.8.

Example 4.7. Consider the 2× 3 basic generator matrix G(D) given by

G(D) =

D + 1 3D 1

D2 D2 +D + 1 1

.

Page 87: Parity Check Matrices of Convolutional Codes Over Rings

77

Let

B =

D + 1 3D 1

D2 D2 +D + 1 1

l31 l32 l33

.

Expanding the determinant of B along its third row, we have

det(B) = (−1)3+1l31 det(G(1)2 ) + (−1)3+2l32 det(G

(2)2 ) + (−1)3+3l33 det(G

(3)2 )

= l31 det(G(1)2 )− l32 det(G

(2)2 ) + l33 det(G

(3)2 ) , (4.30)

where, we let Gj2 to be 2×2 submatrix of G(D) obtained by deleting its j-th column.

Thus,det(G

(1)2 ) = 3D2 + 2D + 3 ,

det(G(2)2 ) = 3D2 +D + 1 ,

det(G(3)2 ) = 2D3 + 2D2 + 2D + 1 .

Take det(B) = 3 and let

M ={φ(

det(G(1)2 )), φ(

det(G(2)2 )), φ(

det(G(3)2 )),}

={D2 + 1, D2 +D + 1, 1

}.

Since the elements ofM are relatively prime in Z2[D], thus they are pairwise coprime

in Z2[D]. Hence,

M ={

3D2 + 2D + 3, 3D2 +D + 1, 2D3 + 2D2 + 2D + 1}

is a set of pairwise coprime polynomials in Z4[D]. Particularly, we have

(D + 1)(3D2 + 2D + 3) + 3D(3D2 +D + 1) + 2(2D3 + 2D2 + 2D + 1) = 1 . (4.31)

Multiply both sides of (4.31) by det(B) = 3:

(3D + 3)(3D2 + 2D + 3) + (D)(3D2 +D + 1) + 2(3D2 + 2D + 3) = 3 . (4.32)

Page 88: Parity Check Matrices of Convolutional Codes Over Rings

78

From (4.30), (4.32), and since det(B) = 3, it follows that

(3D + 3)(3D2 + 2D + 3) + (D)(3D2 +D + 1) + 2(3D2 + 2D + 3)

= l31 det(G(1)2 )− l32 det(G

(2)2 ) + l33 det(G

(3)2 ) . (4.33)

Thus, we can take

l31 = 3D + 3, l32 = −D = 3D, l33 = 2 .

Therefore,

B =

D + 1 3D 1

D2 D2 +D + 1 1

3D + 3 3D 2

.

Moreover, the inverse of B is given by

B−1 =

2D2 +D + 2 3D D2 + 2D + 1

2D2 +D + 1 D + 1 3D2 +D + 1

2D2 + 2D + 3 2D2 + 2D 2D3 + 2D2 + 2D + 3

.

A parity check matrix H(D) obtained from the last column of B is given by

H(D) =

(D2 + 2D + 1 3D2 +D + 1 2D3 + 2D2 + 2D + 3

).

Page 89: Parity Check Matrices of Convolutional Codes Over Rings

79

Example 4.8. Consider the 2× 4 basic generator matrix G(D) given by

G(D) =

3 D2 +D + 1 D2 + 2D + 1 D + 1

0 D + 1 1 D

.

Let

B =

G(D)

L(D)

=

3 D2 +D + 1 D2 + 2D + 1 D + 1

0 D + 1 D 1

l31 l32 l33 l34

l41 l42 l43 l44

.

We expand det(B) via Laplace’s expansion with respect to the first two rows of

B. That is,

det(B) =N∑i=1

(−1)Ki det(G(i)2 ) det(L

(i)2 ) . (4.34)

Note that we are going to take two columns out of four and there are N = 6 ways to

do that. For convenience, we label each column indices we chose, by the following:

1: 1,2; 3: 1,4; 5: 2,4;2: 1,3; 4: 2,3; 6: 3,4.

Thus, we have

Page 90: Parity Check Matrices of Convolutional Codes Over Rings

80

G(1)2 =

3 D2 +D + 1

0 D + 1

, L(1)2 =

l33 l34

l43 l44

,

G(2)2 =

3 D2 + 2D + 1

0 1

, L(2)2 =

l32 l34

l42 l44

,

G(3)2 =

3 D + 1

0 D

, L(3)2 =

l32 l33

l42 l43

,

G(4)2 =

D2 +D + 1 D2 + 2D + 1

D + 1 1

, L(4)2 =

l31 l34

l41 l44

,

G(5)2 =

D2 +D + 1 D + 1

D + 1 D

, L(5)2 =

l31 l33

l41 l43

,

G(6)2 =

D2 + 2D + 1 D + 1

1 D

, L(6)2 =

l31 l32

l41 l42

.

For simplicity, we let δi = det(G(i)2 ). Therefore,

δ1 = 3D+3, δ2 = 3, δ3 = 3D, δ4 = 3D3+2D2+2D, δ5 = D3+3D+3, and δ6 = D3+2D2+3.

We expand (4.34) and rewrite it as

δ1 det(L(1)2 )− δ2 det(L

(2)2 ) + δ4 det(L

(4)2 )

Page 91: Parity Check Matrices of Convolutional Codes Over Rings

81

= det(B)− δ3 det(L(3)2 ) + δ5 det(L

(5)2 )− δ6 det(L

(6)2 ) (4.35)

where the submatrix L(i)2 in the left-hand side of (4.35) contains the 4th column of

L(D). Expand each det(L(i)2 ) in (4.35) using Definition 2.5. So,

δ1(l33l44 − l43l34)− δ2(l32l44 − l43l34) + δ4(l31l44 − l41l34) = p(D) (4.36)

where

p(D) = det(B)− δ3(l32l43 − l42l33) + δ5(l31l43 − l41l33)− δ6(l31l42 − l41l32) .

Let det(B) = 1. We factor out l44 in the left-hand side of (4.36) and rewrite it to

l44(δ1l33 − δ2l32 + δ4l31) = p(D) + δ1(l43l34)− δ2(l42l34) + δ4(l41l34)) . (4.37)

Let the right-hand side of (4.37) to be q(D) and a(D) = δ1l33 − δ2l32 + δ4l31. Thus,

l44a(D) = q(D) . (4.38)

Let a(D) = 1, so

1 = δ1l33 − δ2l32 + δ4l31 . (4.39)

By Lemma 4.3, there is a set of pairwise coprime minors of G(D), say M. In this

case, we can take

M = {δ1, δ2, δ4} .

By Corollary 4.1, M spans 1. For instance, we have

3δ1 +Dδ2 + 0δ4 = 1 . (4.40)

Page 92: Parity Check Matrices of Convolutional Codes Over Rings

82

From (4.39) and (4.40), we can take

l33 = 3, l32 = −D = 3D, l31 = 0 .

For simplicity, let

l34 = l41 = l42 = l43 = 0 .

Hence, l44 = q(D) = 1. Therefore,

B =

3 D2 +D + 1 D2 + 2D + 1 D + 1

0 D + 1 D 1

0 3D 3 0

0 0 0 1

.

Then, from the last two columns of the inverse of B, given by

B−1 =

3 3D3 + 3D2 + 1 3D3 + 2D2 + 2D D4 +D3 + 1

0 1 1 3D

0 3D 3D + 3 D2

0 0 0 1

,

we can obtain a parity check matrix, given by

Page 93: Parity Check Matrices of Convolutional Codes Over Rings

83

H(D) =

3D3 + 2D2 + 2D 1 3D + 3 0

D4 +D3 + 1 3D D2 1

.

4.2.3 A parity check matrix from the subdeterminants of agenerator matrix

It is known that, in the field case, if G(D) is a (n − 1) × n basic generator matrix

of a convolutional code C and if the (n − 1) × (n − 1) subdeterminants of G(D) are

∆1,∆2, . . . ,∆n, where ∆j is the determinant of the submatrix of G(D) obtained by

removing the j-th column of G(D), then the 1× n matrix

H(D) =

((−)∆1 (+)∆2 · · · (−1)n∆n

)

is a minimal-basic parity check matrix of C (see [15]).

We extend this idea to convolutional codes over rings by giving the following

theorem. Henceforth, we call this type of construction as CIII.

Theorem 4.3. If G(D) is an (n − 1) × n is a generator matrix of a convolutional

code C over R and if the (n− 1)× (n− 1) subdeterminants of G(D) are det(G1(D)),

det(G2(D)), . . . , det(Gn(D)), where Gj(D) is a submatrix of G(D) obtained by re-

moving the j-th column of G(D), then the 1× n matrix

H(D) =

(δ1 δ2 · · · δn

)

Page 94: Parity Check Matrices of Convolutional Codes Over Rings

84

is a parity check matrix of C where δj = (−1)n+j det(Gj(D)), j = 1, 2, . . . , n. Further,

if C is over Zpr and G(D) is basic, then H(D) is basic.

Proof:

Let

G(D) =

g11 g12 · · · g1n

g21 g22 · · · g2n

......

......

gn−1,1 gn−1,2 · · · gn−1,n

=

g1(D)

g2(D)

...

gn−1(D)

.

Define Gi(D) to be an n× n matrix given by

Gi(D) =

G(D)

gi(D)

=

g1(D)

g2(D)

...

gn−1(D)

gi(D)

.

It is clear that det(Gi(D)) = 0 since it has two rows which are identical

or not linearly independent.

In getting the determinant of Gi(D) via cofactor expansion along its n-th

row, we have

det(Gi(D)) = 0 = gi1An1 + gi2An2 + · · ·+ ginAnn

Page 95: Parity Check Matrices of Convolutional Codes Over Rings

85

where the cofactor Anj is given by Anj = (−1)n+j det(Mnj), Mnj is a

submatrix of Gi(D) obtained by deleting the n-th row and j-th column

of Gi(D). Clearly, Anj = δj, j = 1, 2, . . . , n. For i = 1, 2, . . . , n− 1,

g11δ1 + g12δ2 + · · ·+ g1nδn = 0 = det(G1(D)) ;

g21δ1 + g22δ2 + · · ·+ g2nδn = 0 = det(G2(D)) ;

...

gn−1,1δ1 + gn−1,2δ2 + · · ·+ gn−1,nδn = 0 = det(Gn−1(D)) .

In matrix form,

g11 g12 · · · g1n

g21 g22 · · · g2n

......

......

gn−1,1 gn−1,2 · · · gn−1,n

δ1

δ2

...

δn

= G(D)H(D)t = 0(n−1)×1 .

Therefore, H(D) is a parity check matrix of C. Now, suppose G(D) is a

basic encoder over Zpr [D]. By Lemma 4.3 and Corollary 4.1, there exists

a set of minors of G(D) that span 1. Since the entries of H(D) are exactly

the minors of G(D), except for a factor (±1), it follows immediately that

H(D) is basic.

We end this section by illustrating Theorem 4.3.

Page 96: Parity Check Matrices of Convolutional Codes Over Rings

86

Example 4.9 (Schneider, [19]). Consider a 2× 3 basic encoder over Z2[D] given by

G(D) =

1 +D 1 D

1 1 1

.

Using CIII,

H(D) =

(1 +D 1 D

)is a parity check matrix of C. Take note that the negative signs do not matter since

−1 = 1. One can immediately check that H(D) is basic.

Example 4.10 (Wittenmark, [23]). From Example 4.4,

H(D) =

(3 +D + 3D2 3 + 3D + 3D2 1

)

can be also derived from the 2× 3 basic encoder over Z4[D] given by

G(D) =

1 0 1 + 3D +D2

0 1 1 +D +D2

using CIII. Consider the following:

δ1 = (−1)3+1((0)(1 +D +D2)− (1)(1 + 3D +D2)) = 3 +D + 3D2 ;

δ2 = (−1)3+2((1)(1 +D +D2)− (0)(1 + 3D +D2)) = 3 + 3D + 3D2 ;

and

δ3 = (−1)3+3((1)(1)− (0)(0)) = 1 .

Page 97: Parity Check Matrices of Convolutional Codes Over Rings

87

Thus,

H(D) =

(δ1 δ2 δ3

)=

(3 +D + 3D2 3 + 3D + 3D2 1

).

It is easy to check that H(D) is basic.

4.3 Summary

In this chapter, parity check matrix has been defined. The three methods of deriving

a parity check matrix from an encoder were given. In particular, CI is used to obtain

a parity check matrix from a systematic encoder, CII is on completing a basic encoder

into a PMPI matrix B and taking a PPCM from the columns of B−1, and CIII is

specific to a 1 × n parity check matrix that is taken from the (n − 1) × (n − 1)

subdeterminants of a (n− 1)×n encoder. It was shown that a k×n encoder is basic

if and only if it is a submatrix of a n× n PMPI matrix. The reader is reminded that

CI, CII and CIII are the main tools in the succeeding chapters.

Page 98: Parity Check Matrices of Convolutional Codes Over Rings

88

Chapter 5

NEW EXAMPLES OF ENCODERS FOR SELF-DUAL

CONVOLUTIONAL CODES

In this chapter, we give the definition of the dual of a convolutional code that is

considered in this thesis. Based on this, we offer a sufficient condition for a system-

atic encoder to be an encoder of a self-dual convolutional code. We construct new

examples of encoders for self-dual convolutional codes over Z2 and Z4 which are given

in Sections 5.2.1 and 5.2.1, respectively.

5.1 Self-Dual Convolutional Codes

In literature (see for example [23] and [19]), there are two definitions of a dual of a

convolutional code over a field. In this paper, we adopt the following definition.

Definition 5.1 (McEliece, [15]). If C is a rate-k/n convolutional code over the field

F, its dual code, denoted by C⊥ is defined as follows:

C⊥ = {x(D) ∈ F(D)n|x(D) · v(D) = 0, for all v(D) ∈ C} .

For a linear block code B, its dual B⊥ is the set of n-tuples which are orthogonal

to every codeword in B. So the definition above is a natural extension from the

Page 99: Parity Check Matrices of Convolutional Codes Over Rings

89

block code case. In this case, C is considered as a linear block code over F (D).

Moreover, if x(D) = [x1(D), x2(D), . . . , xn(D)] and vD) = [v1(D), v2(D), . . . , vn(D)],

then x(D) · v(D), or simply x(D)v(D), is given by

n∑i=1

xi(D)vi(D) ,

where the product xi(D)vi(D) is taken over F(D).

It is a standard result in linear algebra that C⊥ is a subspace of F(D)n of dimension

n − k. That is, C⊥ is a rate-(n − k)/n convolutional code over F. Recall that the

rows of a (n − k) × n parity check matrix H(D) for C are linearly independent and

each row of H(D) are orthogonal to every row of a generator matrix for C, hence to

every codeword in C. That is, the rows of H(D) are members of C⊥ and since they

are linearly independent, H(D) can be seen as a generator matrix of C⊥.

We adopt the same definition of the dual code of a convolutional code over a ring

R as in Definition 5.1.

Recall that Lemma 4.1 assures the existence of a parity check matrix H(D) de-

scribing a code C over a ring R that satisfies DCC. The parity check matrix H(D)

will generate the dual of a code C over R. In other words, similar to the field case,

we can treat C⊥ as a free R(D)-submodule (of rank n− k) of R(D)n. Thus, C⊥ is a

rate-(n− k)/n convolutional code over R with a generator matrix given by H(D).

If C = C⊥ (C ⊂ C⊥), then we say C is self-dual (self-orthogonal). We can see

Page 100: Parity Check Matrices of Convolutional Codes Over Rings

90

that a convolutional code C is self-dual if and only if the generator matrices of C and

C⊥ are equivalent.

Self-dual and self-orthogonal block codes gathered much attention for its goodness

in practical and theoretical purposes. The problem at hand is to find or classify all

self-dual block codes with good parameters, such as distance. In the case of convolu-

tional codes, recently, R. Johannesson, P. Stahl and E. Wittenmark [12] reported the

world’s second Type II binary convolutional code. The first was reported by A. R.

Calderbank, G. D. Forney, Jr. and A. Vardy [2]. We say that a code is of Type II

if each codeword in the code has a weight divisible by four (doubly-even) and the

code is self-dual.

We can see that the reported self-dual convolutional codes are classified in terms of

their weight properties (i.e. of being Type II). Moreover, the duality of the two codes

are defined with respect to the sequence space duality (see [23]), which we will not

consider here. We will focus on self-duality or self-orthogonality of convolutional codes

in the sense of Definition 5.1. In this case, little is known about this type of self-dual

convolutional codes (see [19]). Nevertheless, Hans-Gert Schneider, in his dissertation

[19], tried to generalize concepts involved in self-duality (self-orthogonality) of linear

block codes to self-duality (self-orthogonality) of convolutional codes over fields.

Page 101: Parity Check Matrices of Convolutional Codes Over Rings

91

5.2 The Algorithm for Constructing the Examples

In this section, we give the algorithm that is used in constructing examples of encoders

for self-dual convolutional codes over Z2 and Z4. We begin proving the following.

Theorem 5.1. If G(D) = (I, A) is a k × n generator matrix of a convolutional

code C over R where n = 2k (i.e. I, A ∈ R(D)k×k), A is invertible over R(D) and

A−1 = −At, then the parity check matrix H(D) = (−At, I) for C is equivalent to

G(D) and C is self-dual.

Proof:

H(D) = (−At, I)

= (A−1, I)

= A−1(I, A)

= A−1G(D).

Take note further that A and A−1 are invertible over R(D). Indeed,

H(D) and G(D) are equivalent. Since G(D) and H(D) generates C and

C⊥, respectively, therefore C = C⊥ or C is self-dual.

Theorem 5.1 also tells us that G(D) is both a generator matrix and a parity

check matrix of C. We can immediately verify by block matrix multiplication that

G(D)G(D)t = 0k×k. That is,

Page 102: Parity Check Matrices of Convolutional Codes Over Rings

92

(Ik, A)

IkAt

= Ik + AAt = I + A(−A−1) = Ik − Ik = 0k×k .

Example 5.1 (Rains and Sloane, [18]). The octacode O8 is a linear block code over

Z4 generated by a generator matrix

G =

1 0 0 0 2 1 1 1

0 1 0 0 3 2 1 3

0 0 1 0 3 3 2 1

0 0 0 1 3 1 3 2

.

Notice that if we let

A =

2 1 1 1

3 2 1 3

3 3 2 1

3 1 3 2

,

A−1 = A = −At and

Page 103: Parity Check Matrices of Convolutional Codes Over Rings

93

AAt = −I4 =

3 0 0 0

0 3 0 0

0 0 3 0

0 0 0 3

.

Therefore, a parity check matrix H of O8 given by H = (−At, I) is equivalent to

G. That is, H = A−1G.

Example 5.2 (McEliece, [15]).

G(D) =

1 0 11+D

D1+D

0 1 D1+D

11+D

in Example 4.3 is a generator matrix of a rate-2/4 self-dual convolutional code over

Z2 (see [15]) and it satisfies the conditions in Theorem 5.1. To see this, let

A =

11+D

D1+D

D1+D

11+D

.

It is apparent that A−1 = −At = At = A. Verify that AAt = −I2 = I2. Thus,

G(D) = A−1H(D) where H(D) = (−At, I).

Example 5.3 (Schneider, [19]). A 2× 4 PGM of a self-dual convolutional code over

Z3 is given by

Page 104: Parity Check Matrices of Convolutional Codes Over Rings

94

G(D) =

D2 +D + 1 D2 + 2D + 1 1 D2

D D + 2 1 D + 1

(see [19]). Since G(D) admits a row-reduced echelon form over Z3(D), G(D) is

equivalent to, say G′(D), which is given by

G′(D) =

1 0 2D2+2D+1D2+2D+2

2D2+2D2+2D+2

0 1 D2+1D2+2D+2

2D2+2D+1D2+2D+2

.

The equivalence of G(D) and G′(D) can be seen via

G′(D) = T (D)G(D)

where T (D) is given by

T (D) =

D+2D2+2D+2

2D2+D+2D2+2D+2

2DD2+2D+2

D2+D+1D2+2D+2

.

In G′(D), let

A =

2D2+2D+1D2+2D+2

2D2+2D2+2D+2

D2+1D2+2D+2

2D2+2D+1D2+2D+2

.

Page 105: Parity Check Matrices of Convolutional Codes Over Rings

95

The algorithm for finding G(D) = (I, A), that satisfies the conditions of Theorem

5.1, focuses on finding the matrix A such that A−1 = −At. Examples 5.1, 5.2 and

5.3, among others, motivated this construction. The algorithm is given below.

1. Construct set P of polynomials of degree less than or equal to (say) L.

2. Construct set Q of all possible rational functions from the elements of P .

3. Construct square matrices, say Ai, with entries coming from Q.

4. For each i, test whether matrix Ai is invertible and satisfies A−1i = −Ati.

5. Obtain matrix G(D) by augmenting matrix Ai, that passed step 4, to the iden-

tity matrix I such that G(D) = (I, Ai).

The following examples are obtained using the MAGMA program in Appendix

A.6. In the field case, Q in step 2 is possible in MAGMA but, not in the ZM case.

So, we are limited with polynomial entries for the encoder over ZM(D). Nevertheless,

theoretically the algorithm works.

Page 106: Parity Check Matrices of Convolutional Codes Over Rings

96

5.2.1 A 4× 8 minimal-basic PGM over Z2(D)

Consider the matrix G(D) over Z2(D) given by

G(D) =

1 0 0 0 1D+1

1D+1

1D+1

DD+1

0 1 0 0 1D+1

1D+1

DD+1

1D+1

0 0 1 0 1D+1

DD+1

1D+1

1D+1

0 0 0 1 DD+1

1D+1

1D+1

1D+1

.

Let

A =

1D+1

1D+1

1D+1

DD+1

1D+1

1D+1

DD+1

1D+1

1D+1

DD+1

1D+1

1D+1

DD+1

1D+1

1D+1

1D+1

.

We can verify that A−1 = −At. But since −1 = 1 in Z2, we have −At = At = A and

AAt = I4. Furthermore, we can derive a minimal-basic PGM equivalent to G(D) by

doing the following:

1. Multiply G(D) by the 4× 4 invertible matrix

D + 1 0 0 0

0 D + 1 0 0

0 0 D + 1 0

0 0 0 D + 1

Page 107: Parity Check Matrices of Convolutional Codes Over Rings

97

over Z2(D), resulting to an equivalent PGM, say G1(D), given by

G1(D) =

D + 1 0 0 0 1 1 1 D

0 D + 1 0 0 1 1 D 1

0 0 D + 1 0 1 D 1 1

0 0 0 D + 1 D 1 1 1

.

2. Get the invariant-factor decomposition of G1(D) with respect to Z2[D] where

we can obtain an equivalent basic PGM (see Examples 4.5 and 4.6), say G2(D),

given by

G2(D) =

D + 1 0 0 0 1 1 1 D

1 1 0 0 0 0 1 1

1 0 1 0 0 1 0 1

D 0 0 1 0 1 1 D + 1

.

3. Consider the indicator matrix of G2(D) given by

[G2(D)]h =

1 0 0 0 0 0 0 1

1 1 0 0 0 0 1 1

1 0 1 0 0 1 0 1

1 0 0 0 0 0 0 1

.

The matrix [G2(D)]h is not of full-rank. We make the rank of the matrix

[G2(D)]h over Z2 to be equal to four by replacing the first row of G2(D) by the

sum of the first row and the fourth row of G2(D). Consequently, we obtain an

Page 108: Parity Check Matrices of Convolutional Codes Over Rings

98

equivalent minimal-basic PGM, say G3(D), given by

G3(D) =

1 0 0 1 1 0 0 1

1 1 0 0 0 0 1 1

1 0 1 0 0 1 0 1

D 0 0 1 0 1 1 D + 1

.

The process above can be summarized by

G3(D) =

1 0 0 1

1 1 0 0

1 0 1 0

D 0 0 1

G(D) .

The encoder G3(D) also appears in Example 4.6. As a consequence of Theorem

5.1, we expect that G(D), or any equivalent generator matrix to G(D), is also a

parity check matrix of the code generated by them. For instance, we can verify that

G3(D)G3(D)t = 04×4. In other words, G3(D) is a minimal-basic PGM of a rate-4/8

self-dual convolutional code over Z2.

Page 109: Parity Check Matrices of Convolutional Codes Over Rings

99

5.2.2 A 4× 8 systematic PGM over Z4(D)

An example of a PGM for a self-dual convolutional code over Z4 is given by

G(D) =

1 0 0 0 1 1 2 1

0 1 0 0 3 1 2D + 1 2

0 0 1 0 2 2D + 3 1 2D + 1

0 0 0 1 3 2 2D + 3 1

.

One can verify that G(D)G(D)t = 04×4 and since the first four columns of G(D)

form the identity matrix, it is immediate that the rows of G(D) are linearly indepen-

dent or we say that the rows of G(D) are free over Z4(D). Similarly, if we let

A =

1 1 2 1

3 1 2D + 1 2

2 2D + 3 1 2D + 1

3 2 2D + 3 1

,

then A−1 = −At where

A−1 =

3 1 2 1

3 3 2D + 1 2

2 2D + 3 3 2D + 1

3 2 2D + 3 3

.

Page 110: Parity Check Matrices of Convolutional Codes Over Rings

100

5.3 Summary

We defined the dual of a convolutional code as an exact analog to the dual of a linear

block code. The conditions for a systematic encoder to be equivalent to a parity check

matrix of a code C were have been given. As a result, new examples of convolutional

encoders over Z2(D) and Z4(D) were constructed.

Page 111: Parity Check Matrices of Convolutional Codes Over Rings

101

Chapter 6

STRUCTURAL PROPERTIES OF PARITY CHECK

MATRICES

In this chapter, we study the structural properties of a parity check matrix as encoder

of the dual of the code. First, we determine the connections between equivalent

encoders in terms of their subdeterminants and constraint lengths. In similar manner,

we study the connections between a parity check matrix and an encoder. Specifically,

we study the structural properties of a parity check matrix that is constructed using

CI, CII and CIII.

6.1 Connections Between Encoders

It is known that most of algorithmic checking of structural properties of encoders uses

subdeterminants or minors. Therefore, we establish relations of parity check matrix

and an encoder with respect to their subdeterminants and constraint lengths. With

this, the maximum degree among the minors of a polynomial encoder, given by µ,

can be studied over PGMs and PPCMs of a code.

Page 112: Parity Check Matrices of Convolutional Codes Over Rings

102

6.1.1 On subdeterminants

Recall that two k × n generator matrices G(D) and G′(D) for a convolutional code

C over a ring R are equivalent if and only if there exists a k × k invertible matrix

T (D) over R(D) such that G(D) = T (D)G′(D) [23]. Moreover, if G(D) and G′(D)

are both basic, we have the following.

Theorem 6.1 (Wittenmark, [23]). Let G(D) and G′(D) be two basic generator matri-

ces. Then G(D) and G′(D) are equivalent if and only if there exists a k×k invertible

matrix T (D) over R(D) such that G′(D) = T (D)G(D), the determinant of T (D) is a

unit in R[D]. Since the determinant of T (D) is a unit in R[D], the inverse of T (D)

is also polynomial.

In other words, T (D) in Theorem 6.1 is a PMPI matrix. As a consequence ,

we can tell something about the k × k subdeterminants of two equivalent generator

matrices G(D) and G′(D).

Corollary 6.1 (Wittenmark, [23]). The k × k subdeterminants of two equivalent

generator matrices G(D) and G′(D) are equal up to units in R(D).

Proof:

Since G(D) and G′(D) are equivalent, there exists a k × k matrix T (D)

Page 113: Parity Check Matrices of Convolutional Codes Over Rings

103

which is invertible over R(D) such that G′(D) = T (D)G(D). We let

G′(D) =

g′11 g′12 · · · g′1n

g′21 g′22 · · · g′2n

...... · · · ...

g′k1 g′k2 · · · g′kn

;

T (D) =

t11 t12 · · · t1k

t21 t22 · · · t2k

...... · · · ...

tk1 tk2 · · · tkk

;

and

G(D) =

g11 g12 · · · g1n

g21 g22 · · · g2n

...... · · · ...

gk1 gk2 · · · gkn

.

Since G′(D) = T (D)G(D), each entry g′ij of G′(D) can be written as

g′ij =k∑

h=1

tihghj . (6.1)

For instance,

g′22 =k∑

h=1

t2hgh2 = t21g12 + t22g22 + t23g32 + . . .+ t2kgk2 .

Wherein, g′22 is the product of the second row of T (D) and the second

column of G(D). In general, following (6.1), g′ij is the product of the i-th

Page 114: Parity Check Matrices of Convolutional Codes Over Rings

104

row of T (D) and the j-th column of G(D).

Now, we consider k × k submatrices g′(D) and g(D) of G′(D) and G(D),

respectively, where g′(D) and g(D) are obtained by taking arbitrary k

columns from G′(D) and G(D), respectively. We denote the column num-

bers of g′(D) and g(D) by j1 < j2 < . . . < jk where j1, j2, . . . , jk ∈

{1, 2, . . . , n}. We can now write g′(D) and g(D) as follows:

g′(D) =

g′1j1 g′1j2 · · · g′1jk

g′2j1 g′2j2 · · · g′2jk

...... · · · ...

g′kj1 g′kj2 · · · g′kjk

and

g(D) =

g1j1 g1j2 · · · g1jk

g2j1 g2j2 · · · g2jk

...... · · · ...

gkj1 gkj2 · · · gkjk

.

Using (6.1), we can further write g′(D) as

g′(D) =

∑kh=1 t1hghj1

∑kh=1 t1hghj2 · · ·

∑kh=1 t1hghjk∑k

h=1 t2hghj1∑k

h=1 t2hghj2 · · ·∑k

h=1 t2hghjk

...... · · · ...∑k

h=1 tkhghj1∑k

h=1 tkhghj2 · · ·∑k

h=1 tkhghjk

Page 115: Parity Check Matrices of Convolutional Codes Over Rings

105

=

t11 t12 · · · t1k

t21 t22 · · · t2k

...... · · · ...

tk1 tk2 · · · tkk

g1j1 g1j2 · · · g1jk

g2j1 g2j2 · · · g2jk

...... · · · ...

gkj1 gkj2 · · · gkjk

= T (D)g(D). (6.2)

Taking the determinants of (6.2), we have

det(g′(D)) = det((T (D))(g(D))) = det(T (D)) det(g(D)) .

Thus, the k×k subdeterminant (det(g′(D)) of G′(D) is equal to the prod-

uct of det(T (D)) and a corresponding k × k subdeterminant (det(g(D)))

of G(D). Since T (D) is invertible over R(D), det(T (D)) is a unit in R(D).

Corollary 6.2 (Wittenmark, [23]). The k×k minors of two equivalent basic generator

matrices G(D) and G′(D) are equal up to units in R[D]. In the field case, the k × k

minors of two equivalent basic generator matrices G(D) and G′(D) are equal up to

nonzero elements in F.

Proof:

The first part of the corollary is immediate from Theorem 6.1 and Corol-

lary 6.1. For the second part, just add the fact that the units in F[D] are

precisely the units in F, which are the nonzero elements in F (see [10]).

The following corollary is evident from Theorem 6.1 and Corollary 6.2.

Page 116: Parity Check Matrices of Convolutional Codes Over Rings

106

Corollary 6.3 (Wittenmark, [23]). For convolutional codes over fields, µ (the maxi-

mum degree among the k× k minors of a PGM) is invariant over all equivalent basic

generator matrices.

However, it is also clear that Corollary 6.3 is not true in the ring case. Interestingly,

in the field case, there is a strong connection between the minors of a PPCM H(D)

and a PGM G(D) of a convolutional code.

Theorem 6.2 (Forney, [6]). The (n− k)× (n− k) minors of H(D) are equal to the

k × k minors of G(D), up to units in F[D].

The proof is given in [6].

Proof:

In Section 4.2.2, recall that we can take the first k rows of a unimodular

matrix B as G(D) while H(D)t is from the last (n− k) columns of B−1.

We write B and B−1 as block matrices as follows:

B =

P Q

R S

and B−1 =

P ′ Q′

R′ S ′

where P, P ′ ∈ F[D]k×k; Q,Q′ ∈ F[D]k×(n−k); R,R′ ∈ F[D](n−k)×k and

S, S ′ ∈ F[D](n−k)×(n−k).

Note, G(D) =

(P Q

)and H(D) =

(Q′ S ′

). We want to show that

the upper left k×k subdeterminant of B, i.e. det(P ), is equal to the lower

Page 117: Parity Check Matrices of Convolutional Codes Over Rings

107

right (n− k)× (n− k) subdeterminant of B−1, i.e. det(S ′), up to units in

F[D].

Now,

BB−1 =

P Q

R S

P ′ Q′

R′ S ′

= In =

Ik 0k×(n−k)

0(n−k)×k In−k

. (6.3)

Then consider the matrix product P Q

0(n−k)×k In−k

P ′ Q′

R′ S ′

=

Ik 0k×(n−k)

R′ S ′

(6.4)

Taking the determinants of (6.4) and by Lemma 2.1 and Lemma 2.2, we

have [det(P ) det(I(n−k))

]det(B−1) = det(Ik) det(S ′)

or

det(P ) det(B−1) = det(S ′) .

But det(B−1) is a unit in F[D], hence det(P ) is equal to det(S ′), up to a

unit in F[D]. By transposition, the proof will carry through for any other

choice of columns in B and the corresponding rows in B−1 (see [6]).

It is implied that the proof of Theorem 6.2 is in the context where G(D) and

H(D) are both basic polynomial matrices and the reason is via Theorem 4.2. So, we

restate Theorem 6.2 in Theorem 6.3 and extend it to Zpr [D]. First, define µG and µH

to be the maximum degree among the k × k minors of a PGM G(D) and a PPCM

Page 118: Parity Check Matrices of Convolutional Codes Over Rings

108

H(D), respectively. Similarly, let νG and νH to be the respective overall constraint

lengths of G(D) and H(D).

Theorem 6.3. If G(D) and H(D) are both basic encoders over Zpr [D], then the

(n− k)× (n− k) minors of H(D) are equal to the k× k minors of G(D), up to units

in Zpr [D]. If G(D) and H(D) are submatrices of n× n unimodular matrices B and

B−1, respectively, then their minors are equal up to units in Zpr and µG = µH .

Proof:

By Theorem 4.2, there exist PMPI matrices B and B−1 where G(D) is

a submatrix of B and H(D) is a submatrix of B−1 (see CII). Following

the proof of Theorem 6.2, the minors of G(D) and H(D) differ only by

det(B−1) which is a unit in Zpr [D]. In addition, if B and B−1 are uni-

modular matrices, then det(B−1) is a unit in Zpr . Thus, the minors of

G(D) and H(D) are equal up to units in Zpr . Hence, µG = µH .

The following result shows that the minors of arbitrary PGM and PPCM over

F(D) are equal up to nonzero elements in F(D).

Theorem 6.4. Consider a generator matrix G(D) and a parity check matrix H(D)

of a convolutional code C over F. The (n− k)× (n− k) subdeterminants of H(D) are

equal to the k × k subdeterminants G(D), up to nonzero elements in F(D).

Proof:

Let G′(D) be a k × n basic PGM equivalent to G(D) and let H ′(D) be

Page 119: Parity Check Matrices of Convolutional Codes Over Rings

109

a (n − k) × n basic PPCM equivalent to H(D). G′(D) and H ′(D) exist

based on Theorem 4.1 and the discussion following it. Thus, by Theorem

6.1 there exist a k × k and a (n − k) × (n − k) invertible matrices T (D)

and S(D) over F(D), respectively, such that

G′(D) = T (D)G(D) and H ′(D) = S(D)H(D). (6.5)

Now, consider an arbitrary k × k subdeterminants g′(D) and g(D) of

G′(D) and G(D), respectively and the corresponding (n − k) × (n − k)

subdeterminants h′(D) and h(D) of H ′(D) and H(D), respectively. By

Theorem 6.1,

g′(D) = det(T (D))g(D) (6.6)

and

h′(D) = det(S(D))h(D) . (6.7)

By Theorem 6.3, we have

g′(D) = αh′(D) for some nonzero α ∈ F. (6.8)

Combining (6.6), (6.7), and (6.8), we have

det(T (D))g(D) = α det(S(D))h(D)

or

g(D) = [(α) det(T (D))−1 det(S(D))]h(D) .

It is clear that (α) det(T (D))−1 det(S(D)) ∈ F(D).

Page 120: Parity Check Matrices of Convolutional Codes Over Rings

110

6.1.2 On constraint lengths

The theorem below gives the relation of a minimal-basic encoder to any equivalent

encoders in terms of their i-th constraint lengths.

Theorem 6.5 (McEliece, [15]). If e1 ≤ e2 ≤ . . . ≤ ek are the constraint lengths of a

minimal-basic generator matrix G(D) for a convolutional code C over a field F, and

if f1 ≤ f2 ≤ . . . ≤ fk are the constraint lengths of any other (equivalent) PGM, say

G′(D) for C, then ei ≤ fi, for all i = 1, . . . k.

Proof:

We prove this theorem by contradiction. Suppose there exists j, 1 ≤ j ≤

k, such that e1 ≤ f1, e2 ≤ f2, . . . , ej ≤ fj but ej+1 > fj+1. We let

G′(D) = T (D)G(D) (6.9)

where

G′(D) =

g′1(D)

g′2(D)

...

g′k(D)

,

G(D) =

g1(D)

g2(D)

...

gk(D)

,

Page 121: Parity Check Matrices of Convolutional Codes Over Rings

111

and

T (D) =

u11 u12 · · · u1k

u21 u22 · · · u2k

...... · · · ...

uk1 uk2 · · · ukk

;

where g′i(D), gi(D) ∈ F[D]n and uij ∈ F(D). Then we have

g′1(D)

g′2(D)

...

g′k(D)

=

u11 u12 · · · u1k

u21 u22 · · · u2k

...... · · · ...

uk1 uk2 · · · ukk

g1(D)

g2(D)

...

gk(D)

,

specifically,

g′1(D) = u11g1(D) + u12g2(D) + · · ·+ u1kgk(D)

g′2(D) = u21g1(D) + u22g2(D) + · · ·+ u2kgk(D)

...

g′k(D) = uk1g1(D) + uk2g2(D) + · · ·+ ukkgk(D)

. (6.10)

That is, each row of G′(D) is a linear combination of the rows of G(D)

with scalars from F(D).

Since G(D) is basic, there exists a polynomial right inverse, say P (D), of

G(D) such that

G(D)P (D) = Ik. (6.11)

Page 122: Parity Check Matrices of Convolutional Codes Over Rings

112

From (6.9) and (6.11), we have

G′(D)P (D) = T (D)G(D)P (D) = T (D)Ik = T (D) .

Since G′(D) and P (D) are both polynomial matrices, T (D) is also a poly-

nomial matrix or uij ∈ F[D], for all i, j = 1, . . . k.

From minimal-basicity of G(D), G(D) has PDP. Thus, together with

(6.10), we have fi’s given below

deg(g′1(D)) = f1 = max{deg(u11) + e1, deg(u12) + e2, . . . , deg(u1j) + ej,

deg(u1,j+1) + ej+1, . . . , deg(u1k) + ek}

deg(g′2(D)) = f2 = max{deg(u21) + e1, deg(u22) + e2, . . . , deg(u2j) + ej,

deg(u2,j+1) + ej+1, . . . , deg(u2k) + ek}

...

deg(g′j(D)) = fj = max{deg(uj1) + e1, deg(uj2) + e2, . . . , deg(ujj) + ej,

deg(uj,j+1) + ej+1, . . . , deg(ujk) + ek}

deg(g′j+1(D)) = fj+1 = max{deg(uj+1,1) + e1, deg(uj+1,2) + e2, . . . , deg(uj+1,j) + ej,

deg(uj+1,j+1) + ej+1, . . . , deg(uj+1,k) + ek}

...

deg(g′k(D)) = fk = max{deg(uk1) + e1, deg(uk2) + e2, . . . , deg(ukj) + ej,

deg(uk,j+1) + ej+1, . . . , deg(ukk) + ek}.

By the definition of the value of fi and by our assumption that ej+1 > fj+1,

and since each uij is a polynomial, we have to force

Page 123: Parity Check Matrices of Convolutional Codes Over Rings

113

uj+1,j+1 = . . . = uj+1,k = 0

uj,j+1 = . . . = uj,k = 0

...

u2,j+1 = . . . = u2,k = 0

u1,j+1 = . . . = u1,k = 0

. (6.12)

In other words, the first j + 1 rows of G′(D) are polynomial linear combi-

nations of the first j rows of G(D) which contradicts the fact that the rows

of G′(D) are linearly independent. To show this, suppose α1, α2, . . . , αk ∈

F(D) and

α1g′1(D) + α2g

′2(D) + · · ·+ αkg

′k(D) = 01×n (6.13)

From (6.10) and (6.13), we can write

α1g′1(D) = α1u11g1(D) + α1u12g2(D) + · · ·+ α1u1jgj(D) +

α1u1,j+1gj+1(D) + · · ·+ α1u1kgk(D);

α2g′2(D) = α2u21g1(D) + α2u22g2(D) + · · ·+ α2u2jgj(D) +

α2u2,j+1gj+1(D) + · · ·+ α2u2kgk(D);

...

αjg′j(D) = αjuj1g1(D) + αjuj2g2(D) + · · ·+ αjujjgj(D) +

αjuj,j+1gj+1(D) + · · ·+ αjujkgk(D);

αj+1g′j+1(D) = αj+1uj+1,1g1(D) + αj+1uj+1,2g2(D) + · · ·+

αj+1uj+1,jgj(D) + αj+1uj+1,j+1gj+1(D) + · · ·+ αj+1uj+1,kgk(D);

...

Page 124: Parity Check Matrices of Convolutional Codes Over Rings

114

αkg′k(D) = αkuk1g1(D) + αkuk2g2(D) + · · ·+ αkukjgj(D) +

αkuk,j+1gj+1(D) + · · ·+ αkukkgk(D).

Further, we have

(α1u11 + α2u21 + . . .+ αjuj1 + αj+1uj+1,1 + . . .+ αkuk1) g1(D)

+ (α1u12 + α2u22 + . . .+ αjuj2 + αj+1uj+1,2 + . . .+ αkuk2) g2(D)+

...

+ (α1u1j + α2u2j + . . .+ αjujj + αj+1uj+1,j + . . .+ αkukj) gj(D)

+ (α1u1,j+1 + α2u2,j+1 + . . .+ αjuj,j+1 + αj+1uj+1,j+1 + . . .+ αkuk,j+1) gj+1(D)+

...

+ (α1u1k + α2u2k + . . .+ αjujk + αj+1uj+1,k + . . .+ αkukk) gk(D) = 01×n

By linear independence of the rows of G(D), it will follow that

α1u11 + α2u21 + . . .+ αjuj1 + αj+1uj+1,1 + . . .+ αkuk1 = 0

α1u12 + α2u22 + . . .+ αjuj2 + αj+1uj+1,2 + . . .+ αkuk2 = 0

...

α1u1j + α2u2j + . . .+ αjujj + αj+1uj+1,j + . . .+ αkukj = 0

α1u1,j+1 + α2u2,j+1 + . . .+ αjuj,j+1 + αj+1uj+1,j+1 + . . .+ αkuk,j+1 = 0

...

α1u1k + α2u2k + . . .+ αjujk + αj+1uj+1,k + . . .+ αkukk = 0

Page 125: Parity Check Matrices of Convolutional Codes Over Rings

115

or in matrix form,

u11 u21 · · · uj1 uj+1,1 · · · uk1

u12 u22 · · · uj2 uj+1,2 · · · uk2

......

. . ....

......

...

u1j u2j · · · ujj uj+1,j · · · ukj

u1,j+1 u2,j+1 · · · uj,j+1 uj+1,j+1 · · · uk,j+1

......

......

.... . .

...

u1k u2k · · · ujk uj+1,k · · · ukk

α1

α2

...

αj

αj+1

...

αk

= 0k×1 .

(6.14)

We let the left most matrix in (6.14) by A satisfying (6.12), so we have

A =

u11 u21 · · · uj1 uj+1,1 uj+2,1 · · · uk1

u12 u22 · · · uj2 uj+1,2 uj+2,2 · · · uk2

......

. . ....

......

......

u1j u2j · · · ujj uj+1,j uj+2,j · · · ukj

0 0 · · · 0 0 uj+2,j+1 · · · uk,j+1

......

......

......

. . ....

0 0 · · · 0 0 uj+2,k · · · ukk

. (6.15)

Since det(A) = 0, (6.14) has nontrivial solutions. That is, αi 6= 0, for some

i ∈ {1, . . . , k}. Thus, the rows of G′(D) are not linearly independent.

Page 126: Parity Check Matrices of Convolutional Codes Over Rings

116

Theorem 6.5 implies that the constraint lengths of equivalent minimal-basic PGMs

are equal, up to permutations. The following theorem gives the connection of the

overall constraint lengths of a minimal-basic encoder of the code and a minimal-basic

encoder of the dual code.

Theorem 6.6 (Forney, [6]). If G(D) is equivalent to a minimal-basic encoder with

overall constraint length ν, then the dual code can also be generated by a minimal-basic

encoder with overall constraint length ν.

McEliece [15] showed that µG ≤ νG in the field case. We claim that it is also

true in the ring case. Let ei be the i-th constraint length of G(D). In the expansion

of any k × k minor of G(D), using Definition 2.5, each term is the product of k

entries of G(D), one from each row (and column). Therefore, it is immediate that

µG ≤ e1 + e2 + · · · + ek = νG since each entry from the i-th row has degree at most

ei. Thus, given a PGM G(D) and a PPCM H(D), we have

µG + µH ≤ νG + νH , (6.16)

since µG ≤ νG and µH ≤ νH .

In the field case, if G(D) and H(D) are both basic, then µG = µH (see Theorem

6.2). Hence,

2µG ≤ νG + νH or 2µG − νG ≤ νH . (6.17)

Moreover, if G(D) is minimal-basic, then µG = νG (see [23]). Thus, we have

νG ≤ νH . (6.18)

Page 127: Parity Check Matrices of Convolutional Codes Over Rings

117

Hence, the overall constraint lengths of basic parity check matrices of the code is

bounded below by the overall constraint length of the minimal-basic encoders of the

code. In the sense of Theorem 6.6, we can find a minimal-basic encoder equivalent to

H(D), say H ′(D), such that

νG = νH′ . (6.19)

Theorem 6.5 implies that the overall constraint length is invariant among equivalent

minimal-basic encoders. Therefore, from (6.19), we can also say that the overall

constraint length is invariant among minimal-basic PGMs and PPCMs of a code.

For the ring case, we focus on basic PPCMs that is obtained using CII. Recall

that we get a parity check matrix H(D) from B−1 and compute B−1 via adjoints of

B =

G(D)

L(D)

(see the proof of Theorem 2.4), it follows that

νHi ≤ νG + νL − νLi (6.20)

where νHi , νG, νL, and νLi are the i-th constraint length of H(D), overall constraint

length of G(D), sum of the row degrees of L(D), and the i-th row degree of L(D),

respectively. Thus, each i-th constraint length of H(D) is bounded above by the row

degrees of B. In particular, if we use CIII to obtain a 1×n PPCM from a (n−1)×n

PGM G(D), we have

νH = µH = µG ≤ νG .

Page 128: Parity Check Matrices of Convolutional Codes Over Rings

118

6.2 Structural Properties of a Parity Check

Matrix From a Generator Matrix over Zpr(D)

We consider convolutional codes over the ring Zpr . Wittenmark [23] studied con-

volutional codes over ZM and pointed out that it can be partly studied using the

theory of convolutional codes over fields. To do this, one can use the fact that

ZM∼= Zp

r11⊕ Zp

r22⊕ . . . ⊕ Zprss where M = pr11 p

r22 · · · prss . Moreover, Wittenmark

noted that the study of convolutional codes over ZM can be separated into study of

convolutional codes over Zpr where the properties of a generator matrix G(D) of a

convolutional code C over Zpr can be connected with the properties of G(D) mod p,

a generator matrix of a convolutional code C mod p over the field Zp. Fagnani and

Zampieri [5] gave a complete characterization of the structural properties of generator

matrices and convolutional codes over Zpr . Since Zpr satisfies DCC (see Section 2.1

on rings), we are assured of the existence of a parity check matrix for a convolutional

code C over Zpr (see Lemma 4.1). Given this, we can use CI to have a parity check

matrix H(D) derived from a generator matrix G(D) = (I, A) over Zpr(D) and we

can study the properties of H(D) from the properties of G(D).

Lemma 6.1. Suppose G(D) = (I, A) is a k×n PGM for a convolutional code C over

Zpr . Then

(i) G(D) is right invertible,

(ii) G(D) is basic,

Page 129: Parity Check Matrices of Convolutional Codes Over Rings

119

(iii) G(D) is non-catastrophic, and

(iv) G(D is minimal.

Proof:

Since G(D) is systematic, hence G(D) is right invertible (see Section 3.2)

Clearly, G(D) mod p is systematic since G(D) is systematic. So, Ik is

a submatrix of G(D) mod p where det(Ik) = 1. Thus, the gcd of the

k × k minors of G(D) mod p is 1. Hence from our discussion in Section

3.2 on basicity and non-catastrophicity, G(D) mod p is basic and non-

catastrophic (see also [15]). A PGM G(D) is basic and noncatastropic

if and only if G(D) mod p is basic and noncatastropic, respectively [23].

Therefore, G(D) is also basic and non-catastrophic. Part (iii) is due to

Mittelholzer [16].

Remarkably, the systematicity of a PGM G(D) of convolutional code over Zpr

implies the right invertibility, basicity, non-catastrophicity and minimality of G(D).

Recall that using CI, we can derive a parity check matrix H(D), given by H(D) =

(−At, In−k), from a systematic encoder given by G(D) = (I, A). Given the fact

that H(D) is also systematic in this particular construction, we have the following

corollary where the proof is clear from the proof of Lemma 6.1.

Corollary 6.4. Suppose H(D) = (−At, I) is a PPCM for a convolutional code C

over Zpr where G(D) = (I, A) is a k × n PGM of C. Then

Page 130: Parity Check Matrices of Convolutional Codes Over Rings

120

(i) H(D) is right invertible,

(ii) H(D) is basic,

(iii) H(D) is non-catastrophic, and

(iv) H(D) is minimal.

As a remark, given a systematic PGM G(D) over Zpr(D), we can derive a system-

atic, right invertible, basic, non-catastrophic and minimal PPCM H(D) over Zpr(D).

A specific situation is given in Corollary 6.5 where both PGM G(D) and PPCM H(D)

(obtained from G(D) using CI) satisfy PDP.

Corollary 6.5. Consider a k×n (n = 2k) PGM G(D) = (Ik, A) of convolutional code

over Zpr and a parity check matrix H(D) = (−At, Ik) (note that both G(D) and H(D)

are of the same sizes). Let A = (aij), 1 ≤ i ≤ k, 1 ≤ j ≤ k. If deg(aij) = deg(aji)

for all i 6= j and the determinant of the indicator matrix of A (det([A]h)) is a unit in

Zpr , then G(D) and H(D) are minimal-basic.

Proof:

Consider the square matrix A = (aij). Since deg(aij) = deg(aji) for

all i 6= j, A and −At have exactly the same row degrees. Hence, the i-th

constraint lengths of G(D) and H(D) are equal. Moreover, since det([A]h)

is a unit in Zpr , it follows that det([−At]h) is also a unit in Zpr . Hence,

[G(D)]h and [H(D)]h both have submatrices, given by [A]h and [−At]h,

Page 131: Parity Check Matrices of Convolutional Codes Over Rings

121

respectively, whose determinants are units in Zpr . Thus, G(D) and H(D)

both satisfy PDP. G(D) and H(D) are basic by Lemma 6.1 and Corollary

6.4, respectively. Therefore, G(D) and H(D) are minimal-basic.

Recall that using CII, given a k × n basic encoder G(D) over Zpr [D], we de-

rive a (n − k) × n PPCM H(D) from B−1, where B =

G(D)

L(D)

and B−1 =

(P (D) H(D)t

), P (D) ∈ Zpr [D]n×k. Since H(D) is a submatrix of a square PMPI

matrix, by Theorem 4.2, H(D) is basic. Furthermore, we show how to obtain a

polynomial right inverse of H(D). Consider the matrix product given by

BB−1 =

G(D)

L(D)

(P (D) H(D)t

)= In . (6.21)

Transposing each expression in (6.21), we have

(B−1)tBt =

P (D)t

H(D)

(G(D)t L(D)t

)= In . (6.22)

Further, via block matrix multiplication we have

P (D)tG(D)t P (D)tL(D)t

H(D)G(D)t H(D)L(D)t

=

Ik×k 0k×(n−k)

0(n−k)×k I(n−k)×(n−k)

. (6.23)

Therefore, L(D)t is a polynomial right inverse of H(D). Indeed, H(D) is basic.

Hence, using CII, a basic PGM will yield to a basic PPCM. In the case of CIII, where

Page 132: Parity Check Matrices of Convolutional Codes Over Rings

122

a (n− 1)×n G(D) is a basic PGM over Zpr [D], a 1×n PPCM H(D) taken from the

(n− 1)× (n− 1) minors of G(D) is also basic.

We end this section by illustrating Corollary 6.5.

Example 6.1. Consider a 2× 4 PGM G(D) over Z4[D], given by

G(D) =

1 0 D D2 + 3

0 1 3D2 + 1 2

.

Let

A =

D D2 + 3

3D2 + 1 2

.

So, −At is given by

−At =

3D D2 + 3

3D2 + 1 2

and using CI, a PPCM H(D) is given by

H(D) =

3D D2 + 3 1 0

3D2 + 1 2 0 1

.

Hence the respective indicator matrices of A and −At are given by

[A]h =

0 1

3 0

and [−At]h =

0 1

3 0

.

Moreover, we have

[G(D)]h =

0 0 0 1

0 0 3 0

and [H(D)]h =

0 1 0 0

3 0 0 0

.

Page 133: Parity Check Matrices of Convolutional Codes Over Rings

123

It is clear that [G(D)]h and [H(D)]h has submatrices whose determinants are units

in Zpr which are given by det([A]h) and det([−At]h), respectively. Therefore, G(D)

and H(D) satisfy PDP. Since G(D) and H(D) are both basic, therefore, they are

minimal-basic.

6.3 Summary

Connections of encoders and parity check matrices, with respect to their subde-

terminants and constraint lengths, were discussed. We looked closely on parity check

matrices that was derived from encoders using CI, CII and CIII. In the Zpr case, it

was shown that the minors of a basic encoder G(D) and a basic PPCM H(D) (de-

rived from G(D) using CII) are equal up to units in Zpr [D]. The constraint lengths of

H(D) are bounded above by the row degrees of the square PMPI matrix that contains

G(D). We have been studied structural properties of a parity check matrix that were

derived from a given encoder. It was proven that systematicity of a PGM G(D) over

Zpr [D] implies the systematicity, right invertibility, basicity, non-catastrophicity and

minimality of a PPCM H(D) that was derived from G(D) using CI. In the context

of CII and CIII, it was demonstrated that given a basic PGM, we can always obtain

a basic PPCM.

Page 134: Parity Check Matrices of Convolutional Codes Over Rings

124

Chapter 7

LOW-DENSITY CONVOLUTIONAL (LDC) CODES

Low-density parity check block codes (LDPC-BC) were first discovered by Gallager

in the early 60’s [7]. Low-density parity check convolutional codes (LDPC-CC) or

simply low-density convolutional (LDC) codes, that can be considered as the convo-

lutional analog of LDPC-BCs, were first introduced by Felstrom and Zigangirov in

late 90’s [1]. LDC codes caught the attentions of many researchers mainly because of

their property of being not limited to a single block length unlike LDPC-BCs [1]. The

known constructions of LDC codes are few compared to the well-explored LDPC-BCs.

In literature, the focus is on the efficient and effective construction and analysis of

LDC codes. However, in this chapter, we discuss the formal theory of LDC codes.

Specifically, we introduce the definition of LDC codes; we also give a specific con-

struction of LDC code found in [4]; and lastly, we observe the connections between

the sparse syndrome former and the encoder of an LDC code. The main reference for

this chapter is the paper by Engdahl and Zigangirov [4].

7.1 Definition of LDC codes

We begin with the definition of a binary LDPC-BC.

Definition 7.1 (Engdahl and Zigangirov, [4]). A rate-k/n binary block code defined

Page 135: Parity Check Matrices of Convolutional Codes Over Rings

125

by its transposed parity check matrix H t is called a low-density parity check block

code (LDPC-BC) if the rows hi, i = 0, 1, . . . , n− 1, of H t are sparse, i.e. if

wtH(hi) << n− k, (7.1)

where wtH(·) is given in (2.6). If all rows of H t have the same weight and the same

applies for all columns, then the code is called a homogeneous (or regular) LDPC-BC.

In [4], Engdahl and Zigangirov introduced the definition of binary LDC codes in

the sense of the general case time-varying rate-k/n binary convolutional code. That

is, the code sequence, say v, is dependent not only on the information sequence u

but, it also varies with the time-index j. Consequently, let be the information and

code sequences of a time-varying rate-k/n convolutional encoder be given by

u = . . .u−2u−1u0u1u2 . . .uj . . . where uj = ujk, . . . , u(j+1)k−1 (7.2)

and

v = . . .v−2v−1v0v1v2 . . .vj . . . where vj = ujn, . . . , u(j+1)n−1, (7.3)

respectively, where ui, vi ∈ F2, i ∈ Z. Let

H t =

. . . . . . . . .

· · · H0(−1)t H1(0)t · · · Hms(ms − 1)t · · ·

· · · H0(0)t H1(1)t · · · Hms(ms)t

. . . . . . . . .

(7.4)

Page 136: Parity Check Matrices of Convolutional Codes Over Rings

126

be the transposed infinite parity check matrix of the convolutional code, also known as

the syndrome former, where Hi(j)t, i = 1, . . . ,ms are binary n×(n−k) submatrices

and the value ms is the syndrome former memory. Moreover, assume that the

following two conditions hold:

(i)

the rank of H0(j)t is n− k, j ∈ Z, (7.5)

which is fulfilled by the last (n−k) rows of H0(j)t being linearly indepen-

dent, and

(ii)

Hms(j)t 6= 0, j ∈ Z. (7.6)

We are now ready to give the definition of a binary LDC code.

Definition 7.2 (Engdahl and Zigangirov, [4]). A rate-k/n binary convolutional code

defined by its infinite syndrome former in (7.4) of memory ms is called a low-density

convolutional (LDC) code if the row vectors hi of H t are sparse for all i ∈ Z, that

is if

wtH(hi) << (n− k)ms, i ∈ Z. (7.7)

If all rows of the syndrome former have the same Hamming weight and the same

applies for all columns, then the LDC code is called homogeneous.

It is possible that we omit condition (7.6) but, the syndrome former memory

Page 137: Parity Check Matrices of Convolutional Codes Over Rings

127

would not be defined and we would have to change Definition 7.2, to some extent.

Similar with LDPC-BCs, we can also consider semi-homogeneous LDC codes. A

rate-k/n homogeneous LDC code with syndrome former memory ms, for which each

row in H t has weight ρ, and each column has weight ρ/(1− k/n), where ρ/(1− k/n)

is an integer, will be called a (ms, ρ, ρ/(1− k/n))-code. We consider ρ as the average

weight of the rows in H t for semi-homogeneous LDC codes. If Hi(j) = Hi(j+T ), i =

1, . . . ,ms, j ∈ Z, then the LDC code is periodic with period T .

7.2 Construction of an LDC code

We give specific construction (from [4]) of the syndrome former of a semi-homogeneous

LDC code using Jimenez-Zigangirov method [1] using the transposed parity check

matrix of a LDPC-BC. We begin by cutting the 8× 4 transposed parity check matrix

of a block code, having one 1 in each row and two 1s in each column, as shown in

Figure 7.1(a).

In Figure 7.1(b), the lower portion is moved and resulting matrix is repeated

periodically, where, the blank spaces are assumed to have zero entries. Thus, we get

an infinite matrix that has one 1 in each row and two 1s in each column. However,

Page 138: Parity Check Matrices of Convolutional Codes Over Rings

128

this matrix does not satisfy the syndrome former conditions (7.5) and (7.6).

As shown in Figure 7.1(c), we obtain the syndrome former of a homogeneous

LDC code, having two 1s in each row and four 1s in each column, by appending the

submatrix (11)t at the left end of each pair of rows of the matrix in Figure 7.1(b).

The matrix in Figure 7.1(c) satisfies (7.5) but not (7.6). To do so, we append

the submatrix (01)t at the right end of each pair of rows, as shown in Figure 7.1(d).

Therefore, we obtain the syndrome former of a periodical (period T = 4) semi-

homogeneous LDC (2, 2.5, 5)-code, having two 1s in each even row, three 1s in each

odd row, and five 1s in each column.

Figure 7.1: Illustration of the Jimenez - Zigangirov method for constructing thesyndrome former of a semi-homogeneous LDC (2, 2.5, 5)-code

Page 139: Parity Check Matrices of Convolutional Codes Over Rings

129

7.3 Encoder of an LDC code

We focus on a time-invariant rate-k/n binary convolutional code C described by a

(n − k) × n PPCM H(D). The matrix H(D)t is a syndrome former of C in D-

transform (see [11]). The syndrome former H(D)t can be expanded as

H(D)t = H t0 +H t

1D + · · ·+H tmsD

ms (7.8)

where H ti ∈ Zn×(n−k)

2 , 0 ≤ i ≤ ms. Since H(D) is a parity check matrix of C,

v(D)H(D)t = 01×(n−k) (7.9)

for all codewords v(D) ∈ C. We can write (7.9) recursively as

vjHt0 + vj−1H

t1 + · · ·+ vj−msH

tms = 01×(n−k) (7.10)

using (7.8) (see [11]). Equivalently, for causal codewords v = v0v1v2 . . . in C, we have

vH t = 0

where

H t =

H t

0 H t1 H t

2 · · · H tms

H t0 H t

1 H t2 · · · H t

ms

. . . . . . . . .

Page 140: Parity Check Matrices of Convolutional Codes Over Rings

130

is a semi-infinite syndrome former matrix of C. In similar manner, C is a LDC code

if H t satisfies 7.5, 7.6 and the condition in Definition 7.2.

As we have seen in Section 7.2, the construction of an LDC code C, starts with

the syndrome former H t. In other words, C is completely determined by its syndrome

former H t or H(D)t. That is,

C = {v|vH t = 0} or C = {v(D)|v(D)H(D)t = 01×(n−k)} .

In general, deriving the encoder of C is not straight forward. Nevertheless, (7.10) can

be used to describe the encoder of C. In particular, if the first k components of a

code block vj coincide with the information block uj at time j, and the other n − k

components of vj are defined by (7.10), then an encoder of such code is systematic.

Moreover, if H(D)t contains the (n−k)× (n−k) identity matrix, then we can derive

an encoder of C from H(D)t using CI. It is worthy of an illustration.

Example 7.1. Let H t be a syndrome former of the rate-1/2 LDC (2, 1, 1)-code C,

given by

H t =

0 0 1

1 0 0

0 0 1

1 0 0

. . . . . . . . .

,

Page 141: Parity Check Matrices of Convolutional Codes Over Rings

131

where the submatrices of H t are given by H t0 =

0

1

, H t1 =

0

0

, and H t2 =

1

0

.

Note that H t0 has rank 1 and H t

2 6= 0. Thus, H t satisfies 7.5 and 7.6. The syndrome

former memory ms = 2. Consider a causal code sequence v = v0v1v2 . . . vj . . . =

v(1)0 v

(2)0 v

(1)1 v

(2)1 v

(1)2 v

(2)2 . . . v

(1)j v

(2)j . . ., where v

(1)j , v

(2)j ∈ Z2. Following (7.10), at time

instant j,

vjHt0 + vj−1H

t1 + vj−2H

t2

=

(v

(1)j v

(2)j

)0

1

+

(v

(1)j−1 v

(2)j−1

)0

0

+

(v

(1)j−2 v

(2)j−2

)1

0

= 0 . (7.11)

Then solving for v(2)j in (7.11), we have

v(2)j = v

(1)j−2 . (7.12)

Therefore, each code block at time j is given by(v

(1)j v

(1)j−2

). (7.13)

Note that we can write H t in D-transform as

H(D)t =

D2

1

.

Using Lemma 4.2, we get an encoder given by

G(D) =

1

D2

.

It is clear that G(D) is systematic. We can further verify that G(D) is a systematic

encoder of C. Consider the submatrices of G(D) given by G0 =

(1 0

), G1 =(

0 0

), and G2 =

(0 1

). Then the semi-infinite generator matrix G is given by

Page 142: Parity Check Matrices of Convolutional Codes Over Rings

132

G =

1 0 0 0 0 1

1 0 0 0 0 1

1 0 0 0 0 1

. . . . . . . . .

.

Consider the information word u = u0u1u2 . . . uj . . .. From (3.1), the code block

vj corresponding to the information block uj ∈ Z2 is given by

vj = ujG0 + uj−1G1 + uj−2G2 = uj

(1 0

)+ uj−1

(0 0

)+ uj−2

(0 1

)

=

(uj uj−2

)=

(v

(1)j v

(2)j

).

Since uj = v(1)j and uj−2 = v

(1)j−2, therefore the codeblock vj =

(v

(1)j v

(1)j−2

)satisfies

(7.12) and (7.13). Hence, v = v0v1v2 . . . vj . . . where vj =

(uj uj−2

)for all non-

negative j ∈ Z, is a codeword of C. Since the first component of each code block vj

coincides with the information block uj, therefore G(D) is a systematic encoder of C.

In general, the memory of a syndrome former is not equal to the memory of an

encoder of a code. But in Example 7.1, we have seen that the memory of the encoder

G(D) is equal to the memory of the syndrome former H(D)t. One reason is that

the entries of G(D) are taken from the entries of H(D)t. Moreover, it is easy to

verify that G(D) and H(D) are both minimal-basic and their respective memories

Page 143: Parity Check Matrices of Convolutional Codes Over Rings

133

are exactly their overall constraint lengths. Recall that in the field case, the overall

constraint length is invariant among minimal-basic PGMs and PPCMs of a code (see

Theorem 6.6). As a remark, an encoder of a LDC code C can be easily derived from a

systematic syndrome former of C using CI. Consequently, the memory of the encoder

is exactly the memory of the syndrome former. In addition, if a PPCM H(D) of

an LDC code C is minimal-basic, with overall constraint length νH , then C can be

generated by a minimal-basic encoder with overall constraint length νH .

If the n × (n − k) syndrome former H(D)t is basic, using CII, we can complete

H(D)t into a n× n PMPI matrix B′ =

(P (D) H(D)t

)over Z2[D]. Then, a k × n

encoder G(D) can be obtained from the inverse of B′ given by (B′)−1 =

G(D)

L(D)

.

Since we compute (B′)−1 via the adjoints of B′, the i-th constraint lengths νGi , 1 ≤

i ≤ k, of G(D) is bounded above by the row degrees of (B′)t. Specifically, we have

νGi ≤ νH + νP t − νP ti

where νH , νP t and νP ti are the overall constraint length of H(D), sum of the row

degrees of P (D)t and i-th row degree of P (D)t, respectively.

7.4 Summary

The definition of a binary low-density convolutional (LDC) code was given. A spe-

cific construction of a semi-homogeneous LDC code using the Jimenez - Zigangirov

Page 144: Parity Check Matrices of Convolutional Codes Over Rings

134

method was considered. It has been observed that an encoder of an LDC code can

be obtained from the syndrome former H(D)t of the code if H(D) is systematic and

basic. Consequently, the connections between the syndrome former and an encoder

was also investigated.

Page 145: Parity Check Matrices of Convolutional Codes Over Rings

135

SUMMARY AND RECOMMENDATIONS

We have been devised constructions of parity check matrices for convolutional codes

over rings. In particular, it was shown that similar in the block code case, a parity

check matrix can be obtained from a systematic encoder. Also, a basic encoder was

completed into a square PMPI matrix B and a parity check matrix was derived from

the columns of B−1. The entries of a 1× n parity check matrix were taken from the

(n− 1)× (n− 1) subdeterminants of a (n− 1)× n encoder. The given constructions

can be extended to a more general ring. One can devise new constructions of parity

check matrices that will lead to the analysis of the code and its dual.

A specific definition of the dual of a convolutional code C were treated. This

definition is an exact analog of the block code case, wherein C was thought as a

linear block code over R(D). Sufficient conditions for a systematic encoder to be an

encoder for a self-dual convolutional code were have been given. Hence, new examples

of encoders of self-dual convolutional codes over Z2 and Z4 were constructed. Distance

properties of these examples can be studied.

It has been shown that there are direct connections between encoders and parity

check matrices in terms of their subdeterminants and constraint lengths. In the Zpr

case and in the context of CII, the minors of basic encoders and basic parity check

matrices are equal up to units in Zpr [D]. The i-th constraint lengths of a parity

check matrix H(D), taken from the columns of a square PMPI matrix given by

Page 146: Parity Check Matrices of Convolutional Codes Over Rings

136

B−1 =

P (D)

H(D)t

, are bounded above by the sum of row degrees of the square PMPI

matrix B. A specific case of this was demonstrated using CIII, such that the overall

constraint length of a 1×n PPCM, that was taken from the (n− 1)× (n− 1) minors

of a (n− 1)× n PGM G(D), is equal to µG which is less than or equal to the sum of

the i-th constraint lengths of G(D). Parity check matrices were treated as encoders

of the dual code. Consequently, the structural properties of parity check matrices

have been studied. Using CI, it was proven that the systematicity of a PGM over

Zpr [D] causes a PPCM to be systematic, right invertible, basic, non-catastrophic and

minimal. We considered specific case where the encoder and parity check matrix are

both minimal-basic. Using CII and CIII, it was proven that a basic PGM over Zpr [D]

will always yield to a basic PPCM over Zpr [D]. It is suggested to analyze structural

properties of PPCM H(D) via PMPI matrices B =

G(D)

L(D)

and B−1 =

P (D)

H(D)t

.

In general, B and B−1 are not unique. Thus, it is recommended to have a study on

the equivalence of parity check matrices H(D) via the structures of B and B−1 and

determine its relation to the group structure of the set of all square PMPI matrices

over R[D].

A thorough exposition of the classical theory of low-density convolutional (LDC)

codes was presented. A binary LDC code was defined and time-invariant LDC code

was adopted. A specific construction of semi-homogeneous LDC code using the

Jimenez - Zigangirov method has been given. An encoder of an LDC code can be

Page 147: Parity Check Matrices of Convolutional Codes Over Rings

137

obtained (using CI and CII) from the syndrome former H(D)t of the code if H(D) is

systematic and basic. The connections between the syndrome former and an encoder

were investigated.

Finally, MAGMA programs were created to: compute for the k × k subdetermi-

nants of a k × n encoder; check the basicity, reducedness (see [15]), and PDP of a

PGM; estimate free distance of a convolutional code using its PGM; and construct

encoders for self-dual convolutional codes. An implementation of these programs to

other computer algebra software is recommended to achieve higher computing effi-

ciency.

Page 148: Parity Check Matrices of Convolutional Codes Over Rings

138

REFERENCES

[1] A. J. Felstrom and K. S. Zigangirov, Time-varying periodic convolu-

tional codes with low-density parity-check matrix, IEEE Trans. Inform. Theory,

45 (1999), p. 2181 2191.

[2] A. R. Calderbank, G. D. Forney, Jr., and A. Vardy, Minimal tail-biting

trellises: The Golay code and more, IEEE Trans. Inform. Theory, 45 (1999),

p. 1435 1455.

[3] R. B. Dela Cruz, Hilbert series of quaternary convolutional codes, master’s

thesis, University of the Philippines, November 2006.

[4] K. Engdahl and K. S. Zigangirov, On the theory of low-density convolu-

tional codes I, in AAECC, 1999, pp. 77–86.

[5] F. Fagnani and S. Zampieri, System-theoretic properties of convolutional

codes over rings, IEEE Trans. Inform. Theory, 47 (2001), pp. 2256 – 2274.

[6] G. D. Forney, Jr., Convolutional codes I: Algebraic structure, IEEE Trans.

Inform. Theory, IT-16 (1970), pp. 720 – 738.

[7] R. Gallager, Low-density parity-check codes, IRE Trans. Inform. Theory, 8

(1962), pp. 21 – 28.

[8] S. H. Gupta and B. Virmani, LDPC for Wi-Fi and WiMAX technologies,

ELECTRO-2009, (2009), pp. 262 – 265.

Page 149: Parity Check Matrices of Convolutional Codes Over Rings

139

[9] K. Hoffman and R. Kunze, Linear Algebra, New Jersey: Prentice-Hall, Inc.,

2nd ed., 1971.

[10] T. W. Hungerford, Algebra (Graduate Texts in Mathematics), vol. 73, New

York: Springer-Verlag, 1974.

[11] R. Johannesson and Kamil Sh. Zigangirov, Fundamentals of Convolu-

tional Coding, New York: IEEE Press, 1999.

[12] R. Johannesson, P. Stahl, and E. Wittenmark, A note on type II con-

volutional codes, IEEE Trans. Inform. Theory, 46 (2000), pp. 1510 – 1514.

[13] B. Kolman and D. R. Hill, Elementary Linear Algebra, New Jersey:

Prentice-Hall, Inc., 7th ed., 2000.

[14] J. L. Massey, Coding theory, in Handbook in Applied Mathematics, W. Le-

dermann, ed., vol. 5, pt. B, Combinatorics and Geometry, W. Ledermann and

S. Vajda, eds., Chichester and New York: Wiley, 1985, ch. 16.

[15] R. J. McEliece, The algebraic theory of convolutional codes, in Handbook of

Coding Theory, V. S. Pless and W. C. Huffman, eds., Amsterdam, The Nether-

lands: North-Holland, Elsevier, 1998.

[16] T. Mittelholzer, Minimal encoders for convolutional codes over rings, Com-

munications Theory and Applications: Systems, Signal Processing and Error

Control Coding, (1993), pp. 30 – 36.

Page 150: Parity Check Matrices of Convolutional Codes Over Rings

140

[17] , Convolutional codes over rings and the two chain condition, Proc. IEEE

Int. Symp. Information Theory, (1997), p. 285.

[18] E. M. Rains and N.J.A. Sloane, Self-dual codes, May 19, 1998.

[19] H.-G. Schneider, On the weight adjacency matrix of convolutional codes, PhD

thesis, Rijksuniversiteit Groningen, September 2008.

[20] C. E. Shannon, A mathematical theory of communication, Bell Syst. Tech. J.,

27 (1948), pp. 379 – 423.

[21] V. P. Sison, Convolutional codes from linear block codes over galois rings, PhD

thesis, University of the Philippines Diliman, October 2005.

[22] , Heller-type bounds for the homogeneous free distance of convolutional codes

over finite frobenius rings, MATIMYAS MATEMATIKA: Journal of the Math-

ematical Society of the Philippines, 30 (2007), pp. 23 – 30.

[23] E. Wittenmark, An encounter with convolutional codes over rings, PhD thesis,

Lund University, Sweden, 1998.

Page 151: Parity Check Matrices of Convolutional Codes Over Rings

141

Appendix A

MAGMA PROGRAMS

Below are the MAGMA programs that we used to aid us in analyzing problems or

concepts in this thesis. Note that the subroutine, in A.1, for computing the subde-

terminants or minors of a generator matrix is also used in A.2, A.3 and A.4. Conse-

quently, the size of the input generator matrix G(D) for this programs are limited to

k×n where 1 ≤ k ≤ 4. All lines with “//” preceeding them are comments to specific

syntaxes. We give a sample run of each program.

A.1 Computing for the subdeterminants of a gen-

erator matrix

This subroutine will compute for the k × k subdeterminants or minors of a k × n

generator matrix where k is limited to 1 ≤ k ≤ 4.

forward minors, gd;Minors:=function(g1)

k:=Nrows(g1);n:=Ncols(g1);GT:=Transpose(g1);DT:=[];d:=0;

for i:=1 to n dog:=RowSubmatrix(GT,i);

Page 152: Parity Check Matrices of Convolutional Codes Over Rings

142

end for;

case k:

when 1:

DT:=Eltseq(g1);

when 2:

for f:=1 to (n-1) dofor s:=f+1 to n do

m:=Matrix([g[f],g[s]]); // a 2x2 submatrixd:=Determinant(m); // a 2x2 minorDT:=Append(DT,d); // collects the minors as a sequence

end for;end for;

when 3:

for f:=1 to (n-2) dofor s:=f+1 to (n-1) do

for t:= s+1 to n dom:=Matrix([g[f],g[s],g[t]]); // a 3x3 submatrixd:=Determinant(m); // a 3x3 minorDT:=Append(DT,d); // collects the minors as a sequence

end for;end for;

end for;

when 4:

for f:=1 to (n-3) dofor s:=f+1 to (n-2) do

for t:= s+1 to n-1 dofor q:=t+1 to n do

m:=Matrix([g[f],g[s],g[t],g[q]]); // a 4x4 submatrixd:=Determinant(m); // a 4x4 minorDT:=Append(DT,d); // collects the minors as a sequence

end for;end for;

end for;end for;

end case;

Page 153: Parity Check Matrices of Convolutional Codes Over Rings

143

return DT;

end function;

cmr

Example A.1

> g1;[ D + 1 3*D 1][ D^2 D^2 + D + 1 1]> Minors(g1);[

2*D^3 + 2*D^2 + 2*D + 1,3*D^2 + D + 1,3*D^2 + 2*D + 3

]

Page 154: Parity Check Matrices of Convolutional Codes Over Rings

144

A.2 Checking basicity of a PGM

These subroutines will test for the basicity of a k×n PGM G(D) over F(D).

Recall that G(D) is basic if and only if the gcd of the k×k minors of

G(D) is 1 (see [15]). Basically the algorithm for this program is based

on that theorem.

forward Minors, gd;

Minors:=function(g1)

k:=Nrows(g1);

n:=Ncols(g1);

GT:=Transpose(g1);

DT:=[];

d:=0;

for i:=1 to n do

g:=RowSubmatrix(GT,i); // the ith row of a PGM as a sequence

end for;

case k:

when 1:

DT:=Eltseq(g1);

when 2:

for f:=1 to (n-1) do

for s:=f+1 to n do

m:=Matrix([g[f],g[s]]); // a 2x2 submatrix

d:=Determinant(m); // a 2x2 minor

DT:=Append(DT,d); // collects the minors as a sequence

end for;

end for;

when 3:

Page 155: Parity Check Matrices of Convolutional Codes Over Rings

145

for f:=1 to (n-2) do

for s:=f+1 to (n-1) do

for t:= s+1 to n do

m:=Matrix([g[f],g[s],g[t]]); // a 3x3 submatrix

d:=Determinant(m); // a 3x3 minor

DT:=Append(DT,d); // collects the minors as a sequence

end for;

end for;

end for;

when 4:

for f:=1 to (n-3) do

for s:=f+1 to (n-2) do

for t:= s+1 to n-1 do

for q:=t+1 to n do

m:=Matrix([g[f],g[s],g[t],g[q]]); // a 4x4 submatrix

d:=Determinant(m); // a 4x4 minor

DT:=Append(DT,d); // collects the minors as a sequence

end for;

end for;

end for;

end for;

end case;

return DT;

end function;

// This subroutine will compute for the gcd of the kxk minors

forward gd, IsBasic;

gd:=function(g1)

GTCD:=[];

gcd:=0;

m:=Minors(g1); // m is a sequence of kxk minors of g1 (m := DT)

for i:=1 to #m do // #m is the number of elements in the sequence

gcd:=GCD(m[i],gcd); // get the GCD of the minors

if gcd ne 1 then

Page 156: Parity Check Matrices of Convolutional Codes Over Rings

146

gcd:=gcd;

end if;

end for;

return gcd,m;

end function;

// This subroutine will test for the basicity of a given PGM using

the subroutines Minors and gd.

IsBasic:=function(g1);

k:=Nrows(g1);

n:=Ncols(g1);

gcd,m:=gd(g1);

print g1,"is a",k,"x",n,"matrix";

print "there are",#m, "(",k,"x",k,")-","minors given below";

print m;

if gcd eq 1 then

return "The given PGM is BASIC since the gcd of the

minors is", gcd;

else

return "The given PGM is NOT BASIC. The gcd of the

minors is", gcd,".";

end if;

end function;

Example A.2

> g2;

[ D + 1 D 1]

[ D^2 D^2 + D + 1 1]

> IsBasic(g2);

[ D + 1 D 1]

[ D^2 D^2 + D + 1 1]

is a 2 x 3 matrix

there are 3 ( 2 x 2 )- minors given below

[

1,

D^2 + D + 1,

Page 157: Parity Check Matrices of Convolutional Codes Over Rings

147

D^2 + 1

]

The given PGM is BASIC since the gcd of the minors is 1

> g3;

[ 1 D^2 + D + 1 D^2 + 1 D + 1]

[ D D^2 + D + 1 D^2 1]

> IsBasic(g3);

[ 1 D^2 + D + 1 D^2 + 1 D + 1]

[ D D^2 + D + 1 D^2 1]

is a 2 x 4 matrix

there are 6 ( 2 x 2 )- minors given below

[

D^3 + 1,

D^3 + D^2 + D,

D^2 + D + 1,

D^2 + D + 1,

D^3 + D^2 + D,

D^3 + 1

]

The given PGM is NOT BASIC. The gcd of the minors is D^2 + D + 1

Page 158: Parity Check Matrices of Convolutional Codes Over Rings

148

A.3 Checking reducedness of a PGM

This program will check the reducedness of a k×n PGM G(D) over F(D).The property of G(D) being reduced is equivalent to µG = νG where µGis the maxmimum degree among the k×k minors of G(D) and νG is the overall

constraint length of G(D) (see [15]).

forward Minors, intdeg;

Minors:=function(g1)

k:=Nrows(g1);

n:=Ncols(g1);

GT:=Transpose(g1);

DT:=[];

d:=0;

for i:=1 to n do

g:=RowSubmatrix(GT,i); // the ith row of a PGM as a sequence

end for;

case k:

when 1:

DT:=Eltseq(g1);

when 2:

for f:=1 to (n-1) do

for s:=f+1 to n do

m:=Matrix([g[f],g[s]]); // a 2x2 submatrix

d:=Determinant(m); // a 2x2 minor

DT:=Append(DT,d); // collects the minors as a sequence

end for;

end for;

when 3:

for f:=1 to (n-2) do

for s:=f+1 to (n-1) do

for t:= s+1 to n do

Page 159: Parity Check Matrices of Convolutional Codes Over Rings

149

m:=Matrix([g[f],g[s],g[t]]); // a 3x3 submatrix

d:=Determinant(m); // a 3x3 minor

DT:=Append(DT,d); // collects the minors as a sequence

end for;

end for;

end for;

when 4:

for f:=1 to (n-3) do

for s:=f+1 to (n-2) do

for t:= s+1 to n-1 do

for q:=t+1 to n do

m:=Matrix([g[f],g[s],g[t],g[q]]); // a 4x4 submatrix

d:=Determinant(m); // a 4x4 minor

DT:=Append(DT,d); // collects the minors as a sequence

end for;

end for;

end for;

end for;

end case;

return DT;

end function;

// This subroutine will compute for the internal degree

(:=maximum degree among the kxk minors) of a PGM

forward intdeg, IsReduced;

intdeg:=function(g1)

k:=Nrows(g1);

m:=Minors(g1);

intd:=0;

for i:=1 to #m do

if Degree(m[i]) gt intd then

intd:=Degree(m[i]); // gets the maximum degree among

end if; // the kxk minors

end for;

return intd; // the maximum degree as the internal degree of the PGM

Page 160: Parity Check Matrices of Convolutional Codes Over Rings

150

end function;

// This subroutine will compute for the external degree

// (:=overall constraint length) of a PGM

forward extdeg, IsReduced;

extdeg:=function(g1)

k:=Nrows(g1);

rd:=0;

ed:=0;

for i:=1 to k do

g:=RowSubmatrix(g1,i); // the ith row of a PGM as a sequence

rs:=Eltseq(g[i]); // for each row, access each entry by expressing

for j:=1 to #rs do // each row as a sequence

if Degree(rs[j]) gt rd then

rd:=Degree(rs[j]); // the maximum degree among the

end if; // entries in each row

end for;

ed:=ed+rd;

rd:=0;

end for;

return ed; // return the sum of the maximum degrees

end function;

// This subroutine will test for the reducedness of a given PGM

// using the subroutines Minors,intdeg and extdeg.

IsReduced:=function(g1);

k:=Nrows(g1);

n:=Ncols(g1);

intd:=intdeg(g1);

extd:=extdeg(g1);

m:=Minors(g1);

print g1,"is a",k,"x",n,"matrix.";

print "There are",#m, "(",k,"x",k,")-","minors given below.";

print m;

print "The EXTERNAL degree of G(D) is", extd,".";

print "and the INTERNAL degree of G(D) is", intd,".";

if extd eq intd then

Page 161: Parity Check Matrices of Convolutional Codes Over Rings

151

return "Hence the given PGM is REDUCED.";

else

return "Hence the given PGM is NOT REDUCED.";

end if;

end function;

Example A.3

> g4;

[D^2 + D + 1 D^2 + 1]

> IsReduced(g4);

[D^2 + D + 1 D^2 + 1]

is a 1 x 2 matrix.

There are 2 ( 1 x 1 )- minors given below.

[

D^2 + D + 1,

D^2 + 1

]

The EXTERNAL degree of G(D) is 2 .

and the INTERNAL degree of G(D) is 2 .

Hence the given PGM is REDUCED.

> g2;

[ D + 1 D 1]

[ D^2 D^2 + D + 1 1]

> IsReduced(g2);

[ D + 1 D 1]

[ D^2 D^2 + D + 1 1]

is a 2 x 3 matrix.

There are 3 ( 2 x 2 )- minors given below.

[

1,

D^2 + D + 1,

D^2 + 1

]

The EXTERNAL degree of G(D) is 3 .

and the INTERNAL degree of G(D) is 2 .

Hence the given PGM is NOT REDUCED.

Page 162: Parity Check Matrices of Convolutional Codes Over Rings

152

A.4 Checking predictable degree property of a PGM

This program will check whether a PGM satisfies PDP or not. The algorithm

in this program is based on the result of Wittenmark [23]: a k×n PGM

G(D) over R(D) satisfies PDP if [G(D)]h contains a submatrix whose determinant

is a unit in R.

forward rowd, indicatormatrix;

rowd:=function(g)

k:=Nrows(g);

rd:=0;

rowdeg:=[];

for i:=1 to k do

g1:=RowSubmatrix(g,i); // the ith row of a PGM as a sequence

rs:=Eltseq(g1[i]); // for each row, access each entry by

for j:=1 to #rs do // expressing each row as a sequence

if Degree(rs[j]) gt rd then

rd:=Degree(rs[j]); // the maximum degree among the

end if; // entries in each row

end for;

rowdeg:=Append(rowdeg,rd);

rd:=0;

end for;

return rowdeg; // return row degrees

end function;

forward indicatormatrix, HasPDP;

indicatormatrix:=function(g)

c:=CoefficientRing(BaseRing(g));

k:=Nrows(g);

n:=Ncols(g);

seqpdp:=[];

rowdegrees:=rowd(g);

blockrow:=[];

blockg:=[];

Page 163: Parity Check Matrices of Convolutional Codes Over Rings

153

for i:=1 to k do

g1:=RowSubmatrix(g,i); // the ith row of a PGM as a sequence

rs1:=Eltseq(g1[i]);

for j:=1 to n do

if Degree(rs1[j]) ne rowdegrees[i] then

blockrow:=Append(blockrow,0);

else

blockrow:=Append(blockrow,Coefficient(rs1[j],rowdegrees[i]));

end if;

end for;

blockg:=Append(blockg,blockrow);

blockrow:=[];

end for;

indmat:=Matrix(c,k,n,blockg);

return indmat;

end function;

forward minors, HasPDP;

minors:=function(g)

k:=Nrows(g);

n:=Ncols(g);

GT:=Transpose(g);

DT:=[];

for i:=1 to n do

g1:=RowSubmatrix(GT,i);

end for;

case k:

when 1:

DT:=Eltseq(g);

when 2:

for f:=1 to (n-1) do

for s:=f+1 to n do

m:=Matrix([g1[f],g1[s]]); // a 2x2 submatrix

d:=Determinant(m); // a 2x2 minor

DT:=Append(DT,d); // collects the minors as a sequence

Page 164: Parity Check Matrices of Convolutional Codes Over Rings

154

end for;

end for;

when 3:

for f:=1 to (n-2) do

for s:=f+1 to (n-1) do

for t:= s+1 to n do

m:=Matrix([g1[f],g1[s],g1[t]]); // a 3x3 submatrix

d:=Determinant(m); // a 3x3 minor

DT:=Append(DT,d); // collects the minors as a sequence

end for;

end for;

end for;

when 4:

for f:=1 to (n-3) do

for s:=f+1 to (n-2) do

for t:= s+1 to n-1 do

for q:=t+1 to n do

m:=Matrix([g1[f],g1[s],g1[t],g1[q]]); // a 4x4 submatrix

d:=Determinant(m); // a 4x4 minor

DT:=Append(DT,d); // collects the minors as a sequence

end for;

end for;

end for;

end for;

end case;

return DT;

end function;

HasPDP:=function(g);

im:=indicatormatrix(g);

seqminors:=minors(im);

sequnits:=[];

for i:=1 to #seqminors do

if (seqminors[i])*(seqminors[i]) eq 1 then // is there a

sequnits:=Append(sequnits,seqminors[i]); // unit in seqminors?

Page 165: Parity Check Matrices of Convolutional Codes Over Rings

155

end if;

end for;

if sequnits ne [] then

return true;

else

return false;

end if;

end function;

Example A.4

> g1;

[ D + 1 3*D 1]

[ D^2 D^2 + D + 1 1]

> g2;

[ D + 1 D 1]

[ D^2 D^2 + D + 1 1]

> g3;

[ 1 D^2 + D + 1 D^2 + 1 D + 1]

[ D D^2 + D + 1 D^2 1]

> g4;

[D^2 + D + 1 D^2 + 1]

> HasPDP(g1);

false

> HasPDP(g2);

false

> HasPDP(g3);

false

> HasPDP(g4);

true

Page 166: Parity Check Matrices of Convolutional Codes Over Rings

156

A.5 An estimation of the free distance of a code

The subroutines in this program are designed to estimate the free distance

of convolutional codes over Z2 and Z4. The main algorithm in this program

follows the truncation method introduced by Sison [22] (see discussion in

Section 3.3).

EstimateFreeDistance:=function(R,G,L)

P<D>:=PolynomialRing(R);

k:=Nrows(G);

n:=Ncols(G);

mu:=0;

seqrow:=Eltseq(G);

mindistances:=[];

// this part gets the maximum degree (mu) among the entries of a PGM G

for i:=1 to #seqrow do

if seqrow[i] ne 0 then

if mu lt Degree(seqrow[i]) then

mu:=Degree(seqrow[i]);

end if;

end if;

end for;

// Coeffset is the sequence of all coefficients for the truncated

// polynomial inputs of degree <= L-1

if IsField(R) then

coeffset:=[Eltseq(a):a in VectorSpace(R,L)];

else

coeffset:=[Eltseq(a):a in RSpace(R,L)];

end if;

// seqpoly collects all the possible truncated polynomial inputs of

// degree <= L-1

seqpoly:=[];

Page 167: Parity Check Matrices of Convolutional Codes Over Rings

157

for i:=1 to (#R)^L do

p:=P!coeffset[i];

seqpoly:=Append(seqpoly,p);

end for;

// this part will construct the input space (input) over truncated

// polynomial inputs of degree <= L-1

case k:

when 1:

input:=[Matrix(P,1,k,[x]):x in seqpoly];

when 2:

input:=[Matrix(P,1,k,[x1,x2]):x1,x2 in seqpoly];

when 3:

input:=[Matrix(P,1,k,[x1,x2,x3]):x1,x2,x3 in seqpoly];

when 4:

input:=[Matrix(P,1,k,[x1,x2,x3,x4]):x1,x2,x3,x4 in seqpoly];

when 5:

input:=[Matrix(P,1,k,[x1,x2,x3,x4,x5]):x1,x2,x3,x4,x5 in seqpoly];

end case;

// this part will construct the output space (output) using input and G

output:=[];

for i:=1 to #input do

output:=Append(output,input[i]*G);

end for;

// seqbcw collects the block codewords corresponding to the

// ploynomial codewords of degree <= mu+L-1

bcw:=[];

seqbcw:=[];

for h:=1 to #output do

for i:= 0 to (mu+L-1) do

for j:=1 to n do

bcw:=Append(bcw,Coefficient(output[h][1,j],i));

end for;

end for;

seqbcw:=Append(seqbcw,bcw);

bcw:=[];

end for;

Page 168: Parity Check Matrices of Convolutional Codes Over Rings

158

// LBC is a linear block code corresponding to the output space

// of truncated codewords

// LBC is of block length := n*(mu+L) and generated by the

// block codewords in seqbcw

blocklength:=n*mu+n*L;

LBC:=LinearCode<R,blocklength|seqbcw>;

// mindistance is the minimum distance of the linear block code LBC

// the test "if #LBC eq #seqbcw" is for whether C is a

// linear block code or not

if #LBC eq #seqbcw then

if IsField(R) eq true then

mindistance:=MinimumDistance(LBC);

else

mindistance:=MinimumLeeDistance(LBC);

end if;

else

print LBC, "is NOT equal to the code generated by the",

#seqbcw, "block codewords";

end if;

print "A PGM of C is:", G;

print "";

if IsField(R) eq true then

print "The minimum Hamming distance of the truncated code C_L is" ,

mindistance, ",where L is", L,".";

else

print "The minimum Lee distances of the truncated code C_L is" ,

mindistance, ",where L is", L,".";

end if;

print "A block generator matrix of a linear block code corresponding

to C_L is:";

print GeneratorMatrix(LBC); //prints the generator matrix of LBC

Page 169: Parity Check Matrices of Convolutional Codes Over Rings

159

print "Therefore, the estimated free distance of C is";

return mindistance;

end function;

Example A.5

> g4;

[D^2 + D + 1 D^2 + 1]

> EstimateFreeDistance(GF(2),g4,13);

A PGM of C is:

[D^2 + D + 1 D^2 + 1]

The minimum Hamming distance of the truncated code C_L is 5 ,

where L is 13 .

A block generator matrix of a linear block code corresponding

to C_L is:

[1 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 1 1]

[0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 1 1 0 0]

[0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 1 1]

[0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 1 1]

[0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 1 1 0 0]

[0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 1 1]

[0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 0 1 0 1 1]

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 1 1 1 0 0]

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 1 1 1]

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 1 1]

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 0 0]

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1]

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1]

Therefore, the estimated free distance of C is

5

Page 170: Parity Check Matrices of Convolutional Codes Over Rings

160

A.6 For the new examples of encoders of self-dual

convolutional codes

These subroutines will generate a set of 4 × 4 matrices A over F(D) or

ZM [D] such that A−1 = −At. These matrices are used to construct a 4×

8 encoder given by G(D) = (I4, A). Consequently, G(D) satisfies the conditions

of Theorem 5.1. Thus, G(D) is an encoder of a self-dual convolutional

code.

// This function will generate 4x4 matrices A over R[D] s.t.

// A is invertible and A^-1=-A^t.

// We can modify this to an nxn matrices by modifying the subroutine SM.

// Note: For Z_M case, this program is limited for polynomial matrices

// A over Z_M[D].

// For the field case, it can be done up to matrices A with rational entries.

// ***********************************************************//

// This is for the Z_M case.

// This subroutine will compute for the polynomials of degree <= deg.

poly:=function(R,deg)

P<D>:=PolynomialRing(R);

coeffset:=[Eltseq(a):a in RSpace(R,deg+1)];

seqpoly:=[]; //collect the polynomials of degree <= deg

for i:=1 to (#R)^(deg+1) do

p:=P!coeffset[i];

seqpoly:=Append(seqpoly,p);

end for;

return P,seqpoly;

end function;

// ***********************************************************//

Page 171: Parity Check Matrices of Convolutional Codes Over Rings

161

// This is for the field case.

rationals:=function(R,deg)

P:=PolynomialRing(R);

PP<D>:=FieldOfFractions(P);

coeffset:=[Eltseq(a):a in RSpace(R,deg+1)];

seqpoly:=[]; //collect the polynomials of degree <= deg

for i:=1 to (#R)^(deg+1) do

p:=P!coeffset[i];

seqpoly:=Append(seqpoly,p);

end for;

seqrat:= [PP![p,q]:p,q in seqpoly|q ne 0];

u:=[];

for i:=1 to #seqrat do

if seqrat[i] notin u then

u:=Append(u,seqrat[i]);

end if;

end for;

return PP, u; // u is a sequence of unique rational functions over F[D]

end function;

// ***********************************************************//

// This subroutine will form the 4x4 matrices A and save it as

// a sequence in sm.

// As has been observed from the examples of self-dual encoders

// of the form (I,A), the matrix A, in this case, is given by

// a b c d

// -b a e f

// -c e a g

// -d -f -g a

// If R=Z_M, let p,u:=poly(R,L); where p is the polynomial ring R[D]

// and L is the maximum degree of the polynomials in u.

// If R is a field, let p,u=rationals(R,L); where p is the field of

Page 172: Parity Check Matrices of Convolutional Codes Over Rings

162

// rational functions over R[D] and L is the maximum degree of the

// polynomials f1(D) and f2(D) such that f1(D)/f2(D) is in u

// For efficiency of computation, we consider not all the elements in u.

// Instead, we consider a subset of u indexed by the seqeunce I.

// e.g.

I:=[1,2,3];

SM:=function(p,u)

Om:=[];

for a in I do

for b in I do

for c in I do

for d in I do

for e in I do

for f in I do

for g in I do

a4:=Matrix(p,4,4, [u[a],u[b],u[c],u[d],

-u[b],u[a],u[e],u[f],

-u[c],-u[e],u[a],u[g],

-u[d],-u[f],-u[g],u[a]]);

if Determinant(a4) eq 1 then

Om:=Append(Om,a4); // Om collects the matrices (a4)

end if; // whith determinants equal to 1.

end for;

end for;

end for;

end for;

end for;

end for;

end for;

// sm collects the matrices A s.t. A is invertible and A^-1=-A^t

sm:=[x:x in Om|x^-1 eq -Transpose(x)];

return sm;

end function;

// Then we chose from sm a matrix A and augment it to the

Page 173: Parity Check Matrices of Convolutional Codes Over Rings

163

// 4x4 identity matrix I_4 such that a systematic encoder G

// is given by G=(I_4,A).

Example A.6

> p,u:=poly(IntegerRing(4),1);

> p;

Univariate Polynomial Ring in D over IntegerRing(4)

> u;

[

0,

1,

2,

3,

D,

D + 1,

D + 2,

D + 3,

2*D,

2*D + 1,

2*D + 2,

2*D + 3,

3*D,

3*D + 1,

3*D + 2,

3*D + 3

]

> I;

[ 1, 2, 3 ]

> SM(p,u);

[

[1 1 0 1]

[3 1 1 0]

[0 3 1 1]

[3 0 3 1],

[1 1 2 1]

[3 1 1 2]

[2 3 1 1]

[3 2 3 1]

]

Page 174: Parity Check Matrices of Convolutional Codes Over Rings

164

Appendix B

LIST OF SYMBOLS

SYMBOL MEANING PAGE REFERENCE

R ring 13

F field 15

Ru set of all units in R 14

Z ring of integers 15

R field of real numbers 30

ZM ring of integers modulo M 15

Zpr ring of integers modulo pr, p prime, r ∈ Z, r > 0 15

R((D)) ring of Laurent Series 16

R[[D]] ring of formal power series 16

R[D] ring of polynomials 17

R(D) ring of rational functions 18

Rr(D) ring of realizable functions 19

α mod-p reduction map 19

φ extended mod-p reduction map 19

Fn set of all n-tuples over F 21

At transpose of matrix A 24

Page 175: Parity Check Matrices of Convolutional Codes Over Rings

165

SYMBOL MEANING PAGE REFERENCE

det(·) determinant function 24

Rk×n set of all k × n matrices over R 23

U(n,R[D]) set of all n× n unimodular matrices over R[D] 26

wtH(·) Hamming weight function 30

wtL(·) Lee weight function 30

ϕ convolutional transducer/ encoding map 37

[G(D)]h indicator matrix of G(D) 40

νi i-th constraint length of a PGM 40

ν overall constraint length of a PGM 40

µ the highest degree among the minors of a PGM 41

µG maximum degree among the k × k 107minors of a PGM G(D)

µH maximum degree among the k × k 107minors of a PPCM H(D)

νG overall constraint length of a PGM G(D) 108

νH overall constraint length of a PPCM H(D) 108

CI construction of a parity check matrix based 56on Lemma 4.2

CII construction of a parity check matrix based 76on Theorem 4.2

CIII construction of a parity check matrix based 83on Theorem 4.3

G(D) mod p a generator matrix with entries reduced modulo p 118

H(D)t syndrome former of a convolutional code 129


Recommended