Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Erasure Techniques in MRD Codes

2012

W. B. Vasantha Kandasamy Florentin Smarandache R. Sujatha R. S. Raja Durai ZIP PUBLISHING Ohio 2012 This book can be ordered from: Zip Publishing 1313 Chesapeake Ave. Columbus, Ohio 43212, USA Toll Free: (614) 485-0721 E-mail: info@zippublishing.com Website: www.zippublishing.com Copyright 2012 by Zip Publishing and the Authors Peer reviewers: Professor Paul P. Wang, Ph D, Department of Electrical & Computer Engineering, Pratt School of Engineering, Duke University, Durham, NC 27708, USA Prof. Catalin Barbu, V. Alecsandri National College, Mathematics Department, Bacau, Romania Florentin Popescu, Facultatea de Mecanica, University of Craiova, Romania. Many books can be downloaded from the following Digital Library of Science: http://www.gallup.unm.edu/~smarandache/eBooks-otherformats.htm ISBN-13: 978-1-59973-177-3 EAN: 9781599731773 Printed in the United States of America 2 5 7 29 49 3.1 Introduction 3.2 Maximum Rank Distance Codes 3.3 Erasure Decoding of MRD Codes 3 49 51 54 63 4.1 4.2 4.3 4.4 Introduction Error-erasure Decoding Techniques to MRD Codes Invertible q-Cyclic RD Codes Rank Distance Codes With Complementary Duals 4.4.1 MRD Codes With Complementary Duals 4.4.2 The 2-User F-Adder Channel 4.4.3 Coding for the 2-user F-Adder Channel 63 64 83 101 103 106 107 111 5.1 Integer Rank Distance Codes 5.2 Maximum Integer Rank Distance Codes 112 114 129 6.1 Concatenation of Linear Block Codes 6.2 Concatenation of RD Codes With CR-Metric 129 140 153 157 161 4 In this book the authors study the erasure techniques in concatenated Maximum Rank Distance (MRD) codes. The authors for the first time in this book introduce the new notion of concatenation of MRD codes with binary codes, where we take the outer code as the RD code and the binary code as the inner code. The concatenated code consists of the codewords of the outer code expressed in terms of the alphabets of the inner code. These new class of codes are defined as CRM codes. This concatenation techniques helps one to construct any CRM code of desired minimum distance which is not enjoyed by any other class of codes. Also concatenation of several binary codes are introduced using the newly defined notion of special blanks. These codes can be used in bulk transmission of a message into several channels and the completed work is again consolidated and received. Finally the notion of integer rank distance code is introduced. This book is organized into six chapters. The first chapter introduces the basic algebraic structures essential to make this book a self contained one. Algebraic linear codes and their basic properties are discussed in chapter two. In chapter three the authors study the basic properties of erasure decoding in maximum rank distance codes. Some decoding techniques about MRD codes are described and discussed in chapter four of this book. Rank distance codes with complementary duals and MRD codes with complementary duals are 5 introduced and their applications are discussed. Chapter five introduces the notion of integer rank distance codes. The final chapter introduces some concatenation techniques. We thank Dr. K.Kandasamy for proof reading and being extremely supportive. 6 In this chapter we give the basic concepts to make this book a self contained one. Basically we need the notion of vector spaces over finite fields and the notion of irreducible polynomials over finite fields. Also the notion of cosets of groups for error correction is needed. We will briefly recall only those facts, which is essential for a beginner to under stand algebraic coding theory. D EFINITION 1.1: Let G be a non empty set ‘*’ a closed associative binary operation defined on G such that; (i) there exists a unique element e in G with g * e = e * g = g for all g ∈ G. (ii) For every g ∈ G there exists a unique g′ in G such that g * g′ = g′ * g = e; g′ is called the inverse of g in G under the binary operation *. Then (G, *) is defined as a group. 7 If in G for every pair a, b ∈ G; a*b = b*a then we say G is an abelian group. If the number of distinct elements in G is finite then G is said to be a finite group otherwise G is said to be an infinite group. Example 1.1: Z2 = {0, 1} is an additive abelian group given by the following table: + 0 1 0 0 1 1 1 0 Z2 under multiplication is not a group. Example 1.2: (Z3, +) is an abelian group of order 3 given by the following table: + 0 1 2 0 0 1 2 1 1 2 0 2 2 0 1 Example 1.3: (Zn, +), (1 < n < ∞) is an abelian group of order n. Example 1.4: G = Z2 × Z2 × Z2 = {(a, b, c) / a, b, c ∈ Z2} is a group under addition modulo 2. G is of order 8. Example 1.5: Let G = Z2 × Z2 × … × Z2, n times with G = {(x1, x2, …, xn) / xi ∈ Z2; 1 ≤ i ≤ n} is an abelian group under addition modulo 2 of order 2n. Example 1.6: H = Zp × Zp × … × Zp - t times is an abelian group under addition modulo p of order pt. Now we will just define the notion of a subgroup. 8 DEFINITION 1.2: Let (G, *) be a group. H a proper subset of G. If (H, *) is a group then, we call H to be a subgroup of G. Example 1.7: Let G = (Z12, +) be a group. H = {0, 2, 4, 6, 8, 10} ⊆ Z12 under + is a subgroup of G. Example 1.8: Let (Z, +) be a group under addition (Z the set of positive, negative integers with zero) (3Z, +) ⊆ (Z, +) is a subgroup of G. Example 1.9: Let (Q, +) be a group under addition. Q the set of rationals. Q is an abelian group of infinite order. (Z, +) ⊆ (Q, +) is a subgroup, (Z, +) is also of infinite order. (Q, +) has no subgroup of finite order. Example 1.10: Let (R, +) be the group under addition. (R, +) is an infinite abelian group. (R, +) has infinitely many subgroups of infinite order. Example 1.11: Let (R \ {0}, ×) be a group under multiplication of infinite order. Clearly R \ {0} is an abelian group; H = {1, –1} ⊆ R \ {0} is a subgroup of R \ {0} of order two. Example 1.12: G = (Q \ {0}, ×) is an abelian group of infinite order. H = {1, –1} ⊆ (Q \ {0}, ×) is a subgroup of finite order in G. Interested reader can refer and read the classical results on groups [2]. Now we proceed onto define normal subgroup of a group. DEFINITION 1.3: Let (G, *) be a group. (H, *) be a subgroup of G we say, H is a normal subgroup of G if gH = Hg or gHg-1 = H for all g ∈ G. 9 We will illustrate this with examples. First it is important to note that in case of commutative groups every subgroup is normal. We have so far given only examples of groups which are commutative. Example 1.13: Let a b c d G= ad – bc ≠ 0, a, b, c, d ∈ Q+ ∪ {0}}. G is a non commutative group under multiplication of matrices. It is easily verified all subgroups of G are not normal in G, However H = x 0 0 x x ∈ Q+} is a subgroup of G and H is not a normal in G. Also P = x 0 0 x, y ∈ Q + y is a subgroup of G and is P not a normal subgroup of G. We now proceed onto recall the definition of cosets of a group. DEFINITION 1.4: Let G be a group H a subgroup of G. For a ∈ G, aH = {ah | h ∈ H} is defined as the right coset of H in G. We have the following properties to be true. (i) There is a one to one correspondence between any two right cosets of H in G. 10 (ii) In case H is a normal subgroup of G we have the right coset to be equal with the left coset. If H is a normal subgroup of G we can define the quotient group or the factor group of H in G as G/H = {Hb / b ∈ G} = {bH / b ∈ G} (Hb = bH for all b ∈ G}. G/H is a group and if G is finite o (G) / o (H) = o (G/H). Now we proceed onto recall definition of rings and fields. DEFINITION 1.5: Let R be a non empty set with the two binary operations + and ×, such that (i) (R, +) is an abelian group (ii) (R, ×) is such that ‘×’ is a closed operation on R and ‘×’ is an associative binary operation on R (iii) If for all a, b, c ∈ R we have a × (b+c) = a × b + a × c and (b+c) × a = b × a + c × a; then (R, +, ×) is defined to be a ring. If a × b = b × a for all a, b ∈ R, we define R to be a commutative ring. If R contains 1 called the multiplicative identity such that a × 1 = 1 × a = a for all a ∈ R we define R to be a ring with unit. If is important to note that all rings need not be rings with unit. We will give examples of them. 11 Example 1.14: Let R = (Z, +, ×); R is a commutative ring with unit. Example 1.15: Consider Z15; Z15 under modulo addition and modulo multiplication is a commutative ring with unit. Example 1.16: Consider Z2 = {0, 1}; Z2 is a commutative ring with unit. Example 1.17: Let Z3 = {0, 1, 2} be the commutative ring with unit. Example 1.18: Let 3Z = {3n / n ∈ Z}, 3Z be a commutative ring but 3Z does not contain the unit 1. Example 1.19: Let 5Z be the commutative ring, but 5Z is a ring and does not contain the unit. Example 1.20: (Q, +, ×) is a commutative ring with unit. Example 1.21: R = commutative ring with a b a,b,c,d ∈ Z, +, × c d identity 1 0 0 1 is a non under matrix multiplication ×. Example 1.22: Let P = {n × n matrices with entries from Q}, P is a non commutative ring with unit under matrix addition and multiplication. We will now recall the definitions of subrings and ideals of a ring. DEFINITION 1.6: Let (R, +, ×) be a ring. Suppose φ ≠ S ⊆ R be a proper subset of R. If (S, +, ×) is a ring, we define S to be a subring of R. 12 We will illustrate this situation by some examples. Example 1.23: Let R = (Z, +, ×) be a ring; S = (3Z, +, ×) is a subring of R. Example 1.24: Let S = (Z, +, ×) be the ring of integers, P = {12Z, +, ×} is a subring of S. It is important and interesting to note that a subring of S need not in general have the unit however the ring S has unit. This is a marked difference between a subgroup of a group, for a subgroup must contain the identity but a subring need not contain the unit 1 with respect to multiplication. Examples 1.23 and 1.24 give subrings of (Z, +, ×) which do not contain 1, the unit of Z. Example 1.25: Let R = (Q, +, ×) be a ring. (Z, +, ×) is a subring and it contains the unit. However (8Z, +, ×) is also a subring of (Q, +, ×) but (8Z, +, ×) does not contain the unit 1 of R. We have seen subrings of a ring. All rings given are of infinite order except those given in examples 1.15, 1.16 and 1.17. Example 1.26: Let Z30 be the ring. S = {0, 10, 20} ⊆ Z30 is a subring and 1 ∉ S. Example 1.27: Let Z12 be the ring. Consider P = {0, 2, 4, 6, 8, 10}, P is a subring of Z12. P does not contain the unit 1. Example 1.28: Let Z5 be the ring. Z5 has no proper subrings. Only 0 and Z5 are the subrings of Z5. Example 1.29: Let Z8 = {0, 1, 2, 3, …, 7} be a ring. Consider H = {0, 4} ⊆ Z8, H is a subring of Z8 and H does not contain the unit. 13 Example 1.30: Zn = {0, 1, 2, …, n–1} (n < ∞) is the commutative ring with unit having n elements. If n is a prime, Zn has no proper subrings. DEFINITION 1.7: Let R be a ring. H be a subring of R. If for all r ∈ R and h ∈ H; rh ∈ H then we define H to be left ideal. Similarly if for all r ∈ R and h ∈ H, hr ∈ H we define H to be a right ideal. If H is both a left ideal and a right ideal then we define H to be an ideal of R. The following observations are important. (i) If R is a commutative ring the notion of right ideal and left ideal coincides. (ii) If I is an ideal of a ring R then (0) ∈ I. (iii) (0) is called the zero ideal of R. (iv) If I is an ideal of the ring R then 1 the unit of R is not in I. For if 1 ∈ I then I = R. We will now give examples of ideals. Example 1.31: Let (Z, +, ×) be the ring of integers. 2Z is an ideal of Z. Example 1.32: Let (Q, +, ×) be the ring the rationals, Q has no proper ideals. Example 1.33: Let (R, +, ×) be the ring of reals. R has no proper ideals. Example 1.34: Let (Z, +, ×) be the ring of integers, nZ is an ideal of Z for n = 2, 3, …, ∞. 14 Example 1.35: Let Z12 = {0, 1, 2, …, 11} be the ring of integers modulo 12. I = {0, 6} is an ideal of Z12. J = {0, 3, 6, 9} is an ideal of Z12. K = {0, 2, 4, 6, …, 10} is an ideal of Z12. Example 1.36: Let Z7 = {0, 1, 2, …, 6} be the ring of integers modulo 7. Z7 has no proper ideals. Example 1.37: Let Z23 = {0, 1, 2, …, 23} be the ring of integers modulo 23. Z23 has no ideals. a b c d Example 1.38: Let S = a,b,c,d ∈ Z be the ring. Clearly S is a non commutative ring. a 0 b 0 Consider I = a,b ∈ Z ⊆ S. I is only a left ideal of S. For consider a b c d ∈ S and a b x 0 c d y 0 x 0 y 0 x 0 a b y 0 c d x 0 y 0 = = ax + by 0 cx + dy 0 ∈ I for every ∈ I. I is not a right ideal of S for ax bx ya yd ∉ I for any a b c d ∈ S and ∈ I. Thus we see in general in a non commutative ring R a left ideal is not a right ideal of R. 15 Now just like quotient groups we can define quotient rings using two sided ideals of the ring R. Let R be a ring and I a two sided ideal of R. R/I = {a + I / a ∈ R} is a ring defined as the quotient ring of R [2]. We will illustrate this situation by some examples. Example 1.39: Let Z be the ring. I = 2Z is an ideal of Z. Z/2Z=I = {I, 1 + I}. Clearly I acts as the additive identity for Z/I. Since 1 + I + I = 1 + (I+I) = 1 + I, as I is an ideal, I + I = I. Further (1+I) is the unit in Z/I for (1+I) (1+I) = 1+I + 1.I = 1+I. 0 Thus Z/I is a ring and Z/2Z = Z/I is isomorphic with Z2. For I and 1 1+I so Z2 ≅ Z/I = {I, 1+I}. Example 1.40: Let Z be the ring. I = 5Z be the ideal of Z. Z/I = Z/5Z = {I, 1+I, 2+I, 3+I, 4+I} is the quotient ring. Example 1.41: Let Z be the ring. nZ = I be the ideal of Z. Z/I = {I, 1+I, 2+I, …, n–1 + I} is the quotient ring. Example 1.42: Let Z12 be the ring of modulo integers. I = {0, 6} be an ideal of Z12. Z12/I = {I, 1+I, 2+I, 3+I, 4+I, 5+I} is the quotient ring. Now we have seen examples of quotient rings. We proceed onto recall the definition of a field. DEFINITION 1.8: Let (F, +, ×) be such that F is a non empty set. If (i) (F, +) is an abelian group under addition, (ii) {F \ {0}, ×} is an abelian group under multiplication and 16 (iii) if a × (b+c) = ab + ac for all a, b, c ∈ F, then we define F to be a field. If in F we have nx = 0 for all x ∈ F only if n = 0 where n is any positive integer then we say F is a field of characteristic zero. If for some n; nx = 0 for all x ∈ F where n is the smallest such number then we say F is a field of characteristic n. Clearly n will only be a prime. We will now proceed onto give examples of fields. Example 1.43: Let Z5 = {0, 1, 2, 3, 4} be a field and Z5 is a field of characteristic 5. Example 1.44: Let Z43 = {0, 1, 2, …, 42} be a field and is of characteristic 43. Example 1.45: (Q, +, ×) is a field and is a field of characteristic zero. Example 1.46: (R, +, ×) is a field and is of characteristic zero and we see the set of integers, Z is not a field, only a ring. Example 1.47: Z15 is not a field only a ring as 3.5 ≡ 0 (mod 15) so Z15 \ {0} is not a group. It is easily verified that every field is a ring and a ring in general is not a field. We recall the definition of a subfield. DEFINITION 1.9: Let (F, +, ×) be a field. A proper subset P ⊆ F such that if (P, +, ×) is a field, then we define P to be a subfield, of F. If F has no subfield then we call F to be a prime field. We will give examples of prime fields. 17 Example 1.48: Let Q be the field. Q has no proper subfield. Hence Q is the prime field of characteristic zero. Example 1.49: Let (R, +, ×) be the field of reals, R is not a prime field of characteristic zero as (Q, +, ×) ⊆ (R, +, ×) is a proper subfield of R. Example 1.50: Z2 = {0, 1} is the prime field of characteristic two as Z2 has no proper subfields. Example 1.51: Z3 = {0, 1, 2} is the prime field of characteristic three. Z3 has no proper subfields. Example 1.52: Z17 = {0, 1, 2, …, 16} is the prime field of characteristic 17. Example 1.53: Zp = {0, 1, 2, …, p–1} is the prime field of characteristic p, p a prime. Now it is an interesting fact that fields cannot have ideals in them. This work is left as an exercise to the reader [2]. Now we see we do not have non prime fields of finite characteristic p, p a prime; we proceed on to give methods for constructing them. We will recall the definition of polynomial rings. DEFINITION 1.10: Let R be a commutative ring with unit. x an indeterminate; ∞ ai x i ai ∈ R , R[x] = i =0 R[x] under usual polynomial addition and multiplication is a ring called the polynomial ring. R[x] is a again a commutative ring with unit and R ⊆ R[x]. 18 We will give examples of them. Example 1.54: Let R be the field of reals. R[x] is the polynomial ring in the indeterminate x. Clearly R[x] is not a field; R[x] is only a commutative ring with unit. Example 1.55: Let Q be the field of rationals. Q[x] is the polynomial ring. Example 1.56: Let Z2 be the field of characteristic two. Z2[x] is the polynomial ring. Example 1.57: Let Z be the ring of integers. Z[x] is the polynomial ring. Example 1.58: Let Z5 be the field of characteristic five. Z5[x] is the polynomial ring. Example 1.59: Let Z6 be the ring of integers modulo 6. Z6[x] is the polynomial ring. Example 1.60: Z2 [x] is the polynomial ring; let p(x) = x2 + 1 be in Z2[x]; p(x) is reducible in Z2 [x] for p(x) = (x+1)2. Consider q(x) = x2 + x + 1 ∈ Z2[x]; q(x) is irreducible as q(x) cannot be written as the product of polynomials of degree one in Z2[x]. Inview of this we will define the notion of reducible polynomial and irreducible polynomial. Let p(x) ∈ R[x] be a polynomial of degree n in R[x] with coefficients from R. We say p(x) is reducible in R[x] if p(x) = g(x) b(x) where g(x) and b(x) are polynomials in R(x) with deg g(x) < deg p(x) and deg b(x) < deg p(x). 19 If p(x) is not reducible that is p(x) = g(x) b(x) implies deg g(x) = deg p(x) or deg b(x) = deg p(x) then we define p(x) to be irreducible in R[x]. p(x) = x2 + 1 ∈ R[x]; R reals is an irreducible polynomial in R[x]. p (x) = x2 + 1 ∈ Z2 [x] is reducible in Z2 [x] as p(x) = (x+1) (x+1). p(x) = x2 – 4 ∈ R[x] is a reducible polynomial as x – 4 = (x+2) (x–2) where R is the set of reals. 2 p (x) = x2 + q is irreducible polynomial in R[x] where q is a positive value in R, R-reals. We have seen examples of reducible and irreducible polynomials. We first see the concept of reducibility or irreducibility is dependent on the ring or the field over which they are defined. The purpose of these irreducible polynomials is they generate a maximal ideal and this concept will be used in the construction of fields and finite fields. Let Z[x] be the polynomial ring. x2 + 1 is a irreducible polynomial in Z[x]. Let I be the ideal generated by x2 + 1. Thus I = {all polynomials of degree greater than or equal to two} Z[x] = {I, b+I, ax + I, (b + ax) + I / a, b ∈ Z} I = {a + bx + I / a, b ∈ Z}. Suppose we replace Z by Z2 and consider the polynomial ring Z2 [x]; x2 + 1 is a reducible polynomial in Z2 [x]. 20 Let I be the ideal generated by x2 + 1. Consider Z2 [x] = {I, 1 + I, x + I, x + 1 + I} I I acts as the additive identity 1 + I acts as the multiplicative identity. Clearly Z2 [x] is not a field; for I (1 + x + I) (1 + x + I) = (1 + x)2 + I = x2 + 1 + I = I is a zero divisor so Z2 [x] is only a ring. I Now if we consider p(x) = x2 + x + 1 ∈ Z2[x], clearly p(x) is irreducible in Z2[x]. We see Z2 [x] Z [x] = 2 x + x +1 I 2 = {I, 1 + I, x + I, 1 + x + I} where I is the ideal generated by p(x) and I acts as the additive identity. Now 1 + I is the multiplicative identity. Further x + I is the inverse of 1 + x + I. To prove this we must show (x + I) (1 + x + I) = 1 + I. Now (x + I) (1 + x + I) = x (1 + x) + I = x2 + x + I = (x2 + x + 1) + 1 + I = 1 + I as 1 + x + x2 ∈ I. 21 Z2 [x] is a field with four elements and is of I Z [x] is not a prime field of characteristic characteristic two so 2 I Z [x] Z [x] two as P = {I, 1+I} ⊆ 2 is a subfield of 2 . I I Thus Now based on this we give the following facts interested reader can refer [2]. Let Zp[x] be a polynomial ring with coefficients from the field Zp, p a prime. p (x) ∈ Zp[x] be a polynomial of degree n. Suppose p(x) is irreducible over Zp and I be the ideal generated by p (x). Zp [x] is a field and this field has pn elements in it and I its characteristic is p. Now Thus this method gives one the way of constructing non prime fields of characteristic p. Suppose V = Z2 [x] I = x3 + x + 1 = {I, 1 + I, x + I, x2 + I, 1 + x + I, 1 + x2 + I, x + x2 + I, 1 + x + x2 + I}. Z2 [x] is a field of characteristic two and V has 23 I elements and the irreducible polynomial x3 + x + 1 is of degree 3 so V has 23 elements in it. Suppose p(x) = x3 + 1, clearly p(x) is reducible in Z2[x] for x3 + 1 = (x + 1) (x2 + x + 1). V = 22 Z2 [x] Z2 [x] = = V = {I, 1 + I, x + I, x2 + I, p(x) I 1 + x + I, 1 + x2 + I, x + x2 + I, 1 + x + x2 + I}. V is not a field for V has zero divisors. I is the additive identity or zero in V. Consider 1 + x + I, 1 + x + x2 + I in V. (1+x+I) (1+ x2+x) = I (using the fact I is an ideal of Z2 [x] so (x+1) I = I and (1+x+x2)I = I and I + I + I). Consider (1 + x) (1 + x2 + x) + I = 1 + x2 + x + x + x2 + x3 + I = 1 + x3 + I (as 2x = 0 and 2x2 = 0) = I as 1 + x3 ∈ I. Thus V has zero divisors; so V is not a field only a ring as p(x) is a reducible polynomial. Thus we wish to make a mention that the ideals generated by a single element will be known as principal ideals. Also we expect the reader to be familiar with the notion of minimal ideals, maximal ideals and prime ideals. However we just give some examples of them. Example 1.61: Let Z12 = {0, 1, 2, …, 11} be the ring of modulo integers. Consider I = {0, 2, 4, 6, 8, 10} ⊆ Z12 to be a maximal ideal of Z12. Take J = {0, 6} ⊆ Z12, J is a minimal ideal of Z12. However K = {0, 3, 6, 9} ⊆ Z12 is also a maximal ideal. T = {0, 4, 8} ⊆ Z12 is also a minimal ideal of Z12. Thus a ring can have many maximal ideals and many minimal ideals. However we show a ring which has no minimal ideals. Example 1.62: Let Z be the ring of integers. Z has several maximal ideals, pZ is a maximal ideal where p is a prime. 23 For all primes p we obtain an infinite collection of maximal ideals. However Z has no minimal ideal but it has infinite number of ideals which are neither maximal nor minimal. For nZ when n is a non prime is neither a maximal nor a minimal ideal. 2Z, 5Z, 3Z, 7Z, 11Z are maximal ideals. When R is a commutative ring with unit and I a maximal ideal of R; then R / I is a field. This property is used in the construction of finite fields of desired order. We consider Zp[x]; p a prime Zp[x], the polynomial ring. I be the ideal generated by an irreducible polynomial p(x); then Zp [x] I is a field. If p(x) is of degree n then Zp [x] / I is a field of order Z np . Thus this method helps us in generating finite fields which are not prime. We will give some examples. Example 1.63: Let Z5 [x] be the polynomial ring. Consider p(x) = x2 + x + 1 in Z5[x]. p(x) is irreducible in Z5[x]. Let I be the ideal generated by p(x). Now Z5[x] / I = {I, 1 + I, 2 + I, 3 + I, 4 + I, x + I, 2x + I, 3x + I, 4x + I, 1 + x + I, 2x + 3 + I, …, 4x + 4 + I}. It is easily verified Z5[x] / I is a field with 25 elements in it. 24 However Z5 [x] / I is not a prime field for it has a subfield {I, 1 + I, 2 + I, 3 + I, 4 + I} ≅ Z5. But characteristic of the field Z5 [x] / I is five. Now if we take p(x) = x2 + 2x + 2, we see p(x) is a reducible polynomial in Z5[x]. For (x + 3) (x + 4) = x2 + 2x + 2. So –3, –4 or 1, 2 are the roots of p(x). Z5[x] / I = p(x) = {I, 1 + I, 2 + I, …, x + 3 + I, x + 4 + I} is not a field only a commutative ring with unit 1 + I. For consider x + 3 + I and x + 4 + I in Z5[x] / I. (x + 3 + I) (x + 4 + I) = (x + 3) (x + 4) + I = x2 + 2x + 2 + I = I. (I is the zero element in Z5[x] / I). Hence Z5 [x] / I cannot be a field. Likewise we can create fields or rings of finite order. Notation: If p(x) = a0 + a1x + … + anxn then p(x) has a representation in n + 1 tuples given by (a0, a1, …, an), ai’s are coefficients using which the polynomial ring R[x] is defined and p(x) ∈ R[x]. Now we just recall the definition of a primitive polynomial. A polynomial p(x) = a0 + a1x + … + anxn in R[x] is said to be a primitive polynomial (where a0, a1, …, an are integers) if the greatest common divisor of a0, a1, …, an is 1. We will use this concept also in the construction of linear codes. Now we proceed onto recall the definition of vector space as we associate or define the algebraic code as a subspace of a vector space. 25 DEFINITION 1.11: Let V be an additive abelian group. F a field. We say V is a vector space over the field F if the following conditions are true. (1) For every v ∈ V and a ∈ F we have av and va are in V (av = va and conventionally we write as av a is called the scalar and v a vector). (2) a (v1 + v2 ) = av1 + av2 . (3) (a+b) v = av + bv. (4) a (bv) = (ab) v. (5) 1.v = v for all a, b ∈ F and v1, v2, v ∈ V and 0.v = 0 ∈ V. (Here 1 represents the unit element of F). We give examples of vector spaces. Example 1.64: Let V = Z2 × Z2 × Z2 × Z2 be a group under addition, V is a vector space over the field Z2. Example 1.65: Let V = Q[x] be an additive abelian group. V is a vector space over the field Q. Example 1.66: Let V = Z2[x], polynomial group under addition. V is a vector space over Z2. We recall the definition of a vector subspace of a vector space. DEFINITION 1.12: Let V be a vector space over the field F. W ⊆ V be a proper subset of V. If W itself is a vector space over the field F then we call W to be vector subspace of V over the field F. We will illustrate this situation by some examples. 26 Example 1.67: Let V = Z2 × Z2 × Z2 × Z2 be a vector space over the field Z2. Consider W = {Z2 × {0} × Z2 × {0}} ⊆ V; W is a vector subspace of V over Z2. Example 1.68: Let V = Q[x] be the vector space over Q. Consider ∞ P= a i x 2i a i ∈ Q ⊆ V; i=0 P is a vector subspace of V over Q. Example 1.69: Let V = Q × Q × Q × Q × Q × Q be a vector space over Q. Consider W = Q × {0} × Q × {0} × Q × Q ⊆ V; W is a vector subspace of V over Q. Example 1.70: Let V = R × R × R × R × R be a vector space over Q. Consider W = Q × Q × Q × Q × Q ⊆ R × R × R × R × R; W is a vector subspace of V over Q. Now the reader is expected to recall the definition of basis and dimension of a vector space [2, 16]. We will be using only finite dimensional vector spaces that too defined over the finite field. Infact we will be mainly using the field Z2 or Z n2 of order 2n and of characteristic two; denoted by GF(2n) as most of the messages transmitted are binary, it is sufficient to study over Z2 or GF(2n). Now we just recall the definition of Hamming distance and Hamming weight in vector spaces. We say for any two vectors v1 = (x1, …, xn) and v2 = (y1, …,yn); v1 and v2 ∈ V = F × … × F; n-times where F is a field and V is a vector space over F. The Hamming distance between 27 v1 and v2 denoted by d (v1, v2) = number of places in which v1 is different from v2. For instance if v1 = (1 0 0 1 0 0 1) and v2 = (0 1 1 1 0 0 1) then the Hamming distance between v1 and v2 denoted by d (v1, v2) = 3. Now Hamming weight x of a vector in V is the distance of x from the zero vector. Thus Hamming weight of x is the number of non zero co ordinates in the vector x, thus d(x, 0) = w(x) = number of non zero coordinates in x. Thus if x = (1 0 1 0 1 0 0 1 1 1) be a vector in V then w(x) = d (x, 0) = 6. Now having defined Hamming weight and Hamming distance we now proceed onto define linear codes and illustrate them with examples in chapter two. 28 In this chapter we recall the definition of algebraic linear codes and discuss the various properties associated with them. We give examples and define several types of codes. Let x = (x1, x2, …, xn) where xi ∈Fq, where Fq is a finite field. (q, a power of a prime). In x the first k symbols are taken as message symbols and the remaining n – k elements xk+1, xk+2, …, xn are check symbols (or control symbols). x = (x1, …, xn) is defined as the code word and it can be denoted by (x1, …, xn) or x1 x2 … xn or x1, x2 , …, xn. We will now roughly indicate how messages go through the system starting from the sender (Information source). 29 Information Source Source Encoder u Channel Encoder v Modulator (writing unit) Channel Destination Source Decoder u Channel Decoder Noise r Demodulator We shall consider senders with finite number of discrete signals (telegraph) in contrast to continuous sources (examples radio). Further the signals emanating from the source cannot be transmitted directly by the channel. For instance, a binary channel cannot transmit words in the usual latin alphabet. Encoder performs the important work of data reduction and suitably transforms the message into usable form. Thus there is a difference between the source encoding and the channel encoding. The former reduces the message to its essential parts and the latter adds redundant information to enable detection and correction of possible errors in the transmission. Also the channel decoding and the source decoding are distinct for they invert the corresponding channel and source encoding besides detecting and correcting error. The main aim of coding theory is to formulate techniques for transmitting message, free of errors, at a less cost and with a great speed. However in few cases the possibility of repeating messages is acceptable; in some cases repeating messages is impossible; like in case of taking picture of planets or Mars or Moon where there is a steady motion of the unmanned machine. In these cases repetition is impossible and also the cost is very high so high accuracy is expected with minimum or no error. As repeating the message is also time consuming besides being costly. 30 We want to find efficient algebraic methods to improve the realiability of the transmission of messages. In this chapter we give only simple coding and decoding algorithms which can be easily understood by a beginner. Binary symmetric channel is an illustration of a model for a transmission channel. Now we will proceed onto define a linear code algebraically. Let x = (x1 … xn) be a code word with k message symbols and n–k check symbols or control symbols. We know the message symbols are from Fq, to determine the check symbols. We obtain the check symbols from the message symbols in such a way that the code words x satisfy the system of linear equations. Hxt = (0), where H is the given n – k × n matrix with elements from Fq. The standard form for H is (A, In–k) with A an n – k × k matrix and In–k the n – k × n – k identity matrix. The set of all n-dimensional vectors x = (x1, …, xn) satisfying Hxt = (0) over Fq is called a linear (block) code C over Fq of block length n. The matrix H is called the parity check matrix of the linear (n,k) code C. If q = 2 then we call C a binary code. k/n is called transmission (or information) rate. Since C under addition is a group we call C as a group code. Also C can be defined as the null space of the matrix H. We will first illustrate this situation by some examples. Example 2.1: Let q = 2, n = 7 and k = 4 and C be a C(7, 4) code with entries from Z2. The message a1, a2, a3, a4 is encoded as the 31 code word x = a1 a2 a3 a4 x5 x6 x7. Here the check symbols are x5 x6 x7, such that for the given parity check matrix 0 0 1 0 1 1 1 H= 0 1 0 1 1 1 0 , 1 0 1 1 1 0 0 with the set of message symbols from Z42 the code words are given by 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 . 1 0 1 1 To find C. C = {x ∈ Z 27 / Hxt = (0)}. Hence | C | = 24 = 16. 0 0 1 0 1 1 1 t Hx = 0 1 0 1 1 1 0 (x1 x2 x3 x4 a5 a6 a7)t =(0) 1 0 1 1 1 0 0 gives C= {0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 1 1 1 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 1 0 0 0 1 1 0 1 1 1 1 0 0 1 1 0 1 1 1 0 0 0 1 1 0 0 1 0 1 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1} Example 2.2: Take n = 7, k = 4 and q = 2. To construct the C(7, 4) code using the parity check matrix 32 1 1 1 0 1 0 0 H= 0 1 1 1 0 1 0 . 0 0 1 1 1 0 1 C = {HxT = (0) where x ∈ Z42 }. C = {0 0 0 0 0 0 0, 1 0 0 0 1 0 1, 0 1 0 0 1 1 1, 0 0 1 0 1 1 0, 0 0 0 1 0 1 1, 1 1 0 0 0 1 0, 1 0 1 0 0 1 1, 1 0 0 1 1 1 0, 0 1 1 0 0 0 1, 0 0 1 1 1 0 1, 0 1 0 1 1 0 0, 1 1 1 0 1 0 0, 1 1 0 1 0 0 1, 1 0 1 1 0 0 0, 0 1 1 1 0 1 0, 1 1 1 1 1 1 1}. We see the two codes given in examples 2.1 and 2.2 are C(7, 4) codes but they are different as their parity check matrices are different. Further both the codes have the same set of message symbols. Example 2.3: Let C be a (4, 2) code given by the parity check matrix 1 1 1 0 H= . 0 1 0 1 C = {x ∈ Z 24 / Hxt = (0)}. = {0 0 0 0, 1 0 1 0, 0 1 1 1, 1 1 0 1}. Suppose we consider the (4, 2) code using another parity check matrix. H1 = 1 0 1 0 1 1 0 1 we get C = {x ∈ Z 24 / H1xt = (0)}. = {0 0 0 0, 1 0 1 1, 0 1 0 1, 1 1 1 0}. 33 We see both the codes are different though they have the same set of message symbols. We now recall how the repetition code is constructed and the parity check matrix associated with it. If each code word of a code consists of only one message symbol x1 ∈ Z2 and n–1 check symbols a2 = a3 = … = an are all equal to x1 (x1 is repeated n–1 times). Thus we obtain a binary (n, 1) code with parity check matrix; H= 1 1 0 ... 0 1 0 1 ... 0 . 1 0 0 ... 1 There are only two code words in this code namely (0 0 … 0) and (1 1 … 1). This code is used when it impossible and impracticable or too costly to send original message more than once, like transmission of information from space crafts or satellites where it is impossible to use ARQ protocols owing to time limitations. Moving space crafts which takes photos of heavenly bodies is an example where this code can be used. Example 2.4: Let C(5, 1) be a binary code obtained from the parity check matrix; H= 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 . The two code words are 1 1 1 1 1 1 0 0 0 1 and 0 0 0 0 0. Now we proceed onto describe the parity-check code. 34 Parity check code is a (n, n–1) code where we have n–1 message symbols and one check symbol. The parity check matrix is H = (1 1 … 1). Each code word has only one check symbol and H has only even number of ones. These codes are used in banking where the last digit of the account number, usually is a control digit. Example 2.5: Let H = (1 1 1 1 1 1) be the parity check code. C is a (6, 5) code and C ={0 0 0 0 0 0 100001 100100 010010 001010 000101 111010 110101 101101 010111 011101 111111 101000 011000 010001 001001 000011 111001 110011 101011 001111 0 1 1 1 1 0} 110000 100010 010100 001100 000110 111100 110110 101110 100111 101110 is code associated with the parity check matrix H. Now we will proceed onto describe the canonical generator matrix of a linear (n, k) code. Suppose H = (A, In–k) is the parity check matrix associated with the (n, k) code then the generator matrix G = (Ik – At) is such that GHT = (0). Further every code word x = (x1, …, xn) = (a1, …, ak) G. We will now describe this situation by some examples. 35 0 1 1 0 1 0 0 Example 2.6: Let H = 1 0 0 1 0 1 0 be a parity 0 1 1 1 0 0 1 check matrix of a C(7, 4) code. The generator matrix G associated with this (7, 4) code with the parity check matrix H is given by G= 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 . 0 0 0 1 0 1 1 Now using the message symbols from Z42 we get the following code words generated by G. C = {0 0 0 0 0 0 0, 1 0 0 0 0 1 0, 0 1 0 0 1 0 1, 0 0 1 0 1 0 1, 0 0 0 1 0 1 1, 1 1 0 0 1 1 1, 1 0 1 0 1 0 1, 1 0 0 1 0 0 1, 0 1 1 0 0 0 0, 0 1 0 1 1 1 0, 0 0 1 1 1 1 0, 1 1 1 0 0 1 0, 0 1 1 1 0 1 1, 1 1 0 1 1 0 0, 1 0 1 1 1 0 0, 1 1 1 1 0 0 1}. Example 2.7: Let H = 1 0 1 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 be parity check 0 1 0 0 0 0 1 matrix associated with a C = C(7, 3) code. The associated generator matrix 1 0 0 1 0 1 0 G= 0 1 0 0 1 1 1 . 0 0 1 1 1 1 0 36 Now we generate the code, C = {0 0 0 0 0 0 0, 1 0 0 1 0 1 0, 0 1 0 0 1 1 1, 0 0 1 1 1 1 0, 1 0 1 0 1 0 0, 0 1 1 1 0 0 1, 1 1 0 1 1 0 1, 1 1 1 0 0 1 1} is the code generated by G. 1 0 1 0 0 1 1 1 1 0 0 1 0 1 0 T Consider GH = 0 1 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 = 0 0 0 0 . 0 0 0 0 Having seen the generator matrix and parity check matrix of a code we now proceed onto analyse the nature of the generator matrix. A generator matrix G for a linear code C is a k × n matrix for which the rows are a basis of C. Now a natural question would be what is the purpose of the parity check matrix H. We see the parity check matrix serves as the fastest means to detect errors. So error detection is done by the parity check matrix. Suppose y is the received code word then find S(y) = HyT, S (y) is defined as the syndrome. If S(y) = (0) we say no error and accept y as the correct received word. If S(y) ≠ (0) we declare error has occurred. Thus the parity check matrix helps in detecting the error in the received word. So error detection is not a very difficult task as far as coding is 37 concerned. However it is pertinent to mention that when S(y) = 0, y is a code word, it need not be the transmitted code word. In certain cases when the error pattern e is identical to a non zero code word, y is the sum of two code words which is a code word so HyT = (0). These errors are not detectable. We accept them as a correct transmitted message. Thus we have 2k – 1 non zero code words which can lead to undetectable errors, so we have 2k – 1 undetectable error patterns. Now the real problem lies in correcting the error. We will just describe the coset leader method which is used to correct errors. Once the error is detected, we know every code C is a subspace of the vector space Fqn where Fqn is defined over Fq. The factor space Fqn / C consists of all cosets a + C = {a + x | x ∈ C} for any a ∈ Fqn . Clearly each coset contains qk vectors as C has 2k elements in it. Since a coset is either disjoint or identical we get a partition on Fqn so Fqn = C ∪ (a1 + C) ∪ … ∪ (at + C) for t = qn–k –1. If a vector y is received then y must be an element of one of these cosets say ai + C. If the code word x1 has been transmitted then the error vector e = y – x1 ∈ a1 + C – x1 = a1 + C. Thus we quote the decoding rule [16]. If a vector y is received then the possible error vectors e are the vectors in the coset containing y. The most likely error is the vector with minimum weight in the coset of y. Thus y is decoded as = y – e . The vector of minimum weight in a coset is called the coset leader. If there are several coset leaders arbitrarily choose any one of them. Let a(1), a(2) , …, a(t) be the coset leaders. We have the following table. 38 k x(1) = 0 a(1) + x(1) x(2) a(1) + x(2) … x (q ) } code words in C. k … a(1) + x (q ) } other cosets a(t) + x(t) a(t) + x(2) … a(t) + x (q ) } other cosets k coset leaders If a vector y is received then we have to find y in the table. Let y = a(i) + x, then the decoder decides that the error e is the coset leader a(i). Thus y is decoded as the code word x = y – e = x(i). The code word x occurs as the first element in the column of y. The coset of y can be found by evaluating the so called syndrome. We will illustrate this situation by an example. Example 2.8: Let C be a binary linear (4, 2) code with the generator matrix G= H= 1 0 1 0 and parity check matrix 0 1 1 1 1 1 1 0 0 1 0 1 . The corresponding coset table is Message symbols Code words Other cosets 00 0000 1000 0100 0001 Coset leaders 10 1010 0010 1110 1011 39 01 0111 1111 0011 0110 11 1101 0101 1001 1100 If y = 1 1 1 1 is received then S (y) = 1 1 1 0 1 1 0 1 0 1 1 = (1 0). 1 Thus error e = 1 0 0 0 and y is decoded as x = y – e = 0 1 1 1 and the corresponding message is 0 1. Now we will proceed onto define cyclic codes. We say a code word v in C (C a k dimensional subspace of F ) is a cyclic code if v = (v1 … vn) is in C then (vn v1 … vn-1) n q is in C. We generate cyclic codes using polynomial called the generator polynomial of a cyclic code. If g = g0 + g1x + … + gmxm is a generator polynomial then g / xn – 1 and deg g = m < n. Let C be a linear (n, k) code with k = n–m defined by the generator matrix; G= g0 g1 ... gm 0 ... 0 0 g 0 ... g m −1 g m ... 0 0 ... ... ... g m g0 g1 = g xg . xg k −1 Then C is cyclic. The rows of G are linearly independent and rank G = k, the dimension of C. If xn – 1 = g1 … gt is a complete factorization of xn – 1 into irreducible polynomials over Fq then the cyclic codes (gi) generated by polynomials gi are called maximal cyclic codes. 40 A maximal cyclic code is a maximal ideal in Fq [x] xn −1 . If g is the polynomial that generates the cyclic code C then h = xn–1 / g is defined as the check polynomial of C. Thus if h = Σ hi xi, hk ≠ 0 then the parity check matrix associated with the cyclic code C is given by H= 0 0 ... 0 . 0 . ... h k . . hk 0 h k −1 ... h 0 hk ... h1 h k −1 ... h 0 . . . 0 ... 0 h0 0 . . 0 We will illustrate this situation by an example. Example 2.9: Let C = C (7, 4) be a code of length 7 with 4 message symbols and q = 2. Suppose g(x) = x3 + x + 1 be the generator polynomial of the cyclic code C. The check polynomial of the cyclic code C is h = x7–1 / g = x4 + x2 + x + 1. Now the generator matrix G= 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 and the parity check matrix of this cyclic code is 41 0 0 1 0 1 1 1 H= 0 1 0 1 1 1 0 . 1 0 1 1 1 0 0 Now we can generate the cyclic code using G. aG = x where a is the message from Z42 and x the resulting code word of C. We have referred and information are from [1, 16]. Now we proceed onto just recall the definition of rank distance codes and give some of the properties related with them. Error detection, error correction for these linear block codes can be found in [1, 6, 16, 18]. However the erasure techniques for these codes are very meagre hence we just describe the erasure techniques in these codes. When the code symbols are from the Galois field GF(2n) of an arbitrary dimension the function of the modulator is to match the encoder output to the signals of the transmission channel. The modulator accepts the binary encoded symbols and produces wave forms or signals appropriate to the physical transmission medium. At the receiving end of the communication link, the demodulator operates on the signals received from a separate transmission symbol interval or a set of elements in {0, 1}. The demodulator is designed to make a definite decision for each received symbol 0 or 1. The definition of a channel includes the modulator, the demodulator and all intervening transmission equipment and media. Most of them are discrete memoryless channel. The assumption is made in that the output symbol at any instant of time depends statistically only on the input symbol at that time. 42 The coding system is described by the following figure. Sender ↓ message encoder ↓ modulator ↓ channel ↓ demodulator ↓ decoder ↓ corrected message receiver This simple model [20] is known as the binary symmetric channel and is described in the following figure. In this model the modulator input x has value 0 or 1 and the demodulator output y has value 0 or 1. When 0 is transmitted and 1 is received the error probability is p. When 0 is transmitted and 0 is received the probability is 1 – p. Similarly when 1 is transmitted and 0 is received the probability is p and when 1 is transmitted and 1 is received the probability is 1 – p. This model can be described simply as a binary-input and binary-output model. •0 •0 0• p •1 •0 1–p •1 1• 43 •1 •0 •0 0• •1 1• •0 p •1 •1 1–p 0• •0 1• •1 Binary symmetric channel When erasure occurs [20] has studied the binary symmetric erasure channel. This channel model is depicted in the following figure which includes a symmetric transmission from either input symbol to an output symbol labeled ‘?’ to denote ambiguity. Now when an input symbol is sent we have the three possibilities. (i) (ii) (iii) The correct output is received. An erroneous output is received. The demodulator is unable to decide, the result is a blank space, that is ambiguous. •0 •0 •0 •? 0• •1 1• p •? p •1 44 •1 • 0 •0 q •0 •? 0• •? q •1 •1 1–p–q •0 1• •1 • 0 •0 •? 0• •? 1–p–q •1 •1 1• •1 •0 0 • •? 1 • •1 Binary symmetric erasure channel Here when the received signal is very weak the demodulator does not give an output. That is the output corresponding to that particular input is erased and the blank space is left out. Here we assume when 0 is transmitted and the demodulator does not give an output and the probability of that is q when 0 is transmitted and 0 is received the probability is 1 – p – q. Similarly when 1 is transmitted and the demodulator does not 45 give a output the probability is q. When 1 is transmitted and the modulator does not give an output the probability is p. When 1 is transmitted and 1 is received the probability is 1 – p – q. The outputs that are erased by the demodulator are called erasures or blank spaces [6-8]. Thus when erasures are present in the received code word those coordinates received in the code word would be blank spaces. The study of properties of erasures out weighs the study of properties of errors in a code as we are sure of the number of errors that has occurred by counting the number of blank spaces (erasures) and we are also aware of their locations as they are blank during the transmission process. But if are to study only errors we may not completely be certain of the number of errors occurred during the transmission, for instance when a message is sent and the received message is also a code word different from the sent message, we may not be able to determine it as error but in case of erasures it may be blank. Another advantage of erasure techniques over the study of error is that even a lay man can guess that the received message is an erroneous one. Also we can say whether the original message is retrievable or not. The study of erasures in case of Hamming metric has been widely studied by [21-2] and [6-8]. We would be defining the new notion of “blanks” which are not erasures. These ‘blanks’ will be known as “special blanks” and we will not be using the notion of erasure decoding we use only the error decoding technique. We will use this “special blank” notion in the last chapter of this book where we will be using them in concatenation of linear coding with Hamming metric defined on it. Now refer Gabidulin for the notion of rank distance codes. 46 DEFINITION 2.1: Let X n be a n-dimensional vector space over the field GF(2N). Let u1, u2, …, un be a fixed basis for X n over GF(2N). Then any element x ∈ X n can be represented as a ntuple (x1, x2, …, xn) where xi ∈ GF(2N) (1 ≤ i ≤ n). GF(2N) is a vector space of dimension N over GF(2). Let v1, v2, …, vN be a fixed basis for GF(2N) over GF(2). Then any element xi ∈ GF(2N) can be uniquely represented in the form of a N-tuple (m1i, m2i, …, mNi), M Nn denote the ensemble of all (N × n) matrices with elements from GF(2). Consider the bijection M : Xn → M nN defined by the following condition for any vector x = (x1, x2, …, xn) ∈ Xn; the associated matrix; M (x) = m11 m12 ... m1n m21 m22 ... m2 n mN 1 mN 2 ... mNn where the ith column represents the ith coordinate xi of x over GF(2). The rank of a vector x ∈ Xn over GF(2) is defined as the rank of the matrix M(x) over GF(2). Let r(x) denote the rank of the vector x ∈ Xn over GF(2). By the properties of the rank of a matrix the mapping x → r(x) defines a norm on Xn; called the rank norm. Let Xn be a vector space of dimension n over GF(2n) equipped with the rank norm. Clearly the rank norm induces a metric defined as the rank metric (rank distance) on Xn and is denoted by dR. For x, y ∈ Xn, the rank distance between x and y is dR(x, y) = r (x–y). A vector space Xn over GF(2n) such that n ≤ N equipped with the rank metric dR is defined as a rank distance space. So if Xn is a rank distance space, a linear (n, k) 47 rank distance code is a linear subspace of dimension k in the rank distance space Xn and is denoted by C. A generator matrix G of C is a k × n matrix with entries from GF(2N) whose rows form a basis for C. Then a (n – k) × n matrix H with entries from GF(2N) such that GHT = (0) is called the parity check matrix of C where (0) denotes a k × n – k zero matrix. Suppose C is a (n, k) rank distance code with generator matrix G and parity check matrix H then C is the row space of G or the null space of H. We have minimum distance of C defined as d = min {r(x – y) : x, y ∈ C; x ≠ y}. C is a k dimensional subspace of the rank distance space Xn, if x, y ∈ C then x – y ∈ C. Hence d the minimum distance, d = min {r(x) | x ∈ C; x ≠ 0}. The notion of maximum rank and the erasure techniques would be studied in the following chapters. 48 This chapter has three sections. Section one is introductory in nature. In section two we describe the class of MRD codes as given by E.M. Gabidulin [9]. In section three we discuss the systematic guessing process or filling up of the blank spaces in case of erasures for MRD codes [17, 29, 32]. Algebraic coding theory is required in communication systems to combat the errors that occur during transmission. In many communication systems, it is often convenient to represent the set of signals to be transmitted as a higher dimensional Galois field. There are many reasons to do so. One is that it makes it possible to visualize the signals by means of vectors, which in turn has the advantage of recognizing the relationship among various types of signals that is to be considered. Secondly, the length of the message will be very much reduced resulting an increase in the rate of transmission. Here the set of basic signals will be represented by a prime Galois field GF(p) and all the possible linear combinations of 49 the basic signals will be represented by a higher dimensional Galois field, GF(pn). When the code symbols are from a higher dimensional Galois field the function of the modulator is to match the encoder output to the transmission channel. A definition of a channel generally includes the modulator, the demodulator and all the intervening transmission equipment and media. In this model in certain situations, for example when the received signal is very weak the demodulator does not give an output. That is, the output corresponding to that particular input is erased and a black space of left out. The outputs that are erased by the demodulator are called erasures or blank spaces. Hence the events in which the demodulator does not give a output when the evidence does not clearly indicate one signal as the most probable are called erasures. Hence when erasures are present in the received vector those coordinates in the received vector will be blank spaces. Erasure decoding in case of Hamming metric has been widely studied by W.W. Peterson [21-2], David Forney [6-8]. Here we obtain a method of erasure decoding for the class of MRD codes when the minimum distance is same as the length of the code. The error correcting capability of the MRD code depends on the minimum distance and greater the minimum distance greater the error correcting capability. In this chapter the minimum distance of the MRD code is equal to its length. By making use of this systematic guessing process an erasure or blank space can be regarded as an error which can either be detected or corrected by making use of the decoding algorithm for MRD codes. We have proved that a MRD code of length n, dimension 1 and minimum distance n = 2t + 1 can correct atmost t erasures and detect more than t erasures. We have obtained the number of ways in which a particular erasure can be chosen during the guessing process and we have established that the result is unaffected by various choices for the erasures available during the guessing process at each stage. 50 Also the method of erasure decoding is illustrated through an example. Maximum Rank Distance (MRD) codes are a class of codes which are analogs of generalized Reed-Solomon codes [26]. MRD codes are codes of length n < N defined over GF(2N) equipped with the rank metric. Suppose Xn is a n-dimensional vector space over the field GF(2N). Let u1, u2, …, un be a fixed basis for Xn over GF(2N). Then any element x ∈ Xn can be represented as an n-tuple (x1, x2, …, xn) where xi ∈ GF(2N). GF(2N) is a vector space of dimension N over GF(2). Let v1, v2, …, vN be a fixed basis for GF(2N) over GF(2). Then any element xi ∈ GF(2N) can be uniquely represented in the form of a N-tuple (a1i, a2i, …, aNi). Let A nN denote the ensemble of all (N × n) matrices with elements from GF(2). Consider the bijection A : Xn → A nN defined by the following rule: For any vector x = (x1, x2, …, xn) ∈ Xn the associated matrix A(x) = a11 a12 ... a1n a 21 a 22 ... a 2n (3.2.1) a N1 a N 2 ... a Nn where the ith column represents the ith coordinate ‘xi’ of ‘x’ over GF(2). We recall some of the basic definition from [9, 29, 30, 32]. DEFINITION 3.2.1: The rank of a vector x ∈ X n over GF(2) is defined as the rank of the matrix A(x) over GF(2). In other words the rank of a vector x ∈ X n is the maximum number of 51 columns that are linearly independent over GF(2) in the associated matrix A(x) of the vector x. Let r(x) denote the rank of the vector x ∈ X n over GF(2). By the properties of the rank of a matrix the mapping x r (x) specifies a norm on Xn and is called the rank norm. DEFINITION 3.2.2: Let X n be a vector space of dimension n over GF(2N) equipped with rank norm. The rank norm induces a metric defined as the rank metric (rank distance) on X n and is denoted by dR. For x, y ∈ X n the rank distance between x and y is dR (x, y) = r (x–y). DEFINITION 3.2.3: A vector space X n over GF(2N) such that n < N equipped with the rank metric dR is defined as a rank distance space. DEFINITION 3.2.4: Let X n be the rank distance space. A linear (n, k) rank distance code is a linear subspace of dimension k in the rank distance space X n and is denoted by C. DEFINITION 3.2.5: Let C be a linear (n, k) rank distance code. A generator matrix G of C is a k × n matrix with entries from GF(2N) whose rows form a basis for C. DEFINITION 3.2.6: Let C be a linear (n, k) rank distance code with generator matrix G. Then a (n – k) × n matrix H with entries from GF(2N) such that GHT = (0) is called the parity check matrix of C where (0) denotes the k × (n – k) zero matrix. Suppose C is a linear (n, k) rank distance code with generator matrix G and parity check matrix H, then C can be thought of as : 1. the row space of G or 2. the null space of H. DEFINITION 3.2.7: Let C be a linear (n, k) rank distance code. The minimum distance of C is defined as d = min {r (x – y) : x, y 52 ∈ C, x ≠ y}. Since C is linear space, d is also equal to min {r(x) : x ∈ C, x ≠ 0}. A linear (n, k) rank distance code C with minimum distance d satisfies the following bound. Singleton-style bound[12, 16]: A linear (n, k) rank distance code C with minimum distance d satisfies the inequality d ≤ n–k+1. DEFINITION 3.2.8: Rank distance codes which attain equality in the singleton style bound are called Maximum Rank Distance codes (MRD codes). MRD codes are analogs of generalized Reed-Solomon codes and can be defined through generator and parity check matrices. A MRD code with length n = N can be defined as follows: Let [i] = 2i, i = 0, ± 1, ± 2, … Let hi ∈ GF(2N), i = 1, 2, …, n be linearly independent over GF(2). For a given design distance d < n let us generate the matrix H= h1 h2 ... hn [1] 1 [1] 2 ... h[1] n h h1[d − 2] h (3.2.2) h[d2 − 2] ... h [dn − 2] The linear (n, k) rank distance code with parity check matrix H given in equation (3.2.2) is an MRD code of length n and minimum distance d. We denote a (n, k, d) MRD code as C[n, k]. The encoding and decoding algorithm for MRD codes are given by Gabidulin [9]. 53 It has long been recognized that there are advantages in allowing the demodulator not to guess at all on certain transmission (for example when the received signal is very weak) when the evidence does not clearly indicate one signal as the most probable: such events are called erasures. In the event of an erasure or blank space it is convenient to passes on the side information to the decoder that this guess is not completely reliable. By the guessing process or filling up of the blank space an erasure or blank space can be regarded as an error which can be either detected or corrected by making use of the decoding algorithm for MRD codes. The guessing process or filling up of the blank spaces can be done systematically by making use of the decoding properties of the MRD codes and this procedure is described below. The C[n, 1] be a (n, 1, n) MRD code defined over GF(2n), where n = 2t + 1. Since the minimum distance of this code is n the associated matrix of every code word in this code has n columns to be linearly independent over GF(2). Suppose x = (x1, x2, …, xn) is the codeword that is transmitted. Let y = (y1, y2, …, yn) be the received vector where t coordinates are erasures. Let *1, *2, …*t denote the t erasures. The t erasures can occur either in an array or can occur intermittently with the yi’s or it can be randomly placed in between the yi’s. Still the method adopted by us will not affect the result. Without loss of generality we can assume that *1, *2, …, *t be the first t coordinates of y. Let yt+1, yt+2, …yn be the rest of the n – t coordinates. The choosing of each of the *j’s for j = 1, 2, …, t is detailed below. Now choose *1 (*1 ≠ 0) such that the set {*1, yt+1, yt+2, …, yn} is a linearly independent set over GF(2). Having chosen *1, now choose *2 (*2 ≠ 0) such that the set (*2, *1, yt+1, yt+2, …, yn) is a linearly independent set over GF(2). Having chosen *1, *2, 54 …, *s, s < t, *s+1 is chosen such that *s+1 ≠ 0 and the set {*s+1, *1, *2,… , *s, yt+1, yt+2, …, yn} is linearly independent over GF(2). By the above guessing process or filling up of the blank spaces the t erasures *1, *2, …, *t in the received vector y are filled by the t probable errors. Let the vector y′ = ( y1′ , y′2 ,..., y′n ) be the vector obtained from y after converting the t erasures or t blank spaces into t errors by using the guessing process. Now we apply the decoding algorithm of the MRD codes for decoding y′ and obtain the correct message transmitted. The following theorem gives the number of ways in which the erasures or blank spaces can be chosen by using the guessing process or filling up of the blank spaces. THEOREM 3.3.1: Let C[n,1] be a (n, 1, n) MRD code defined over GF(2n) where n=2t + 1. Let x = (x1, x2, …, xn) be the transmitted code word. Let y = (y1, y2, …, yn) be the received vector where t coordinates are erasures or blank spaces. Let *1, *2, …, *t denote the t erasures or t blank spaces. Then *s+1, where s + 1 < t can be chosen in 2n–t+2 [2t–s – 1] ways by using the guessing process. Proof: Let C[n, 1] be a MRD (n, 1, n) code defined over GF(2n) where n = 2t + 1. Suppose x = (x1, x2, …, xn) is the codeword that is transmitted. Let y = (y1, y2, …, yn) be the received vector where t coordinates are erasures or blank spaces. Let *1, *2, …, *t denote the t erasures or blank spaces. Without loss of generality let *1, *2, …, *t be the first coordinates of the vector y. Then when applying the guessing process *1 is chosen such that *1 ≠ 0 and the set {*1, yt+1, yt+2, …, yn} is a linearly independent set over GF(2). That is, *1 is chosen from the set B1 = GF(2n) \ {0, yt+1, …, yn, yt+1 + yt+2, …, yn–1 + yn, yt+1 + yt+2 + yt+3, …, yn–2 + yn–1 + yn, …, yt+1 + yt+2 + … + yn–1 + yn}. 55 Hence *1 can be chosen in |B1| ways, where |B1| denotes the number of elements in the set B1. Clearly |B1| = 2n – (1 + n – tC1 + n – tC2 + n – tC3 + … + n – tCn–t–1 + n – tCn–1) = 2n – (1+1)n–1 (by Binomial theorem) = 2n – 2n–t = 2n–t [2t – 1]. Having chosen *1, *2 can be chosen such that *2 ≠ 0 and the set {*2, *1, yt+1, yt+2, …, yn} is linearly independent over GF(2). That is, *2 is chosen from the set B2 = GF(2n) \ {0,*1, yt+1, …, yn, *1 + yt+1, yt+1 + yt+2, …, yn–1 + yn, *1 + yt+1 + yt+2, yt+1+ yt+2 + yt+3, …, yn–2 + yn–1 + yn, …, *1 + yt+1 + yt+2 + … + yn–1 + yn}. Hence *2 can be chosen in |B2| ways. Clearly |B2| is given by; |B2| = 2n – (1 + n – (t+1)C1 + n – (t+1)C2 + … + n – (t+1)Cn–t + n – (t+1)Cn–t+1) = 2n – (1+1)n–t+1 = 2n – 2n–t+1 = 2n–t+1 [2t–1 – 1]. (By binomial theorem) Having chosen *1, *2,..., *s, s < t, *s+1 is chosen such that *s+1 ≠ 0 and {*s+1, *1, *s, …, *s, yt+1, yt+2, …, yn} is linearly independent set over GF(2). Hence *s+1 can be chosen in |Bs+1| ways. Clearly |Bs+1| is |Bs+1| = 2n – (1 + n – (t+s)C1 + n – (t+s)C2 + n – (t+s)C3 + … + n – (t+s)Cn–t+s–1 + n – (t+s)Cn–t+s) = 2n – (1+1)n–t+s = 2n – 2n–t+s = 2n–t+s [2t–s – 1]. Hence the theorem. 56 THEOREM 3.3.2: Let C[n, 1] be a (n, 1, n) MRD code with minimum distance n = 2t + 1. Then C[n, 1] corrects atmost t ensures and detects more than t erasures. Proof: Let C [n, 1] be a (n, 1, n) MRD code with minimum distance n = 2t + 1. Suppose x = (x1, x2, …, xn) is the codeword that is transmitted. Let y = (y1, y2, …, yn) be the received vector where t coordinates are erasures or blank spaces. Let y′ = ( y1′ , y′2 ,..., y′n ) be the vector obtained from y after converting the t erasures into t errors by using the guessing process or filling up of the blank spaces. Therefore, dR (x, y′) < t, by [9, 29, 30] we know that a MRD code with n = 2t + 1 can correct atmost t errors and detect more than t errors. Hence C[n, 1] can correct atmost t erasures and detect more than t erasures. THEOREM 3.3.3: Let C[n, 1] be a (n, 1, n) MRD code defined over GF(2n) where n = 2t + 1. Let x = (x1, x2, …, xn) be the transmitted codeword. Let y = (y1, y2, …, yn) be the received vector where t coordinates are erasures. Let *1, *2, …, *t denote the t erasures. The erasures *s+1, where s + 1 ≤ t can be chosen in 2n–t+s [2t–s–1] ways by using the guessing process. Then the various choices of *j’s does not affect the erasure correcting capability of the MRD code. Proof : Let C[n, 1] be a (n, 1, n) MRD code defined over GF(2n) where n = 2t + 1. Suppose x = (x1, x2, …, xn) be the transmitted codeword. Let y = (y1, y2, …, yn) be the received vector where t coordinates are erasures or blank spaces. Let *1, *2,…, *t denote the t erasures or t blank spaces. Let y′ = ( y1′ , y′2 ,..., y′n ) be the vector obtained from y after applying the guessing process or filling up of the blank spaces to obtain from y after applying the guessing process or filling up of the blank spaces to the received vector y. Let y″ = ( y1′′, y′′2 ,...., y′′n ) be another vector obtained from y after applying the guessing process or filling up of the blank spaces to the received vector y and be such that y′ ≠ y″, then dR(y′, y″) ≤ t. By the guessing process the t erasures in the received vector y are converted into t errors. Hence dR(x, y′) ≤ t and dR(x, y″) ≤ t. We know MRD 57 code with n = 2t + 1 can correct atmost t errors and detect more than t errors. Since dR(x, y′) ≤ t and dR(x, y″) ≤ t both the vector y″ and y′ are both decoded as the vector x, which is the transmitted message. Hence the theorem. The guessing process and the above results are illustrated by the following example. Example 3.3.1: Consider GF(23) where GF(23) = {0, 1, α, α2, …, α6} and α is the root of the primitive polynomial p(x) = x3 + x + 1. Consider the (3, 1, 3) MRD code having parity check matrix H. H= 1 α 1 α2 α2 α4 (3.3.1) obtained by choosing h1 = 1, h2 = α, h3 = α2 in the matrix (3.3.1). Let m1 = α5 be the message. Let x = (α5, a1, a2). The HxT = (0) gives a1 = α6 and a2 = α2. The codeword corresponding to the message m1 = α5 is c = (α5, α6, α2). Suppose c is the transmitted vector and let y = (α5, *, α2) be the received vector with one erasure or one blank space. By applying the guessing process we choose * ≠ 0 and such that the set {*, α5, α2} is linearly independent over GF(2). Then there are four choices for * namely * = 1, * = α, * = α4 and * = α6. We see that the choice of * does not change the result and we get the corrected message for all the four choices of *. Choose * = 1. Now the vector y′ obtained after filling up of the blank space in the received vector y is y′ = (α5,1, α2). By applying the decoding algorithm for MRD codes to the vector y′ we have 1. Syndrome = (α3, α4) = (s0, s1). 58 2. ∆ (z) = α2 z + z2. 3. The non zero root of ∆ (z) is E1 = α2. 1 E j x[pj ] , p = 0 we get x1 = α . 4. Solving sp = j=1 3 Y1j h j gives Y11 = 0, Y12 = 1, 5. Solving x1 = j=1 Y13 = 0 and hence the matrix Y = (0 1 0). 6. Error vector e = E1 Y = (0, α2, 0). 7. y′ + e = (α5, α6, α2) is the required codeword. Choose * = α. Now the vector y′ obtained after filling up of the blank space in the received vector y is y′ = (α5, α, α2). By applying the decoding algorithm for MRD codes to the vector y′ we have 1 Syndrome = (α6,1) = (s0, s1). 2. ∆ (z) = α5 z + z2. 3. The non zero root of ∆ (z) is E1 = α5. 1 E j x[pj ] , p = 0 we get x1 = α . 4. Solving sp = j=1 3 5. Solving x1 = Y1j h j gives Y11 = 0, Y12 = 1, j=1 Y13 = 0 and hence the matrix Y = (0 1 0). 6. Error vector e = E1 Y = (0, α5, 0). 59 7. y′ + e = (α5, α6, α2) is the required codeword. Choose * = α4. Now the vector y′ obtained after filling up of the blank space in the received vector y is y′ = (α5, α4, α2). By applying the decoding algorithm for MRD codes to the vector y′ we have Syndrome = (0, 0). This indicates that y′ is the correct message. Let m2 = α3 be the message. Let x = (α3, a1, a2). The HxT = (0) gives a1 = α4 and a2 = 1 . The codeword corresponding to the message m1 = α3 is c = (α3, α4, 1). Suppose c is the transmitted vector and let y = (α3, *1, *2) be the received vector with two erasures or blank spaces. By applying the guessing process we choose *1 ≠ 0 and such that the set {*1, α3} is linearly independent over GF(2). Since the set {α6, α3} is linearly independent over GF(2) choose *1 = α6. Again since the set {α2, α6, α3} is a linearly independent set over GF(2) choose *2 = α2. Now the vector y′ obtained after filling up of the blank spaces in the received vector y is y′ = {α3, α6, α2}. By applying the decoding algorithm for MRD codes to the vector y′ we have 1. Syndrome = (α4, α5) = (s0, s1). 2. ∆ (z) = α3 z + z2. 3. The nonzero root of ∆ (z) is E1 = α3. 1 E j x[pj ] , p = 0 we get x1 = α . 4. Solving sp = j=1 60 3 5. Solving x1 = Y1j h j gives Y11 = 0, Y12 = 1, j=1 Y13 = 0 and hence the matrix Y = (0 1 0). 6. Error vector e = E1 Y = (0, α3, 0). 8. y′ + e = (α5, α6, α2) is the required codeword. Choose * = α6. Now the vector y′ obtained after filling up of the blank space in the received vector y is y′ = (α5, α6, α2). By applying the decoding algorithm for MRD codes to the vector y′ we have Syndrome = (0, 0). This indicates that y′ is the correct message. Let m2 = α3 be the message. Let x = (α3, a1, a2). The HxT = (0) gives a1 = α4 and a2 = 1 . The codeword corresponding to the message m1 = α3 is c = (α3, α4, 1). Suppose c is the transmitted vector and let y = (α3, *1, *2) be the received vector with two erasures or two blank space. By applying the guessing process we choose *1 ≠ 0 and such that the set {*1, α3} is linearly independent over GF(2). Since the set {α6, α3} is linearly independent over GF(2) choose *1 = α6. Again since the set {α2, α6, α3} is a linearly independent set over GF(2) choose *2 = α2. Now the vector y′ obtained after filling up of the blank spaces in the received vector y is y′ = {α3, α6, α2}. By applying the decoding algorithm for MRD codes to the vector y′ we have 1. Syndrome = (α2, α2) = (s0, s1). 2. ∆ (z) = α2 z + z2. 61 3. The nonzero root of ∆ (z) is E1 = α2. 1 E j x[pj ] , p = 0 we get x1 = 1 . 4. Solving sp = j=1 3 5. Solving x1 = Y1j h j gives Y11 = 1, Y12 = 0, j=1 Y13 = 0 and hence the matrix Y = (1 0 0). Error detected. The erasure decoding method declares that more than one erasure has been detected. Hence the (3, 1, 3) MRD code corrects atmost one erasure and detects more than one erasure in the received vector. We also note that the result is independent of the choice of *. The study of erasure decoding is better than the study of errors. Erasure decoding in case of Hamming codes has been widely studied in literature. In this chapter we have started the study of erasure decoding of the class of MRD codes. We give a guessing process by which the erasures or blank spaces in the received vector can be converted into errors. We have proved that the MRD code of length n, dimension one and minimum distance n = 2t + 1 can correct atmost t erasures and detect more than t erasures. We have obtained the number of ways in which a particular erasure can be chosen during the guessing process and we have established that the result is unaffected by the various choices of erasures or blank spaces that are available in the guessing process or filling up of the blank spaces at each stage. It is pertinent to mention that these results are true for any (n, k, d) MRD code defined over GF(2n) where d = 2t + 1. 62 Minimum distance is a one of the chief parameters which determines the error-correcting capability of a code. In fact, the maximum number of errors corrected by a code is proportional to its minimum distance. For a linear code of length n, dimension k and minimum distance d, the upper bound for the minimum distance is n – k + 1. A code which has the minimum distance d = n – k + 1 is defined as the Maximum Distance Separable codes. The Reed-Solomon codes are important Maximum Distance Separable codes. Analogues to Maximum Distance Separable codes, Gabidulin in [9] defines the class of Maximum Rank Distance (MRD) codes. An [n,k,d]q N Rank Distance code whose minimum distance d is equal to n – k + 1 is called an MRD code, n ≤ N. As the error-correcting capability of a code is proportional to its minimum distance, codes with larger minimum distance is preferred for error correction. It makes it justifiable to study the characteristics or properties 63 enjoyed by such class of codes so as to enunciate their uses in the communication channels. This chapter has four sections. Section one is introductory in nature. Section 2 introduces for the first time, a combined error-erasure decoding technique to the class of [n,k,d]q N MRD codes, n ≤ N. A code is said to be invertible if, knowing only the parity-check symbols of a codeword, the corresponding information symbols can be determined through an inversion process. The invertible property facilitates the data recovery process in error-control schemes. A comprehensive study on the invertible property for the class of [n,k,d]q N q-Cyclic RD codes is carried out in section 3. Section 3 also presents the systematic encoding and the shortening technique for the class of [n,k,d]q N q-Cyclic RD codes. Section 4 carries out a study on the class of Rank Distance codes having complementary duals. It is proved that the class of [n,k,d]2n MRD codes generated by the traceorthogonal-generator matrices are LCD codes. Further, description to the (noiseless and noisy) 2-user F-Adder Channel and coding for the noiseless 2-user F-Adder Channel via the class of [n,k,d]2n MRD codes having complementary duals are presented [25]. A coding problem for the noisy 2-user F-Adder Channel is explained. This section introduces a combined error-erasure decoding technique for the first time to the class of [n,k,d]q N MRD codes, n ≤ N. The combined error-erasure decoding technique to the class of MRD codes presented later in this section enables the decoder to correct all combinations of r rank-errors and s erasures in an erroneously received vector as long as 2r + s < d, where d is the minimum-rank distance of the MRD codes. 64 Let Γ denote an [n,k,d]q N MRD code, n ≤ N with the paritycheck matrix H. h1 h2 [1] 1 [1] 2 h H= h1[d − 2] h hn h[1] n h[d2 − 2] (4.1) h [dn − 2] where h1, h2, …, hn ∈ GF(qN) are linearly independent over GF (q). Before presenting the error-erasure decoding technique, in what follows are the descriptions to the deletion of m coordinates of x ∈ Γ and the deletion of m columns of H that are required in the decoding technique, where m < n. Let x = (x1, x2, …, xn) ∈ Γ. Define the deletion of the l1th coordinate x l1 of x as the (n–1)-tuple (x1, x2, …, x l1−1 , x l1+1 , …, xn) and denote it by x(1). Similarly, the deletion of m coordinates, say x l1 , x l2 ,..., x lm of x is defined as the (n–m)-tuple (x1, x2, …, x l1−1 , x l1+1 , …, x l2−1 , x l2+1 ,..., x lm−1 , x lm+1 ,..., xn) and is denoted by x(m). Generate a matrix, say H(1) of order (d–2) × (n–1) from H by performing the following row operations so as to delete the l1th column of H. For each j = 1, 2, …, d – 2, multiply the jth row-vector of H by h[l1j] h[l1j−1] and subtract the (j+1)th row-vector from the jth row- vector and let the deletion of the l1th coordinate of the resultant 65 vector, namely ( h h[l1j−−11] h[l1j] h[l1j−1] h[l1j] [ j−1] 1 h[l1j−1] [ j] 1 – h , h h[l1j] – h[l1j]−1 , h[l1j+−11] h[l1j−1] [ j−1] 2 h[l1j] h[l1j−1] – h[2j] , …, – h[l1j]+1 , …, h[nj−1] h[l1j] h[l1j−1] be the jth row-vector in H(1). The resultant matrix H(1) is given by h h [1] 1 h1[d − 3] h[0] l1 +1 h[1] l1 +1 h [d − 3] l1 +1 Let h′i = h[1] l1 [0] 1 h h h[dl1 − 2] h [dl1 −3] h[0] l1 h[2] l1 h[0] l1 h[dl1 − 2] [d − 3] l1 h[l1j] h[0] l1 [2] l1 h[1] l1 h[1] l1 h [0] l1 −h −h [1] 1 ... [2] 1 ... h [0] l1 −1 h [1] l1 −1 − h1[d − 2] ... h[dl1 −−13] − h [1] l1 +1 ... h[0] n − h[2] l1 +1 ... h [1] n −h [d − 2] l1 +1 ... h [d −3] n h h [1] l1 h [dl1 − 2] h[dl1 − 3] h[2] l1 h [0] l1 − h[2] l1 −1 − h[dl1 −−12] − h[2] n h[dl1 − 2] [1] l1 − h[1] l1 −1 − h [1] n h[0] l1 h [0] l1 h[2] l1 h[1] l1 – h[1] for each i ≠ l1. i 66 h [1] l1 − h[dn − 2] . – h[nj] ) Then h [ j−1] i h[l1j] h[l1j−1] – h[i j] = h′i [ j−1] for each i ≠ l1 and j = 1, 2, …, d–2. The (d–2) × (n–1) matrix H(1) now takes the following form (1) H = h1′[0] h1′[0] ... h ′l1[0] −1 h ′l1[0] +1 ... h ′n[0] h1′[1] h ′2[1] ... h ′l1[1]−1 h ′l1[1]+1 ... h′n[1] h1′[d −3] h ′2[d −3] ... h′l1[d−1− 3] h′l1[d+1− 3] where h′i = h[0] i h[l1j] h [0] l1 ... h ′n[d − 3] – h[1] for each i ≠ l1. i Call the matrix H(1) thus obtained as the deletion of l1th column of H. Proceeding with a similar row operations in H(1) so as to delete a column of H(1) that is corresponding to the l2th column of H, one obtains a (d–3) × (n–2) matrix, say H(2); call it as the deletion of l1th and l2th columns of H. In general, proceeding with a similar row operations in H(m-1) so as to delete a column of H(m–1) that is corresponding to the lmth column of H, one obtains a (d–1–m) × (n–m) matrix say H(m), called as the deletion of l1th, l2th, …, lmth columns of H, where H(m-1) is the (d–m) × (n–m+1) matrix and is the deletion of l1th, l2th, …, lm–1th columns of H. An important relationship between x(1) and H(1) is proved in the following lemma. Lemma 4.2.1: Let Γ be an [n,k,d]q N MRD code with the parity- check matrix H as defined in (4.1). Let x(1) be the deletion of the l1th coordinate of x ∈ Γ. Let H(1) be the deletion of the l1th T column of H. Then x(1) H (1) = (0). 67 Proof: Let x = (x1, x2, …, xn) ∈ Γ. Then x(1) = (x1, x2, …, xl1−1 , xl1+1 , …, xn) is the deletion of the l1th coordinate x l1 of x. T Let y = x(1) H (1) = (y1, y2, …, yd–2). Then y = x(1) H (1) (1) =x T h1′[0] h1′[0] ... h ′l1[0] −1 h′l1[0] +1 ... h ′n[0] h1′[1] h ′2[1] ... h ′l1[1]−1 h′l1[1]+1 ... h ′n[1] h1′[d −3] h ′2[d −3] ... h ′l1[d−1− 3] h ′l1[d+1−3] where h′i [0] = h[0] i h[1] l1 h [0] l1 T ... h′n[d − 3] – h[1] for each i ≠ l1. i One needs to show that x(1) ( h1[ j−1] h [ j−1] l1−1 h[l1j] h [ j−1] l1 h[l1j] h[l1j−1] –h [ j] l1−1 – h1[ j] , h[2j−1] , h [ j−1] l1 +1 h[l1j] h[l1j−1] h[l1j] h [ j−1] l1 –h – h[2j] , …, [ j] l1 +1 , …, h [ j−1] n h[l1j] h [ j−1] l1 - h[nj] )T = 0, for each j = 1, 2, …, d – 2. Now yj = x(1) ( h1′[ j−1] , h′2[ j−1] , …, h ′l1[−j−11] ,h ′l1[+j−11] , …, h[nj−1] )T = x1 h1′[ j−1] + x2 h′2[ j−1] + … + x l1−1 h′l1[−j−11] + x l1+1 h ′l1[+j−11] , …, xn h′n[ j−1] 68 [ j−1] 1 1 xh = x n h[nj−1] = –x1 h[l1j−1] h[l1j] + ... + x l1−1 h h[l1j−1] h[l1j] h h[l1j−1] h[l1j] h[l1j−1] + x l1+1 h [ j−1] l1+1 h[l1j] h[l1j−1] + ... + − (x11 h1[ j] + ... + x11 −1h1[1j]−1 + x11 +1h1[1j]+1 + ... + x n h[nj] [ j−1] l1 h[l1j] [ j−1] l1−1 – (–x1 h[l1j] ) ( xHT = (0)) = –x1 h[l1j] + (x1 h[l1j] ) = 0 i.e. yj = 0, for each j = 1, 2, …, d–2. T Thus x(1) H (1) = (0). Hence the lemma. (m) x The above lemma is true for the general case also. That is, if is the deletion of m coordinates, say x l1 , x l2 ,..., x lm of x ∈ Γ and H(m) is the deletion of l1th, l2th, …, lmth columns of H, T then x(m) H (m) = (0). Thus the immediately. proof of the following lemma follows Lemma 4.2.2: Let Γ be an [n,k,d]q N MRD code with the parity- check matrix H as defined in (4.1). Let x(m) be the deletion of m coordinates x l1 , x l2 ,..., x lm of x ∈ Γ and H(m) be the deletion of l1th, l2th, …, lmth columns of H, m < n. T Then x(m) H (m) = 0. The above lemma gives a relationship between x(m) and H . This relation plays a crucial role in the combined error(m) 69 erasure decoding technique to the class [n,k,d]q N MRD codes presented in what follows. Consider the parity-check matrix H of an [n,k,d]q N MRD code, n ≤ N. H= h1 h2 ... hn [1] 1 [1] 2 ... h[1] n h h1[d − 2] h h[d2 − 2] ... h [dn − 2] where hi ∈ GF(qN), i=1, 2, …, N are linearly independent over GF(q). Let x = (x1, x2, …, xn) ∈ Γ be a codeword transmitted over a noisy channel. Because of the channel noise, the receiver may not receive the transmitted codeword x. Let y = y + e be the received vector, where e = (e1, e2, …, en) is an error-vector and y denotes the codeword x with erasures; the details of the notations ‘ ’ and ‘ + ’ are given in the next line. Since the erroneously received vector y also has erasures and erasures are nothing but blank spaces, ‘ ’ and ‘ + ’ are so used to represent the received vector in terms of the error-vector and erasurevector. Assume that the received vector y = (y1, y2, …, yn) has m ≤ r rank-errors and t ≤ s erasures such that 2r + s < d, where d is the minimum-rank distance of the [n,k,d]q N MRD code and m is the rank of the error-vector e. Without loss of generality, assume that the received vector y has erasures in the first t coordinates; i.e., y = (*1, *2, …, *t, xt+1, …, xn) with *1, *2, …, *t representing erasures. One should note that the t coordinates 70 of e that are corresponding to the erasures in the received vector y are zeros; i.e., e1, e2, …, et are all zero. Therefore, e = (0, 0,..., 0 , et+1, et+2, …, en). Then the received vector takes the t terms form y en). (*1, *2, …, *t, xt+1, …, xn) + (0, 0, …, 0, et+1, et+2, …, Let f = (f1, f2, …, ft, (0, 0,..., 0 ) be the erasure-vector. n − t terms Let y′ = (y1′ , y′2 ,..., y′n ) be such that yi′ = fi if x i iserased xi otherwise , where the unknowns f1, f2, …, ft (t ≤ s) are to be determined. Then y′ = (f1, f2, …, ft, xt+1, …, xn). Having replaced the erasures with the unknown f1, f2, …, ft, the received vector y is now expressed as y′ + e; i.e., y = y′ + e. The syndrome of y is given by S = y HT = ( y ′ + e)HT = (f1, f2, …, ft, xt+1, …, xn)HT + (0, 0, …, 0, et+1, …, en)HT = (f1, f2, …, ft, xt+1, et+1, …, xn + en) HT. (4.2) The decoder’s problem is to first determine the error-vector e = (0, 0, …, 0, et+1, …, en) and then the erasure-vector f = (f1, f2, …, ft, 0, …, 0) on the basis of the syndrome vector S = (s0, s1, …, sd-2), where si denotes the ith coordinates of S for each i = 0, 1, … d–2. Equating each component in the right-hand side of (4.2), f1 h1 + … + ft ht + (xt+1 + et+1) ht+1 + … + (xn + en) hn = 0 71 f1 h1[1] + … + ft h[1] + (xt+1 + et+1) h[1] t t +1 + … + (xn + en) h[1] n = 0 f1 h1[d − 2] + … + ft h[dt − 2] + (xt+1 + et+1) h[dt +−1 2] + … + (xn + en) h[dn − 2] = 0 ( ) Let θ(0) denote the equation j f1 h [ j] 1 + … + ft h[t j] + (xt+1 + et+1) h[t +j]1 + … + (xn + en) h[nj] = 0 for each j = 0, 1, …, d–2 and θ(d-1) = ( ( θ ) , ( θ ) , …, ( θ ) ) (0) 1 (0) 0 (0) d− 2 ( ) ( ) represent the above system of d–1 equations θ(0) , θ1(0) , …, 0 (θ ) . (0) d− 2 In the above system θ(d–1) of d–1 equations, one needs to eliminate f1, f2, …, ft. For each i = 1, 2,…, t, the elimination of fi, results in a system, say θ(d–1–i), of d–1–i equations, say θ(i) , 0 ( θ ) , …, ( θ (i) 1 (i) d − 2− i ) . Let θ (d–1–i) ( ) ( ) , θ1(i) , …, θ(i) = ( θ(i) 0 d − 2− i ((θ ) , (θ ) , Therefore, θ(d–1–t) = ( ( ) ) ). ( t) 0 (t ) 1 …, (θ (t ) d − 2− t )) would (d–1–t) represent the system θ of d–1–t equations obtained after the elimination f1, f2, …, ft from the system θ(d–1). The recursive procedure for the elimination of f1, f2, …, ft , θ1(0) , …, θ(0) from the system θ(d–1) = θ(0) is given as 0 d− 2 ( ) ( ) ( ) follows. For each i = 1, 2, …, t, perform the operation. Define Z(i–1)= Coefficient of f i in equation ( Coefficient of f i in equation ( 72 (i −1) ) of system (i −1) ) of system 0 (d − i) (d −i) . Then (to eliminate fi from the system θ(d–i) of d–i equations) multiply the equation θ(ij −1) by Z[(ij]−1) and subtract the equation ( ) ( θ ) from the equation ( θ ) for each j = 0, 1, 2, …, d–2–i. Then one obtains the system θ = ( ( θ ) , ( θ ) , …, ( θ ) ) of d–1–i equations after the elimination of f . (i −1) j+1 (i −1) j (d–1–i) (i) 1 (i) 0 (i) d − 2 −i i The reduced system θ(d–1–t) of d–1–t equations ( θ ) , …, ( θ (t ) 1 (t ) 0 ) after the elimination of f , f , …, f from the ( ( θ ) , ( θ ) , …, ( θ ) ) is of the following (t) d − 2− t system θ(d–1) = (θ ) , 1 (0) 0 (0) 1 2 t (0) d− 2 form. s′0 = (xt+1 + et+1) h′t +1 + (xt+2 + et+2) h′t + 2 + … + (xn + en) h′n ′[1] ′[1] s1′ = (xt+1 + et+1) h′t[1] +1 + (xt+2 + et+2) h t + 2 + … + (xn + en) h n and s′d −2 − t = (xt+1 + et+1) h ′t[d+1−2 − t] + (xt+2 + et+2) h ′t[d+2−2 − t] + … + (xn + en) h ′n[d −2 − t] . The above system of equations can be rewritten as, ( s′0 , …, s′d −2 − t ) = (xt+1 + et+1, …, xn + en) h1′ h′t[1] +1 h ′2 h′t[1] +2 h ′t[d+1−2 − t] h′t[d+ 2− 2− t] = (xt+1 + et+1 , …, xn + en) H (t) T ... ... h′n h ′n[1] ... h′n[d − 2 −t ] T = (xt+1, …, xn) H (t) + (et+1, …, en) H (t) 73 T T T = x(t) H (t) + e(t) H (t) T T = (0) + e(t) H (t) (by Lemma 4.2.2) = e(t) H (t) T i.e., ( s′0 , …, s′d −2 − t ) = e(t) H (t) T (4.3) where e(t) = (et+1, et+2, …, en) is the deletion of the first t coordinates of e and H(t) = h ′t +1 h′t[1] +1 h ′t + 2 h ′t[1] +2 h ′t[d+1−2 − t] h ′t[d+ 2− 2− t] ... ... h′n h ′n[1] ... h′n[d − 2− t] is the (d–1–t) × (n–t) matrix, which is the deletion of the first t columns of H. If s′i = 0 for each i, then it is concluded that the received vector y contains no errors. Then solving the system θ(d–1) of d–1 equations, one can determine the values for the unknowns f1, f2, …, ft. If s′i ≠ 0 for some i, then the received vector y contains errors. To find the error-vector e = (0, 0, …, 0, et+1, et+2, …, en), one is to continue the following procedure with the known syndrome values s′i , i = 0, 1, …, d–2–t. Actually, one needs to find the error vector e(t) = (et+1, et+2, …, en). Since the rank norm of the error-vector e is assumed to be m, e(t) can be written in the following form: e(t) = EY = (E1, E2, …, Em)Y, 74 (4.4) where (E1, E2, …, Em) are linearly independent over GF(q), and Y = Yij m,n i, j=1,t +1 is an m × (n – t) matrix of rank m with entries from GF(q). Equation (4.3) becomes, T ( s′0 , …, s′d − 2 − t ) = EY H (t) = EX, where the transposed matrix of X = Y H x1′ x1′[1] x ′2 x′2[1] x1′[d − 2− t ] x′2[d − 2 − t ] XT = x ′m x ′m[1] ... ... (4.5) (t) T has the form (4.6) ... x ′m[d − 2 − t] and x ′p = n Ypj h ′j , p = 1, 2, …, m. (4.7) j= t +1 are linearly independent over GF(q). Equation (4.5) is equivalent to the following system of equations in the unknowns E1, E2, …, Em, x1′ , x ′2 ,..., x ′m , s′p = m Ei x′i [p ] , p = 0, 1, …, d–2–t. (4.8) i =1 If the solution of the system (4.8) has been found, then from (4.7) and (4.4), one can determine the matrix Y and the errorvector e(t) respectively. Note that the above system (4.8) has d −1− t many solutions for a specified m; for m ≤ . However, 2 all solutions lead to the same vector e(t). Thus, the decoding problem reduces to finding the solution of the system (4.8). Let S′(z) = d− 2−t j= 0 s′jz[ j] be termed as the syndrome polynomial. 75 Set F0(z) = z[d–1–t], F1(z)=S′(z) and employ Euclid’s division algorithm until reaching a remainder polynomial Fm+1(z) such that deg(Fm(z)) ≥ q(d–1–t)/2 and deg(Fm+1(z)) < q(d–1–t)/2. Then it is concluded that the received vector y has m rank-errors; that is, r[e(t); q] = m. Let ∆(z) = m p =0 ∆ p z[p] , ∆m = 1 be a polynomial whose roots are all possible linear combinations of E1, E2, …, Em with coefficients from GF(q). Using the coefficients of the remainder polynomial Fm+1(z), the coefficients ∆0, ∆1, …, ∆m of the polynomial ∆(z) can be determined recursively as follows: Let j be such that s′i = 0 and s′j ≠ 0 for i < j. Then ∆0 = fj / s′j , ∆p = (fj+p – p −i i=0 ′[p ] ∆[i] i − p + j−1 / s j , p = 1, 2, …, m, where fj is the coefficient of Fm+1(z) for degree [j] and for j + p ≥ m, set fj+p = 0. Determine the roots E1, E2, …, Em of ∆(z) that are linearly independent over GF(q). Methods for determining the roots of ∆(z) are described in [25]. After determining the roots E1, E2, …, Em of ∆(z), consider the following truncated system; s′p = m Ei x′i [p ] , p = 0, 1, …, m–1 (4.9) i =1 Solving the system (4.9), one obtains x ′j[p ] and hence the error-vector e(t). Then, by substituting e(t) in the system θ(d–1) of d – 1 equations, one can determine the values for the unknowns f1, f2, …, ft. Hence x = y – e, which is the actually transmitted codeword. 76 Summary of the error-erasure decoding technique: Step 1: Compute the syndrome values ( s′0 , …, s′d − 2 − t ) for the vector y = (f1, f2, …, ft, xt+1, …, xn) + (0, 0, …, 0, et+1, …, en) and the corresponding syndrome polynomial S′(z) = d− 2−t j= 0 s′jz[ j] . Step 2: Set F0(z) = z[d–1–t], F1(z) = S′(z) and employ Euclid’s division algorithm until reaching a Fm+1(z) such that deg (Fm(z)) > q(d–1–t)/2 and deg (Fm+1(z)) < q(d–1–t)/2. Let ∆(z) = m p =0 ∆ p z[p] , ∆m = 1 be such that its roots are all possible linear combinations of E1, E2, …, Em over GF(q). Step 3: Determine the coefficients of ∆(z) as follows: Let j be such that s′i = 0 and s′j ≠ 0 for i < j. ∆0 = fj / s′j , ∆p = (fj+p, p −i i=0 ′[p ] ∆[i] i − p + j−1 / s j , p = 1, 2, …, m. where fj is the coefficient of Fm+1(z) for degree [j] and fj+p = 0 for j + p ≥ m. Step 4: Compute the roots E1, E2, …, Em of ∆(z) that are linearly independent over GF(q). Then, by substituting E1, E2, …, Em in system (4.9), one can determine x[jp] and hence the error-vector e(t). Step 5: Substituting e(t) in system θ(d–1), one can obtain the values for the unknown f1, f2, …, ft. Step 6: The transmitted codeword is then obtained as x = y – e. 77 Using the combined error-erasure decoding technique to the class of [n,k,d]q N MRD codes presented above, one can correct any combination of m ≤ r rank-errors and t ≤ s erasures in an erroneously received vector as long as 2r + s < d, where d is the minimum-rank distance of the MRD codes. A detailed description of the combined error-erasure decoding technique to the class of [n,k,d]2 N MRD codes presented above is demonstrated through the following example which applies the combined error-erasure decoding technique to the [7,1,7]28 MRD code for the correction of 2 errors and 2 erasures in an erroneously received vector. Example 4.2.1: Let Γ = [7,1,7]28 be the MRD code defined over GF(28) = {0, H: 1 1 1 H= 1 1 1 8 1, α, …, α 2 − 2 } with the parity-check matrix α α2 α3 α4 α5 α6 α2 α4 α4 α8 α6 α12 α8 α16 α10 α 20 α12 α 24 α8 α16 α 24 α32 α 40 α 48 α16 α 32 α 32 α 64 α 48 α96 α 64 α128 α80 α160 α 96 α192 where α is a root of x8 + x6 + x5 + x + 1 over GF(2). the primitive polynomial Let x = (0, 0, 0, 0, 0, 0, 0) ∈ Γ be the transmitted codeword and y = α31, α147, 0, 0, *5, 0, *7) be the received vector, where ‘*5’ and ‘*7’ represent erasures. Note that the received vector y has two erasures. Let f = (0, 0, 0, 0, f5, 0, f7). Then replacing the erasures with unknowns f5 and f7, one has the vector y′ = (α31, α147, 0, 0, f5, 0, f7) where the unknowns f5 and f7 are to be determined. Let e = 78 (e1, e2, e3, e4, 0, e6, 0) be the error-vector to be determined. Then x = y′ – e would be the transmitted code word. The syndrome of y′ – e is S = (y′ – e)HT = (α31, α147, 0, 0, f5, 0, f7)HT – (e1, e2, e3, e4, 0, e6, 0)HT (4.10) Equating each component on the right-hand side of (4.10) to 0, α4 f5 + α6 f7 + 1 = e1 + αe2 + α2 e3 + α3 e4 + α5 e6, α8 f5 + α12 f7 + α147 = e1 + α2e2 + α4 e3 + α6 e4 + α10 e6, α16 f5 + α24 f7 + α108 = e1 + α4e2 + α8 e3 + α12 e4 + α20 e6, α32 f5 + α48 f7 + α113 = e1 + α8e2 + α16 e3 + α24 e4 + α40 e6, α64 f5 + α96 f7 + α41 = e1 + α16e2 + α32 e3 + α48 e4 + α80 e6, and α128 f5 + α192 f7 + α62 Let θ(6) = = e1 + α32e2 + α64 e3 + α96 e4 + α160 e6. ( ( θ ) , ( θ ) , ( θ ) , ( θ ) , ( θ ) , ( θ )) (0) 0 (0) 1 (0) 2 (0) 3 (0) 4 (0) 5 denote the above system of 6 equations. Here Z(0) = Coefficient of f 5 in equation ( Coefficient of f 5 in equation ( (0) 1 (0) 0 ) of system ) of system (6) (6) = α4. The eliminate f5 from the above system θ(6) of 6 equations, by Z[(0)j] and subtract the equation multiply the equation θ(0) j ( ) ( θ ) from the equation ( θ ) for each j = 0, 1, 2, 3, 4. Then one obtains the following reduced system θ = ( ( θ ) , ( θ ) , ( θ ) , ( θ ) , ( θ )) of 5 equations after the elimination of f . (0) j+1 (0) j (5) (1) 2 (1) 3 (1) 4 (1) 0 (1) 1 5 79 α149 f7 + α78 = α23e1 + α52 e2 + α143 e3 + α203 e4 + α206 e6, α43 f7 + α105 = α46e1 + α104 e2 + α31 e3 + α151 e4 + α157 e6, α86 f7 + α104 = α92e1 + α208 e2 + α62 e3 + α47 e4 + α59 e6, 172 α f7 + α16 = α184e1 + α161 e2 + α124 e3 + α94 e4 + α118 e6, and α89 f7 + α240 = α113e1 + α67 e2 + α248 e3 + α188 e4 + α236 e6. Now Z(1) = Coefficient of f 7 in equation ( Coefficient of f 7 in equation ( (1) 1 (1) 0 (5) ) of system ) of system (5) =α149. To eliminate f7 from the above system θ(5) of 5 equations, multiply the equation θ(1) by Z[(1)j] and subtract the equation j ( ) ( θ ) from the equation ( θ ) for each j = 0, 1, 2, 3. Then one obtains the following reduced system θ = ( ( θ ) , ( θ ) , ( θ ) , ( θ )) of 4 equations after the elimination of f . (1) j+1 (1) j (4) (1) 2 and (1) 0 (1) 3 α95 α68 α44 α48 7 = α197e1 + α71 e2 + α131 e3 + α196 e4 + α10 e6, = α139e1 + α142 e2 + α7 e3 + α137 e4 + α20 e6, = α23e1 + α29 e2 + α14 e3 + α19 e4 + α40 e6, = α46e1 + α58 e2 + α28 e3 + α38 e4 + α80 e6. The above system θ(4) of 4 equations can be written as (α95, α68, α44, α48) = (e1, e2, e3, e4, e6) α197 α 71 α131 α196 α10 α139 α142 α7 α137 α 20 α 23 α 46 α 29 α 58 α14 α 28 α19 α 38 α 40 α80 80 T (4.11) (1) 1 Let ( s′0 ,s1′ ,s′2 ,s′3 ) = (α95, α68, α44, α48) and e(2) = (e1, e2, e3, e4, e6) Here S′(z) = α95z[0] + α68 z[1] + α44 z[2]+ α48 z[3]. Let F0(z) = z[4] and F1(z) = α95z + α68 z2 + α44 z4 + α48 z8 Dividing F0(z) on the right by F1(z). F0(z) = (α207z8 + α203 z4 + α227 z2+ α254 z + α199) * F1(z) + F2(z). where F2(z) = α103z4 + α136 z2 +α39 z. Dividing F1(z) on the right by F2(z). F1(z) = (α200z4 + α233 z2 + α136 z) * F2(z) + F3(z), where F3(z) = α48z2 + α72 z. Since deg(F2 (z)) = 4 ≥ 22 and deg (F3 (z)) = 2 < 22, it follows the received vector has m = 2 rank-errors i.e., r [e(2); 2] = 2. Since e(2) is of rank norm m = 2, e(2) = (E1, E2) Y11 Y12 Y13 Y14 Y16 Y21 Y22 Y23 Y24 Y26 (4.12) = ( Y1 , Y2 , Y3 , Y4 ,Y6 ) (say) where E1 and E2 are linearly independent over GF(2), and Y = [Yij] is the 2 × 5 matrix of rank 2 with entries from GF(2). Equation (4.11) becomes, (α95, α68, α44, α48) 81 = ( Y1 , Y2 , Y3 , Y4 ,Y6 ) α197 α 71 α131 α196 α10 α139 α142 α7 α137 α 20 α 23 α 46 α 29 α 58 α14 α 28 α19 α 38 α 40 α80 T (4.13) Here ∆ (z) =∆0 Z[0] + ∆1 Z[1] + ∆2 Z[2] with ∆0 = α232, ∆1 = α160 and ∆2 = α160. The roots of ∆ (z) are α31, α147, α149 and 0. Take E1 = α31, and E2 = α147. 95 α = E1 (α197 y11 + α 71 y12 + α131 y13 + α196 y14 + α10 y16 ) + E 2 (α197 y 21 + α 71 y 22 + α131 y 23 + α196 y24 + α10 y 26 ) and α68 = E1 (α139 y11 + α142 y12 + α 7 y13 + α137 y14 + α 20 y16 ) + E 2 (α139 y 21 + α142 y 22 + α 7 y 23 + α137 y 24 + α 20 y26 ) . Solving the above equation, Y= 1 0 0 0 0 0 1 0 0 0 . Therefore, e = (α31, α147, 0, 0, 0, 0, 0). By substituting e = (α31, α147, 0, 0, 0, 0, 0) in the system θ(6) of 6 equations, one obtains f5 = 0 and f7 = 0. Hence x = y′ – e = (α31, α147, 0, 0 , 0, 0, 0) – (α31, α147, 0, 0, 0, 0, 0) = (0, 0, 0, 0, 0, 0, 0), which is the actually transmitted codeword. 82 ! There are two categories of techniques for controlling transmission errors in data transmission systems: the ForwardError Control (FEC) scheme and the Automatic-Repeat – Request (ARQ) scheme. In an FEC system, an error-correcting code is used, when the receiver detects the presence of errors in a received vector, it attempts to determine the error locations and then corrects the errors. If the exact locations of errors are determined, the received vector will be correctly decoded; if the receiver fails to determine the exact locations of errors, the received vector will be decoded incorrectly and erroneous data will be delivered to be destination. In an ARQ system, a code with good error-detecting capability is used. At the receiver, the syndrome of the received vector is computed. If the syndrome is zero, the received vector is assumed to be error-free and is accepted by the receiver. At the same time, the receiver notifies the transmitter, via a return channel, that the transmitted codeword has been successfully received. If the syndrome is not zero, errors are detected in the received vector. Then the transmitter is instructed, through the return channel, to retransmit the same codeword. Retransmission continues until the codeword is successful received. The throughput efficiency (or throughput) is a measure of performance of an ARQ system. Throughout efficiency is defined as the ratio of the average number of information symbols successfully accepted by the receiver per unit of time to the total number of symbols that could be transmitted per unit of time. The retransmission of an erroneously received vector continues until the received vector is successfully received by the receiver. Though the retransmission requests provide a powerful means of improving reliability performance at the cost of a reduction in throughput, the frequency of retransmission must be reduced to improve the throughout efficiency. Both systems have their own limitations and drawbacks. To improve the throughput efficiency, a hybrid - ARQ scheme which is a combination of both FEC and ARQ, came into existence [25]. 83 There are two types of hybrid - ARQ schemes : type I hybrid – ARQ scheme [25] and type II hybrid – ARQ scheme [25]. This section deals only the type II hybrid-ARQ scheme, the description of it is given in the following. The type II hybrid - ARQ scheme is devised based on the concept that the parity - check symbols for error correction are sent to the receiver only when they are needed [25]. Two linear codes are used in this type of scheme; one is a high-rate (n, k) code C0, which is designed for error detection only, the other is a half-rate invertible (2k, k) code C1, which is designed for simultaneous error correction and error detection. When a message, say u of k information symbols is ready for transmission, it is encoded into a codeword v = (f(u), u) of n symbols based on the error-detecting code C0, where f(u) denotes the n–k parity-check symbols. The codeword v = (f(u), u) is then transmitted. At the same time, the transmitter computes the k parity-check symbols, denoted by q(u), based on the message u and the half-rate invertible code C1. Clearly the 2k-tuple (q(u), u) is a buffer of the transmitter for later use. The invertible property facilities the data recovery process. This section carries out a comprehensive study on the invertible property enjoyed by the class of [n,k,d]q n q-Cyclic RD codes. This section is divided into three subsections. In subsection 1, the systematic encoding of the class of [n,k,d]q n q-cyclic RD codes analogues to the class of cyclic codes is given. Making use of the systematic encoding, the subsection 2 gives the shortening technique to the class of [n,k,d]q n q-cyclic RD codes. Subsection 3 studies the invertible property enjoyed by the class of [n,k,d]q n q-cyclic MRD codes for both the cases n – k ≥ k and n – k < k. 84 Systematic Encoding of q-Cyclic RD Codes The generator and parity-check matrices for linear codes greatly simplify encoding at the transmitter and error detection at the receiver. The problem of recovering the message block from a codeword can be greatly simplified through the use of systematic encoding. As in the case of ordinary cyclic codes, systematic encoding for the class of [n,k,d]q n q-Cyclic RD codes can be done either by means of a generator polynomial or by means of a generator matrix in systematic (or standard) form. (a) Systematic encoding through generator polynomial n −k Let G(z) = i=0 G i z[i] be the given generator polynomial of an [n,k,d]q n q-Cyclic RD code, say C. k Let H(z) = H i z[i] be such that z[n] – z = H(z) * G(z). If i=0 one assumes that gn–1, gn–2, …, gn–k are information symbols, then s/he can determine the parity-check symbols gn–k–1, gn–k–2, …, g0 as follows. Let u(z) = gn–1z[n–1] + gn–2z[n–2] + … + gn–kz[n–k] be a message polynomial to be encoded. Divide u(z) on the right by G(z); u(z) = q(z) * G (z) + f(z), deg (f (z)) < [n–k]. where q(z) is the quotient polynomial and f(z) is the remainder polynomial. Then the coefficients gn–i for degree gn–i for degree [n–i], i = k+1, k+2, …, n of the remainder polynomial f (z) will be the parity-check symbols. Then g(z) = u(z) – f(z) is the systematically encoded code polynomial corresponding to the message polynomial u(z), where f(z) is called as the paritycheck polynomial. 85 (b) Systematic encoding through generator matrix The systematic encoding of the [n,k,d]q n q-cyclic RD code C can also be carried out through generator and parity-check matrices in systematic form. This is accomplished in the following. The generator matrix and the parity-check matrix corresponding to G(z) and H(z) of C in systematic form can be obtained as follows: Dividing z[n–k+i] on the right by G(z) for each i = 0, 1, …, k–1, one gets z[n–k+i] = qi(z) * G(Z) + fi(z), where qi(z) is the quotient polynomial and fi(z) = fi0z[0] + fi1z[1] + … + fi, n–k–1z[n–k–1] is the remainder polynomial. Since G(z) is a right divisor of z[n–k–i] – fi(z), i = 0, 1, …, k–1, they are code polynomials of C. Arranging these k code polynomials as rows of a k × n matrix, one obtains the matrix say G: G= f 00 f 01 ... f 0,n − k −1 1 0 0 ... 0 f 01 f11 ... f1,n − k −1 0 1 0 ... 0 0 f k −1,0 f k −1,1 ... f k −1,n − k −1 0 0 0 ... 1 which is the generator matrix of C in systematic form. Recall that any set of k linearly independent vectors can be used as the rows of the generator matrix to form a k-dimensional linear code. 86 The corresponding parity-check matrix, say H in systematic form is given by H= 1 0 0 ... 0 −f 00 −f10 0 1 0 ... 0 −f 01 −f11 0 0 0 ... 1 −f 0,n − k −1 ... −f k −1,0 −f k −1,1 −f1,n − k −1 ... −f k −1,n − k −1 Note that GHT = (0). If u = (gn–k, gn–k+1, …, gn–1) is a message vector, then v = uG = (g0, g1, …, gn–1) is the systematically encoded codeword corresponding to the message vector u and one can note that HT = (0), where g0, g1, …, gn–k–1 are the corresponding parity-check symbols. The systematic encoding for the class of [n,k,d]q n q-Cyclic RD codes given above is demonstrated through the following example. Example 4.3.1.1: Consider the 24 3 2 [5,3]2 5 2 2-Cyclic RD code 4 generated by G(z) = α z + α z + α z , where α is a root of the primitive polynomial x5 + x2 + 1 over GF(2). Dividing z[2] on the right by G[z], one gets z4 = α29 z * G (z) + αz2 + α22z with f1(z) = α z2 + α22z. Dividing z[3] on the right by G[z], one gets z8 = (α27 z2 + z) * G (z) + α7z2 + α24z with f2 (z) = α7z2 + α24z. Dividing z[4] on the right by G[z], one gets Z16 = (α23z4 + z2 + α12z) * G(z) + α20z2 + α5z with f3(z) = α20z2 + α5z. 87 Then the generator matrix G and the parity-check matrix H for the [5,3]25 5-Cyclic RD code in systematic form are respectively given by α 22 α 1 0 0 G= α α5 α 7 0 1 0 20 0 0 1 24 α and 1 0 α 22 H= 0 1 α α 24 α7 α5 . α 20 Let u1(z) = α5z[4] + z[3] + α23z[2] be the message polynomial to be encoded. Dividing u1(z) on the right by G(z), one gets. u1(z) = (α28z4 + α12z2 + α6z) * G(z) + α17 z2 + α30 z. Then g1(z) = α30z + α17 z[1] + α23 z[2] + z[3] + α5 z[4] is the systematically encoded code polynomial corresponding to the message polynomial u1(z). Note also that (α30, α17, α23, 1, α5) HT = (0). Similarly, g2(z) = α13z + α11z[1] + α9z[2] + 0z[4] is the code polynomial corresponding to the message polynomial u2(z) = 0z[4] + α21z[3] + α9z[2] and that (α13, α11, α9, α21, 0) HT = (0). The next subsection gives the shortening technique to the class of [n,k,d]q n q-Cyclic RD codes. In shortening of an [n,k,d]q n q-Cyclic RD code, each codeword is shortened (in length) by t information symbols, resulting in a linear code of length n – t, dimension k – t with the same error-correcting capability as the original code, t < k. 88 4.3.2 Shortened q-Cyclic RD codes In many applications, there are external constraints such as puncturing, extending, shortening, lengthening, expurgating, or augmenting [25], which are unrelated to error-control but determine the allowed length of the error-control code. In system design, if a code of suitable length or suitable number of information symbols can not be found, it may be possible to shorten a code to meet the requirements. In extending, a code is extended by adding an additional redundant coordinate. Thus an (n, k) code becomes an (n + 1, k) code. In shortening, a code is shortened by deleting a message coordinate from the encoding process. Thus an (n, k) code becomes an (n – 1, k – 1) code. This section gives shortening technique to the class of [n,k,d]q n q-Cyclic RD codes. This shortening technique to the class of [n,k,d]q n q-Cyclic RD codes enables the subsection 4.3.3, to study the invertible property for the class of [n,k,d]q n q-Cyclic MRD codes when n – k < k. Let C denote an [n,k,d]q n q-Cyclic RD code. Let G(z) = n −k i=0 G i z[i] be a generator polynomial of C. k H i z[i] be such that z[n] – z = H(z) * G(z). Let H(z) = i=0 Consider the set of codewords of C for which the t < k leading higher-order information symbols are identical to zero. There are qn(k–t) such codewords in C and these qn(k–t) codewords in fact form a linear subcode of C. If the t zero information symbols are deleted from each of these codewords, one obtains a set of qn(k–t) vectors of length n–t. These set of qn(k–t) shortened vectors forms an [n − t,k − t]q n linear code. Call it as the shortened [n − t,k − t]q n q-Cyclic RD code and denote it by C(t). The shortened [n − t,k − t]q n q-Cyclic RD code C(t) has the same error-correcting capability as C. Also the encoding and 89 decoding for the shortened [n − t,k − t]q n q-Cyclic RD code C(t) can be accomplished by the generator polynomial G(z) and the parity-check polynomial H(z) in the same way as C. This is so because the deleted t zero information symbols do not affect the parity-check and syndrome computations. The following example shortens the [5,3]25 2-Cyclic RD code by t = 1, 2 information symbols and describes encoding of the shortened codes. Example 4.3.2.1: Consider the [5,3]25 2-Cyclic RD code C generated by G(z) = α24z + α3z2 + α2z4, where α is a root of the primitive polynomial x5 + x2 + 1 over GF(2). The generator matrix G and the parity-check matrix H in systematic form are respectively given by α 22 α 1 0 0 G= α α5 α 7 0 1 0 20 0 0 1 24 α and H= 1 0 α 22 0 1 α α 24 α7 α5 . α 20 Shortening the code C by t = 1 leading zero information symbol, one obtains the shortened [4,2]25 2-Cyclic RD code C(1). Take (α24, α3, α2, 0, 0) ∈ C. Then the shortened codeword (α24, α3, α2, 0) (by one information symbol) is in C(1). Similarly shortening the code C by t = 2 leading zero information symbols, one obtains the shortened [3,1]25 2-Cyclic RD code C(2) and the shortened codeword (α24, α3, α2), shortened by two zero information symbols from (α24, α3, α2, 0, 0), is in C(2). 90 Having given the shortening technique to the class on [n,k,d]q n q-Cyclic RD codes, the next subsection studies the invertible property enjoyed by the class of [n,k,d]q n q-Cyclic MRD codes, for the cases: n – k ≥ k and n – k < k. 4.3.3 Invertible Property of q-Cyclic MRD Codes If one is able to find the k message symbols in a codeword of an (n, k) F-ary linear code only with the knowledge of n – k parity-check symbols through an inversion process, the code is said to be invertible. This section explores the invertible property for the class of [n,k,d]q n q-Cyclic MRD codes and infers some interesting results. It is observed that, the case when n – k ≥ k, the [n,k,d]q n qCyclic MRD codes are invertible and for the case when n – k < k, the shortened [n − t 0 , k − t 0 ]qn q-Cyclic MRD codes are invertible; where 2k – n ≤ t0 < k. The detailed discussion of invertible property for the class of [n,k,d]q n q-Cyclic MRD codes is carried out in two cases: Case (i): n – k ≥ k and case (ii): n – k < k. Case (i) n – k ≥ k Let C denote an [n,k,d]q n q-Cyclic MRD code of length n, dimension k and minimum-rank distance d generated by G(z) = n −1 i=0 g i z[i] be a systematically encoded code polynomial. Then as described in subsection 4.3.1, in systematic encoding, the k leading high-order coefficients gn–k, gn–(k–1), …, gn–1 are identical to the information symbols, the n – k low-order coefficients g0, g1, …, gn–k–1 are the corresponding parity-check symbols. 91 Let u(z) = un–1 z[n–1] + un–2 z[n–2] + … + un–k z[n–k] be a message polynomial to be encoded. Divide u(z) on the right by G(z). u(z) = q(z) * G(z) + f(z), deg (f(z)) < [n – k] (4.14) where q(z) and f(z) are respectively the quotient and the remainder polynomials. Then g(z) = u(z) – f(z) is the code polynomial corresponding to the message polynomial u(z). Now one raises the question: Does there exists a one-to-one correspondence between the information symbols and paritycheck symbols in a codeword of the [n,k,d]q n q-Cyclic MRD code C so that one can talk about the invertible property of [n,k,d]q n q-Cyclic MRD codes for n – k ≥ k?. The following theorem answers this question. THEOREM 4.3.3.1: If C denotes an [ n,k ,d ]qn q-Cyclic MRD code such that n – k ≥ k, then no two codewords of C will have same parity-check symbols. Proof: Consider the generator polynomial G(z) of C in the form: G(z) = z[n–k] + Gn–k–1z[n–k+1] + … + G0z[0]. Let u(1) (z) = k u i(1) z[n − i] and i =1 u(2) (z) = k u i(2) z[n − i] i =1 be two distinct message polynomials to be encoded. Dividing u(1) (z) and u(2) (z) on the right by G(z). u(1) (z) = q1 (z) * G(z) + f1(z), deg (f1 (z)) < [n–k] (4.15) 92 and u(2) (z) = q2 (z) * G(z) + f2(z), deg (f2 (z)) < [n–k]. (4.16) The code polynomials corresponding to u(1) (z) and u(2) (z) respectively are, g1(z) = u(1) (z) – f1 (z) and g2(z) = u(2) (z) – f2 (z). Suppose that f1 (z) = f2 (z). Subtracting (4.16) from (4.15), u(1)(z) – u(2)(z) = (q1(z) – q2(z)) * G(z) i.e., z[n–k] * (u′(1)(z) – u′(2)(z)) = (q1(z) – q2(z)) * G(z), where u(i) (z) = z[n–k] * u′(i)(z) for each i = 1, 2. The above equation shows that G(z) is a right divisor of z[n–k] * (u′(1)(z) – u′(2)(z)). Since z[n–k] is relatively prime to G(z), G(z) must be a right divisor of u′(1)(z) – u′(2)(z). However this is impossible, because u′(1)(z) ≠ u′(2)(z) and degree of u′(1)(z) – u′(2)(z) is less than or equal to [k – 1] but the degree of G(z) is [n–k] which is strictly greater than [k–1], since n – k ≥ k. Thus f1 (z) ≠ f2(z). Hence the theorem. Since the remainder f(z) resulting from dividing u(z) by G(z) is unique, the Theorem 4.3.3.1 implies that there exists an one-to-one correspondence between a message polynomial u(z) and its parity-check polynomial f(z). Therefore knowing only the parity-check polynomial f(z), the message polynomial u(z) can be determined uniquely. 93 In what follows, it is shown how to recover the message polynomial u(z) from its parity-check polynomial f(z). Now one has the equation (4.14): u(z) = q(z) * G(z) + f(z), deg(f(z)) < [n–k]. Consider z[k] * f(z) : z[k] * f(z)= z[k] * (–q(z) * G(z) + u(z)) = z[k] * (–q(z) * G(z)) + z[k] * u(z) = z[k] * (–q(z) * G(z)) + (u′(z) * z[k]) * z[n–k] = z[k] * (–q(z) * G(z)) + u′(z) * z[n] = z[k] * (–q(z) * G(z)) + u′(z) * (z[n]–z) + u′(z) * z = (z[k] * (–q(z))) * G(z) + u′(z) * (H(z)*G(z))+ u′(z) (since G(z) is a right divisor of z[n] – z). = (z[k] * (–q(z)) + u′(z) * H(z)) * G(z) + u′(z), (4.17) where u′(z) = u[kn −]1z[k −1] + u[kn −]2 z[k − 2] + … + u[kn −]k z[0] . See that from (4.17), the message polynomial u(z) is nothing but z[n–k] * u′(z); i.e., u(z) = z[n–k] * u′(z) = z[n–k] *( u[kn −]1z[k −1] + u[kn −]2 z[k − 2] + … + u[kn −]k z[0] ) − k ] [n −1] − k ] [n − 2] − k ] [n − k ] = u[kn −][n + u[kn −][n z + … + u[kn −][n z z 1 2 k = u[nn −]1z[n −1] + u[nn −]2 z[n − 2] + … + u[nn −]k z[n − k ] 94 = un–1 z[n–1] + un–2 z[n–2] + … + un–kz[n–k], where u′(z) is nothing but the remainder obtained when z[k] * f(z) is divided on the right by G(z). Thus the class of [n,k,d]q n q-Cyclic MRD codes for n – k ≥ k are invertible. An example is given in the following which demonstrates the invertible property of the [5,2,4]25 2-Cyclic MRD code. Example 4.3.3.1 : Consider the [5,2,4]25 2-Cyclic MRD code generated by G(z) = z8 + α10 z4 + α17z2 + α13z, where α is a root of the primitive polynomial x5 + x2 + 1 over GF(2). The generator matrix G and the parity-check matrix H for the [5,2,4]25 2-Cyclic MRD code in systematic form are respectively given by G= α13 α2 α17 α14 α10 α9 1 0 0 1 and 1 0 0 α13 H = 0 1 0 α17 0 0 1 α10 α2 α14 . α9 Let u1(z) = z16 + αz8 be the message polynomial to be encoded. Dividing u1(z) on the right by G(z), one obtains z16 + αz8 = (z2 + α12z) * G(z) + f1(z), where f1 (z) = α14 z4 + α24 z2 + α25 z. 95 Dividing z[2] * f1(z) on the right by G(z), one obtains α25z16 + α3z8 + α7z4 = (α25 z2 + α22 z) + G(z) + f1′(z) , where f1′(z) = z2 + α4z. Then the message polynomial u1(z) is z[3] * (z2 + α4z) = z16 + αz8. Thus the message polynomial u1(z) = z16 + αz8 is obtained only with the knowledge of the parity-check polynomial f1(z) = α14z4 + α24 z2 + α25 z. Similarly, the message polynomial u2(z) = z8 can be obtained from the parity-check polynomial f2(z) = α10z4 + α17z2 + α13 z, as the remainder obtained by dividing z[2] * f2(z) on the right by G(z) is f 2′ (z) = z and thus u2 (z) = z[3] * f 2′ (z) . The case when n–k < k, the q-Cyclic MRD codes are not invertible, but the class of shortened [n − t 0 , k − t 0 ]qn q-Cyclic MRD codes, 2k–n ≤ t0 < k has the invertible property which is proved in what follows. Case (ii) n – k < k The case when n – k < k, the class of [n,k,d]q n q-Cyclic MRD codes are not invertible. But the codes obtained by shortening the [n,k,d]q n q-Cyclic MRD codes by removing the t0 leading zero information symbols are invertible, where 2k – n ≤ t0 < k; i.e., the shortened [n − t 0 , k − t 0 ]qn q-Cyclic MRD codes are invertible. Following example shows the face that an [n,k,d]q n qCyclic MRD code with n – k < k is not invertible. 96 3 Example 4.3.3.2: Consider GF (33) = {0, 1, a, …, α 3 −2 }, where α is a root of the primitive polynomial x3 + 2x + 1 over GF(3). Let C = [3, 2,2]33 be the 3-Cyclic MRD code with the generator polynomial G(z) = z3 + α21 z. The generator matrix G and the parity-check matrix H for the [3, 2,2]33 3-Cyclic MRD code in systematic form are respectively given by G= α8 α6 1 0 and H = [1 –α8 –α6]. 0 1 Let u(z) = α22z9 + α7z3 be a message polynomial. Dividing u(z) on the right by G(z), one obtains α22z9 + α7z3 = α22z3 * G(z) + f(z), where f(z) ≡ 0, the zero polynomial. Then dividing z[2] * f (z) on the right by G(z), one obtains the remainder polynomial u′(z) ≡ 0 so that z[1] * u′(z) ≡ 0; but u(z) = α22z9 + α7z3, which is not the zero polynomial. Thus from the parity-check polynomial f(z), the message polynomial u(z) is not retrieved. This is because the parity block is same for the codewords (0, 0, 0) and (0, α7, α22). Thus an [n,k,d]q n q-Cyclic MRD code for which n – k < k need not be invertible. Using the shortening technique to the class of [n,k,d]q n q-Cyclic MRD codes discussed in subsection 4.3.2, one can obtain a class of invertible shortened [n − t 0 , k − t 0 ]qn q-Cyclic MRD codes as follows, 2k – n ≤ t0 < k. 97 Let C denote an [n,k,d]q n q-Cyclic MRD code generated by G(z) = k i=0 n −k i=0 G i z[i] such that n – k < k. Let H(z) = H i z[i] be such that z[n] – z = H(z) * G(z). Let t0 be such that 2k – n ≤ t0 < k. Consider the shortened [n − t 0 , k − t 0 ]qn q-Cyclic MRD code C(t0 ) of length n – t0 and dimension k – t0. The encoding scheme, similar to the [n,k,d]q n q-Cyclic MRD code C, for the shortened [n − t 0 , k − t 0 ]qn q-Cyclic MRD code C( t0 ) is given below. Let u(z) = un −t0 −1 z [( n −t0 ) −1] + un −t0 − 2 z [( n −t0 ) − 2] + ... + un − k z [ n − k ] be a message polynomial to be encoded. Divide u(z) on the right by G(z): u(z) = q(z) * G(z) + f(z), deg (f(z)) < [n – k], (4.18) where q(z) and f(z) are respectively the quotient and the remainder polynomials. Then g(z) = u(z) – f(z) is the code polynomial corresponding to the message polynomial u(z). Now one needs to ensure that no two codewords in the shortened [n − t 0 , k − t 0 ]qn q-Cyclic MRD code C( t0 ) have same parity block. This is proved in the following theorem. Though the proof is similar to the case (i), here it is given for the sake of completeness. THEOREM 4.3.3.2: Let C be an [ n,k ,d ]qn q-Cyclic MRD code such that n – k < k. Let C( t0 ) be the shortened [ n − t0 ,k − t0 ]q n q-Cyclic MRD code, 2k – n ≤ t0 < k. Then no two codewords of C(t0 ) will have same parity-check symbols. 98 Proof: Consider the generator polynomial G(z) of C in the form: G(z) = z[n–k] + Gn − k −1 z [ n − k +1] + … + G0z[0]. Let u(1) (z) = k − t0 u i(1) z[n − t 0 − i] and i =1 u(2) (z) = k − t0 u i(2) z[n − t 0 − i] i =1 be two distinct message polynomials to be encoded. Dividing u(1)(z) and u(2)(z) on the right by G(z), u(1) (z) = q1 (z) * G(z) + f1(z), deg (f1 (z)) < [n–k] and u(2) (z) = q2 (z) * G(z) + f2(z), [4.19] deg (f2 (z)) < [n–k] [4.20] The code polynomials corresponding to u(1)(z) and u(2)(z) respectively are, g1(z) = u(1)(z) – f1(z) and g2(z) = u(2)(z) – f2(z). Suppose that f1(z) = f2(z). Subtracting (4.20) from (4.19), u(1)(z) – u(2)(z) = (q1(z) – q2(z)) * G(z) i.e., z[n–k] * (u′(1)(z) – u′(2)(z)) = (q1(z) – q2(z)) * G(z), where u′(1), u′(2) are such u(1)(z) = z[n–k] * u′(1)(z) and u(2)(z) = z[n–k] * u′(2)(z). 99 This shows that G(z) is a right divisor of z[n–k] * (u′(1)(z) – u′(2) (z)). Since z[n–k] is relatively prime to G(z), G(z) is a right divisor of u′(1)(z) – u′(2)(z). However this is impossible, because u′(1)(z) – u′(2)(z) ≠ 0 and its degree is less than [k–t0–1] but the degree of G(z) is [n – k] which is strictly great than [k–t0–1]. Thus f1 (z) ≠ f2(z). Hence the theorem. Since the remainder f(z) resulting from dividing u(z) by G(z) is unique, the Theorem 4.3.3.2 implies that there exists an one-to-one correspondence between a message polynomial u(z) and its parity-check polynomial f(z). Therefore knowing only the parity-check polynomial f(z) alone, the message polynomial u(z) can be determined uniquely. In what follows, it is shown how to recover the message polynomial u(z) from its parity-check polynomial f(z). Now one has the equation (4.18): u(z) = q(z) * G(z) + f(z), deg(f(z)) < [n–k]. Consider z[k] * f(z) : z[k] * f(z) = z[k] * (–q(z) * G(z) + u(z)) = z[k] * (–q(z) * G(z)) + z[k] * u(z) = z[k] * (–q(z) * G(z)) + (u′(z) * z[k]) * z[n–k] = z[k] * (–q(z) * G(z)) + u′(z) * z[n] = z[k] * (–q(z) * G(z)) + u′(z) * (z[n] –z) + u′ (z) * z = (z[k] * (–q(z))) * G(z) + u′(z) * (H(z)*G(z))+ u′(z) 100 (since G(z) is a right divisor of z[n] – z). = (z[k] * (–q(z)) + u′(z) * H(z)) * G(z) + u′(z), (4.21) where u′(z) = u[kn −]t 0 −1z[k − t 0 −1] + u[kn −]t 0 − 2 z[k − t 0 − 2] + … + u[kn −]k z[0] . See that from (4.21), the message polynomial u(z) is nothing but z[n–k] * u′(z); i.e., u(z) = z[n–k] * u′(z) = z[n–k] *( u[kn −]t 0 −1z[k − t 0 −1] + u[kn −]t 0 − 2 z[k − t 0 − 2] + … + u[kn −]k z[0] ) − k ] [ n − t 0 −1] − k ] [n − t 0 − 2] = u[kn −][n + u[kn −][n t 0 −1 z t0 − 2 z − k ] [n − k ] z + … + u[kn −][n k = u[nn −]t 0 −1z[n − t 0 −1] + u[nn −]t 0 − 2 z[n − t 0 − 2] + … + u[nn −]k z[n − k ] = u n − t 0 −1z[n − t 0 −1] + u n − t 0 − 2 z[n − t 0 − 2] + … + u n − k z[n − k ] , where u′(z) is nothing but the remainder obtained when z[k] * f(z) is divided on the right by G(z). Having carried out a comprehensive study on a characteristic of RD codes, namely the invertible property of the class of RD codes, the next section deals yet another characteristic enjoyed by the class of RD codes: Rank Distance codes having complementary duals. 4.4 Rank Distance Codes With Complementary Duals It is known that an (n, k) F-ary linear code is just a kdimensional subspace of the n-dimensional vector space Fn of ntuples with coordinates in the finite field F. Recall that the vectors u and v in Fn are said to be orthogonal if u, v = 0 and 101 that, if Γ is an (n, k) F-ary linear code, the dual code Γ⊥ is the (n, n–k) F-ary linear code consisting of all vectors v ∈ Fn that are orthogonal to every vector u in Γ. The class of Linear codes with Complementary Duals (LCD codes) is defined by J.L. Massey [19] in 1992. A F-ary linear code Γ is called an LCD code if Γ ∩ Γ⊥ = {0}. It is immediate that Γ is an LCD code just when the following occurs F n = Γ ⊕ Γ⊥ ; that is, when Fn is the direct sum of Γ and Γ⊥. The following theorem due to J.L. Massey [19] gives an algebraic characterization to the class of LCD codes. THEOREM 4.4.1: [19] Let Γ be an (n, k) F-ary linear code with generator matrix G. Then Γ is an LCD code if and only if the k × k matrix GGT is non-singular. Further, if Γ is in LCD code, then ∏Γ = GT (GGT)–1 G is the orthogonal projector from Fn onto Γ. Recall that the trace function tr : GF(2n) → GF(2) is defined by tr(a) = n −1 j= 0 a 2 j . Let B = {b1, b2, …, bn} be an ordered basis of GF(2n) over GF(2) and {b1 , b2 ,..., bn } be the dual basis of B with respect to the trace function, i.e., tr (bi b j ) = δij for 1 ≤ i, j ≤ n, where δij is the Kronecker’s symbol. Then B is called trace-orthogonal if bi = bi , 1 ≤ i ≤ n. The dual basis of any basis of GF (2n) over GF (2) is determined uniquely [20, Theorem 4.1.1]. It is known that a traceorthogonal basis of GF(2n) over GF(2) exists for any positive integer n [23]. This section carries out a brief study on the class of [n,k,d]2n Rank Distance codes having complementary duals. 102 Consider the generator matrix of an [n,k,d]2n MRD code: G= α1 α2 ... αn α α ... α[1] n [1] 1 α1[k −1] [1] 2 α[k2 −1] (4.22) ... α[kn −1] where α1, α2, …, αn are linearly independent over GF(2). Represent the generator matrix G defined as in (4.22) by G = α 2ij k −1,n i, j= 0,1 where α1, α2, …, αn are linearly independent GF(2). This book calls the matrix G = α 2ij k −1,n i, j= 0,1 with the first row entries α1, α2, …, αn being a trace-orthogonal basis in GF(2n) as the trace-orthogonal-generator matrix. Clearly, G generates an [n,k,d]2n MRD code. This section is divided into three subsections. The subsection 1 proves that the class of [n,k,d]2n MRD codes generated by the trace-orthogonal-generator matrices are LCD codes. Description to the (noiseless and noisy) 2-user F-Adder Channel is given in subsection 2. The final subsection gives the coding for the noiseless 2-user F-Adder Channel via the class of [n,k,d]2n MRD codes having complementary duals and describes a coding problem with the noisy 2-user F-Adder Channel. 4.4.1 MRD Codes with Complementary Duals It is observed that an [n,k,d]q n RD code, n ≤ N with d < n – k + 1 need not be an LCD code but it is interesting to see that the class of [n,k,d]2n MRD codes generated by the traceorthogonal-generator matrices are LCD codes. 103 The following counter example shows that an [n,k,d]q n RD code, n ≤ N with d < n – k + 1 need not be an LCD code. Example 4.4.1.1: Let GF (23) = {0, 1, α, α2, α3, α4, α5, α6}, where α is a root of the primitive polynomial x3 + x + 1 over GF(2). Let Γ = [3,2,1]23 be the 2-Cyclic RD code with the generator matrix G corresponding to the generator polynomial G(Z) = z2 + αz is given as G= α 1 0 0 α 1 2 . Clearly |GGT| = (0). Thus the [3,2,1]23 2-Cyclic RD code is not an LCD code. The following theorem proves that an [n,k,d]2n MRD code generated by a trace-orthogonal-generator matrix is an LCD code. THEOREM 4.4.1.1: An [ n,k ,d ]2n MRD code generated by G = α 2j i k −1,n i, j = 0 ,1 with {α1, α2, …, αn} being a trace-orthogonal n basis in GF(2 ) is an LCD code. Let Γ denote an [n,k,d]2n MRD code generated by G= α1 α2 ... αn α α ... α[1] n [1] 1 α1[k −1] [1] 2 α[k2 −1] , ... α[kn −1] where {α1, α2, …, αn} is a trace-orthogonal basis in GF(2n). 104 In order to prove that Γ is an LCD code, one has to prove that the k × k matrix GGT is non-singular. Since {α1, α2, …, αn} is a trace-orthogonal basis in GF(2n), the k row vectors (α12i , α 22i ,..., α n2i ) , i = 0, 1, …, k–1 are orthonormal vectors. It follows that GGT = I, where I denotes the identity matrix. Thus, GGT is non-singular. Therefore, Γ is an LCD code. Further, the orthogonal projector ∏Γ from [GF(2n)]n onto Γ defined by r∏Γ = rGT(GGT)-1G for each r ∈ [GF(2n)]n exists. In the above theorem, it is proved that the class of [n,k,d]2n MRD codes generated by the generator matrices of the form G = α 2j i k −1,n i, j= 0,1 with {α1, α2, …, αn} being a trace-orthogonal basis in GF(2n) are LCD codes. But there exists [n,k,d]q N MRD codes, n ≤ N generated by generator matrices of the form G = α qj i k −1,n i, j= 0,1 with the first row entries α1, α2, …, αn are linearly independent over GF(q) are LCD codes. This is evident from the following example. Example 4.4.1.2: Let Γ = [3,1,3]34 be the MRD code with the generator matrix G : G = [α4 α65 1], where α is a root of the primitive polynomial x4 + x + 2 over GF(3). Clearly |GGT| ≠ (0). The class of [n,k,d]2n MRD codes having complementary duals is effective at coding over the noiseless 2-user F-Adder Channel, which can be seen in the next subsection. 105 4.4.2 The 2-user F-Adder Channel Given a finite field F, the F-Adder Channel is described as the channel whose inputs are elements of F and the output is the sum (over F) of the inputs [25]. This section describes 2-user FAdder Channel as the F-Adder Channel shared by 2 users. Following are the descriptions to the 2-user F-Adder Channel, for both the noiseless and noisy cases. Case (i) Noiseless 2-user F-Adder Channel A pictorial representation of the noiseless 2-user F-Adder Channel is depicted in the following figure. In this noiseless communication channel, the two users of the 2-user F-Adder Channel transmit two n-tuples, say γ1 and γ2 respectively from the F-ary linear codes Γ1 and Γ2. Then the received vector, say r is the componentwise sum γ1 + γ2 over the finite field F. γ1 + r = γ1 + γ2 γ2 Noiseless 2-user F-Adder Channel In this noiseless channel, the problem for the receiver is to decode the received vector r = γ1 + γ2 into the codewords γ1 and γ2 originally transmitted. The next subsection provides a solution to this problem through the class of [n,k,d]2n MRD codes having complementary duals. 106 Case (ii) Noisy 2-user F-Adder Channel Consider the pictorial representation of the noisy 2-user FAdder Channel depicted in the following figure in which the two users are attempting to transmit two γ1 + r′ = γ1 + γ2 + e γ2 Noisy 2-user F-Adder Channel codewords, say γ1 and γ2 respectively from the F-ary linear codes Γ1 and Γ2. Then, in this noisy channel, the received vector, say r′ is the componentwise sum γ1 + γ2 + e over F, where e is an error-vector. The problem for the receiver is to decode the received vector r′ = γ1 + γ2 + e into the transmitted codewords γ1 and γ2. 4.4.3 Coding for the 2-user F-Adder Channel As described in the previous subsection, the 2-user F-Adder Channel is a F-Adder Channel shared by 2 users. This subsection describes how the class of [n,k,d]2n MRD codes having complementary duals can be effectively used over the noiseless 2-user GF(2n) - Adder Channel. For the case when the 2-user F-Adder Channel is noisy, the coding problem is described. It is observed that the class of LCD codes is not suitable for coding over the noisy 2-user F-Adder Channel. 107 Case (i) Noiseless 2-user F-Adder Channel Consider the pictorial representation of the noiseless 2-user F-Adder Channel given in figure for F = GF (2n). Let Γ be an [n, k]2n MRD code generated by a trace-orthogonal-generator matrix and Γ⊥ = [n,n − k]2n denote its dual code. Assume that the two users of the noiseless 2-user GF(2n)-Adder Channel transmit the codewords γ and β from Γ and Γ⊥ respectively. Then, in this noiseless 2-user GF(2n) - Adder Channel, the received vector r is the componentwise sum γ + β over GF(2n). Since Γ is an LCD code, the orthogonal projector ∏Γ = GT (GGT)–1 G defined from [GF(2n)]n onto Γ exists. To receive the codewords γ and β, the receiver simply applies the orthogonal projector ∏Γ on r which gives r∏Γ = γ. The codeword β is then obtained by subtracting γ from r = γ + β. Thus the codewords γ and β transmitted are retrieved from the received vector r successfully. The following example describes the coding for the noiseless 2-user GF(34)-Adder Channel via [3,1,3]34 MRD code. Example 4.4.3.1: Let Γ = [3,1,3]34 be the 3-Cyclic MRD code with the generator matrix G and parity-check matrix H. G = [α4 α65 1] and H = 1 α 1 α3 α2 , α6 where α is a root of the primitive polynomial x4 + x + 2 over GF(3). Note that the generator matrix for the dual code Γ⊥ is H. Since Γ being an LCD code, the orthogonal projector ∏Γ defined from [GF (34)]4 onto Γ is given by 108 α 41 α 22 α37 ∏Γ = α 22 α 37 α3 α18 . α18 α33 Suppose the codewords γ1 = (1, α61, α76) and γ2 = (α2, α5, α8) from Γ and Γ⊥ respectively be transmitted over the noiseless 2-user GF (34)-Adder Channel. Then r = γ1 + γ2 = (α24, α78, α35) is the received vector. Applying the orthogonal projector ∏Γ on r: γ1 = (α24, α78, α35) ∏Γ = (1, α61, α76). Then γ2 = r – (1, α61, α76) = (α2, α5, α8). Hence the codewords γ1 = (1, α61, α76) and γ2 = (α2, α5, α8) are retrieved from r = (α24, α78, α35). Case (ii) Noisy 2-user F-Adder Channel Consider the pictorial representation of the noisy 2-user FAdder Channel depicted in figure. In this noisy channel, the received vector r′ may not always be the sum of the transmitted codewords γ1 and γ2, but may be a sum of the transmitted codewords along errors, i.e., r′ = γ1 + γ2 + d −1 e, where e is an error-vector. Let r[e; q] ≤ with d being 2 a positive integer. The problem here for the decoder is to employ an errorcorrecting decoding scheme to decode the received vector r′. If one employs the coding scheme described for the noiseless case s/he would not recover the transmitted codewords γ1 and γ2 from the erroneously received vector r′. Suppose Γ is an LCD code such that γ1 ∈ Γ, γ2 ∈ Γ⊥, then γ1 + γ2 ∈ Fn = Γ ⊕ Γ⊥ so that error correction is not possible in the erroneously received 109 vector r′ = γ1 + γ2 + e. Consider a situation wherein γ1 + γ2 is a codeword of an (n, k, d) F-ary linear code with the parity-check matrix H. Then employing the associated error-correcting decoding technique and using the syndrome r′HT, one can decode the received vector r′ into γ1 and γ2. d −1 errors in 2 the erroneously received vector r′. So, the prime motivation is to construct multiuser error-correcting codes that can be employed over the noisy 2-user F-Adder Channel effectively. If this is the situation, one can correct upto 110 Linear algebraic codes can be defined using symbols chosen from a set of arbitrary size. However, most of the results of coding theory have been derived assuming that the code symbols are elements of a finite field especially the finite field Z2 = {0, 1}. Recently linear codes over integer rings have raised a great interest for their role in algebraic coding theory and their successful applications in combined coding and modulation. [2, 3] has constructed cyclic codes over Zm (the ring of integers modulo m) where m is an interger of the form p1, p2, …, pk where pi’s are distinct primes, from cyclic codes over Zpi . In his later paper, Blake derived parity check matrices for codes over Zm analogous to Hamming codes and Reed-Solomon codes. Calderbank and Sloane [4], Priti Shanker [23], J.C. Interlando et al [13] extended the notion of cyclic codes, ReedSolomon codes and BCH codes over GF(q) to class of codes over finite rings Zq, with q a power of a prime. Most studies in 111 algebraic coding theory deal with Hamming metric. Since the Hamming metric is not always well matched to the characteristics of the real channels EM. Gabidulin [9] introduced a new metric, called the rank metric, and he called the codes equipped with this metric as rank distance codes. In this chapter we study the codes with rank metric over the ring of integers modulo 2m, where 2m = 2p1, p2, …, pt, where pi’s are distinct primes. These codes are proved to be better than the codes with Hamming metric as they can cater to the complex and unpredictable situations in the communicating channels. Further, they are found to have a better error correcting capability. This chapter is divided into two sections. In the first section we define a new class of codes, called the integer rank distance codes using the ring of integers modulo 2m. In the second section we define the Maximum Integer Rank Distance codes (MIRD codes) using the main result - Singleton - style bound for integer rank distance codes. Further we give the method of coding and decoding algorithm for this new class of MIRD codes without which the construction will not be complete. As said earlier Z2m is the ring of integers modulo 2m where 2m = 2p1 p2… pt, where pi’s are distinct primes. Let Z2m [x] be the ring of polynomials in the indeterminate x. Let p(x) ∈ Z2m[x] be an irreducible polynomial of degree n over Z2m. Let V be Z2m[x] / p (x) , where p(x) denotes the ideal generated by p (x). Clearly V is a module of dimension n over Z2m. Any element x ∈ V can be represented by x = (x1, x2, …, xn) where xi ∈ Z2m i.e., a polynomial is regarded as a n-tuple. The elements of Z2m can be treated as polynomials in 2 over Z2. Hence an element x1 ∈ Z2m has representation as a N0-tuple (x 1i ) , x 2i ,..., x N0i , xij ∈ Z2. Hence, with each x ∈ V we have an associated matrix, 112 m(x) = x11 x12 ... x1n x 21 x 22 ... x 2n x N0 1 x N 0 2 ... x N0 n where the i-th column represents the i-th coordinate ‘xi’ of ‘x’ over Z2. DEFINITION 5.1.1: Rank of an element x ∈ V is defined as the rank of the matrix m(x) over Z2. Let n(x) denote the rank of the m(x). Then it is clear that the function x → r1(x) is a norm on V. We call this as the integer rank norm and denote this by r1(x). The metric induced by the integer rank norm is defined as the integer rank metric on V. If x, y ∈ V, then the integer rank distance between x and y is d1(x, y) = r1 (x + y). We illustrate this by an example. Example 5.1.1: Let V = Z6[x] / x3 + 1 . Then, V is a module over Z6 and the elements of Z6 can be treated as polynomials in 2 over Z2. Let x = (3, 5, 2) ∈ V. 0 1 0 Then, m(x) = 1 0 1 over Z2. 1 1 0 Clearly rank of m(x) is 3. DEFINITION 5.1.2: The module equipped with this integer rank metric, for convenience we call it as the integer rank distance space. DEFINITION 5.1.3: A linear (n, k) integer rank distance code is a linear submodule of dimension k in the integer rank distance space V. 113 By C(n, k), we denote a linear (n, k) integer rank distance code. Let d = min {d1 (x, y) : x, y ∈ C(n, k)}. This d is called the minimum integer rank distance of the integer rank distance code C(n, k). Now C(n, k) is a linear (n, k, d) integer rank distance code. DEFINITION 5.1.4: A generator matrix G of a linear (n, k) integer rank distance code C(n, k) is a k × n matrix over Z2m whose rows form a basis for C(n, k). We can reduce the generator matrix G to the form G = [Ik, Ak, n–k] where Ik is the k × k identity matrix and Ak, n–k is some k × (n–k) matrix over Z2m. DEFINITION 5.1.5: If G is a generator matrix of a linear (n, k) integer rank distance code C[n, k], then a matrix H of order (n – k) × n over Z2m such that GHT = {0} is called a parity check matrix of C[n, k]. T H can be reduced to the form H = − A (n − k)× k ,I n − k . We define a linear (n, k) integer rank distance code as : 1. The linear submodule generated by the rows of the generator matrix (or) 2. the solution space of the parity check matrix. Note: The usual Hamming distance between any two vectors, x, y ∈ V, which is the number of places in which x and y differ also induces a norm on each vector x ∈ V, called the Hamming norm, which is denoted throughout this paper as rH(x). In this section we mainly arrive at a singleton - style bound for integer rank distance codes, using which we define Maximum Integer Rank Distance codes, which we refer by MIRD codes here after. To achieve this we essentially make use of the following lemma. Further, we give a characterization 114 theorem for finding the maximum integer rank distance of a integer rank distance code. Lemma 5.2.1: Let n1 and n2 be any two norms defined on V with n1(x) ≤ n2(x), for all x ∈ V. Let V1(n, d) and V2(n, d) be the volumes of codes with maximum distance d with norms n1 and n2, respectively. Then, V1(n, d) ≤ V2(n, d). Proof : Since n1(x) ≤ n2(x), for all x ∈ V, any y ∈ V1(n, d) will also be in V2 (n, d). Hence V1(n, d) ≤ V2(n, d). THEOREM 5.2.1: (Singleton-style bound for integer rank distance codes) Any linear (n, k, d) integer rank distance code satisfies the inequality d ≤ n – k + 1. Proof : Choosing n1 = r1(x) and n2 = rH(x), we have r1(x) ≤ rH(x), we have by Lemma 5.2.1 and the singleton bound for codes over integer rings with Hamming metric, d ≤ n–k+1. DEFINITION 5.2.1: Codes which attain equality in the singletonstyle bound are called Maximum Integer Rank Distance codes (MIRD codes). The following theorem is used to find the minimum integer rank distance of the linear (n, k) integer rank distance code. THEOREM 5.2.2: Let C be a linear (n, k) integer rank distance code with generator matrix G and parity check matrix H. Then, C has rank distance d if and only if for any (d – 1) × n matrix M of rank d–1 with elements from Z2, r(MHT; Z2m) = d – 1 (5.2.1) and then there exists a d × n matrix M1 of rank d with elements from Z2 for which r(M1 HT; Z2m) < d (5.2.2) 115 Proof : Let x = (x1, x2, …, xn) be any vector in V such that r1(x) ≤ d. Then, there exists a matrix M1 such that x = zM1, where z = (z1, z2, …, zd), zi ∈ Z2m, i = 1, 2, …, d and M1 is a d × n matrix of rank d with elements from Z2. Assume that code C contains a codeword x with rank d. Then, xHT = (0), which implies zM1HT = (0). Consequently, r(M1HT; Z2m) < d. Since the codes has minimum distance d for any (d – 1) × n matrix N of rank d – 1 with elements from Z2, the equation (z1, z2, …, zd-1) MHT = (0) (5.2.3) should have only a trivial solution i.e., r(MHT; Z2m) < d. Sufficient part is direct from the definition. THEOREM 5.2.3: A code C is a linear MIRD (n, k) code if and only if for any (n–k) × n matrix M of rank n – k with elements from Z2; r(MHT; Z2m) = n–k (5.2.4) Proof: From theorem 5.2.1 we get d ≤ n – k +1. By theorem 5.2.1, n – k + 1 ≥ d. Therefore, d = n – k + 1. We define a class of MIRD codes of length n ≤ N0. These codes are analogous to the generalized Reed-Solomon codes over integer rings. We introduce the notation [i] = 2i; i = 0, ± 1, ± 2, … Assume that hi ∈ Z2m, i = 1, 2, …, n and assume that these elements are linearly independent over Z2. Given the designed distance d < n, we generate the matrix 116 H= h1 h2 ... hn [1] 1 [1] 2 ... h[1] n h h h1[d − 2] h[d2 − 2] (5.2.5) ... h [dn − 2] THEOREM 5.2.4: The linear (n, k) integer rank distance code C with parity check matrix H is a MIRD code of length n and minimum integer rank distance d. Proof: By theorem 5.2.3 it is sufficient to show that for any (d–1) × n matrix M of rank d–1 with elements from Z2, we have r(HMT ; Z2m) = d – 1. The square matrix HMT has the form, f1 f2 [1] 1 f HMT = f1[d − 2] f [1] 2 f 2[d − 2] ... fn ... f n[1] (5.2.6) ... f n[d − 2] where (f1, f2, …, fd-1) = (h1, h2, …, hd-1) MT. The elements f1, …, fd–1 ∈ Z2m are linearly independent over Z2, since otherwise, h1, h2, …, hd–1 would also be linearly dependent, in contradiction to our assumption. Clearly, HMT being a Vander Monde matrix is non singular, i.e., r(HMT ; Z2m) = d – 1. THEOREM 5.2.5: Let C be the code with parity check matrix H. Then, generating matrix G has the form, g1 G= [1] 1 g g1[ k −2] g2 g [1] 2 g 2[ k − 2] ... gn ... g [1] n ... g [nk − 2] (5.2.7) where k = n – d + 1 and the elements g1, g2, …, gn are linearly independent over Z2. 117 Proof: From theorem 5.2.4 with d = n–1, there exist elements f1, f2, …, fn ∈ Z2m which are linearly independent over Z2 and satisfy n f1h[s] i , s = 0, 1, …, n–2. (5.2.8) i=0 Since f1, f2, …, fn are linearly independent over Z2, f1[ − k +1] ,f 2[ − k +1] ,...,f n[ − k +1] are also linearly independent over Z2. We take g1 = f1[ − k +1] , g2 = f 2[ − k +1] , …, gn = f n[ − k +1] to be the first row of the matrix (5.2.7). As polynomials with coefficients from Z2m play an important role in the theory of maximum distance separable codes over Z2m the linearized polynomials play similar role in the theory of maximum rank distance codes over GF(2N) [29, 32]. In a analogous way we can use linearized polynomial with coefficients from Z2m to study MIRD codes over Z2m. n f1z[1] , A linearized polynomial is one of the form F (z) = i= 0 [i] = 2i, where fi ∈ Z2m. We define the sums of the polynomials as n n f1z[1] + F(z) + G(z) = i= 0 g1z[1] i =0 R 2m (f i + gi )z[i] = i =0 where R2m (fi + gi) is the least nonnegative integer when fi + gi is divided by the integer 2m. The multiplication product is the symbolic product F * G = F (G(z)). This multiplication operation is non-commutative. The set of all linearized polynomials with coefficients from Z2m form a noncommutative ring with identity element f0 (z) = z. 118 Generalized Inversionless Euclidean algorithm for division (whether left or right) of one polynomial by another exists in this ring. Here we consider right division. Let F0(z) and F1(z) be two linearlized polynomials with degF1(z) < degF0(z). Then by generalized Euclidean algorithm we get a sequential chain of equalities F0(z) F1(z) = G1(z) * F1(z) + F2(z), degF2(z) < degF1(z) = G2(z) * F2(z) + F3(z), degF3(z) < degF2(z) (5.2.9) Fs-1(z) = Gs(z) * Fs(z) + Fs+1(z), degFs+1(z) < degFs(z) Fs(z) = Gs+1(z) * Fs+1(z) The last non zero remainder Fs+1(z) in this chain is the right symbolic LCD of polynomials F0(z) and F1(z). If we introduce polynomials Ui(z), Ai(z), Vi(z) and Bi(z), defined recursively for i ≥ 1, by Ui (z) = Ui–1(z) * Gi(z) + Ui–2(z), U0(z) = z, U–1(z) = 0 Ai(z) = Gi(z) * Ai–1(z) + Ai–1(z), A0(z) = z, A–1(z) = 0 Vi(z) = Vi–1(z) * Gi(z) + Vi–1(z), V0(z) = z, V–1(z) = z (5.2.10) Bi(z) = Bi–1(z) * Gi(z) + Bi–2(z), B0(z) = z, B–1(z) = z then, F0(z) = Ui(z) * Fi(z) + Ui–1(z) * Fi+1(z) F1(z) = Vi(z) * Fi(z) + Vi–1(z) * Fi+1(z). (5.2.11) In addition, Fi(z) = (–1)i (Bi–1(z) * F0(z) – Ai–1(z) * Fi(z)). (5.2.12) Consider the factor ring R N0 which is the ring of the linearlized polynomials over Z2m modulo z[ 0 ] – z. The elements of this factor ring are also linearlized polynomials of degree ≤ [N0] – 1. N 119 N 0 −1 Let F(z) = i =0 f1z[i] ∈ R N0 . Raising the polynomial to the power 2 we get F[1](z) = f N[1]0 −1z[0] + f 0[1] z[1] + ... + f N[1]0 − 2 z[ N0 −1] which is equivalent to raising all its coefficients to the power 2 and then performing a cyclical shift. This operation will be called as a 2-cyclical shift. The ideals in R N0 are principal ideals and are generated by polynomials G(z) that are right divisors of z[ N0 ] – z i.e., the polynomial G(z) is such that z[ N0 ] – z = H(z) * G(z). The ideal {G(z)} is invariant under 2-cyclical shift. The codes with generator matrix of the form (5.2.7) can be described in terms of the linearlized polynomials. Assume that g1, g2, …, gn are specified elements that are linearly independent over Z2. Then all vectors of the form g = (F(g1), F(g2), …, F(gn)), where F(z) extends over all linearlized polynomials of degree less than or equal to [k–1] = 2k–1 with coefficients from Z2m are codewords. Code C is called 2-cyclical if a 2-cyclical shift of any codeword is also a codeword i.e., if (g0, g1, …, gn–1) ∈ C then its [1] [1] 2-cyclic shift g[1] n −1 , g 0 ,...,g n − 2 ∈ C. This is analogous to the usual cyclic codes over the integer ring. Let us consider, for simplicity, codes with length n = No. r G i z[i] is a right zero divisor of Assume that G(z) = i =0 z[ N0 ] – z. Then, its 2-cyclical code consists of all polynomials of the form c(z) * G(z), where c(z) is an arbitrary linearlized polynomial of degree ≤ (N0 – r – 1). The dimension of the code is k = N0 – r. Its generator matrix has the form 120 G0 G= G1 ... [1] 0 0 G 0 0 ... Gr G 0 [1] r −1 G −1] ... G[k 0 [1] r G1[k −1] 0 ... 0 0 ... 0 G[k2 −1] ... G[kr −1] (5.2.13) If z[ N0 ] – z = G(z) * H(z), where G(z) is the generator polynomial then H(z) can be taken as the corresponding check polynomial. We note that an element in V is a code vector if and only if the corresponding linearlized polynomial can be divided without remainder by the generating polynomial G(z). In otherwords, an element g is a code vector if and only if the corresponding polynomial g(z) is such that g(z) * H(z) ≡ 0 mod ( z[ N0 ] – z). k Hi z[i] is a check polynomial, then the check If H(z) = i =0 matrix has the form Hk H= H[1] ... H[k0 ] k −1 [1] k 0 H 0 0 h0 = 0 0 0 ... 0 0 ... 0 ... H H ... 0 H[rk −1] h1 ... hk [1] 0 ... 0 ... h[r0 −1] h 0 [k −1] 0 [k ] 1 h [1] k −1 H[rk −]1 ... H[0N0 −1] (5.2.14) 0 0 ... 0 [1] k 0 ... 0 h h[r1 −1] −1] = h k −i . where H[k i 121 h[r2 −1] ... h[rk −1] Now we proceed onto give the coding and decoding techniques of MIRD codes. As in the case of cyclic codes over the integer ring, systematic coding can be effected either by means of a check polynomial or by means of a generating polynomial. k Hi z[i] is a check polynomial, then each If H(z) = i =0 N 0 −1 g(z) = g i z[i ] satisfies g(z) * H(z) = 0, which gives i =0 k j= 0 g N0 −i − j+1H[jN0 −i − j+1] = 0, i = 0, 1, …, N0 – 1. (5.2.15) If we assume that g N0 −1 ,...,g N 0 − k are information symbols then we can determine the check symbols g N0 − k −1 ,..., g 0 . Assume that we are given the generating polynomial N 0 −1 G(z) = G i z[i] . We divide the polynomial i =0 G0(z) = g N0 −1z N0 −1 + ... + g N0 − k z N0 − k on the right by G(z) to get G0(z) = Q(z) * G(z) + R(z), deg. R(z) < [N0 – k] (5.2.16) The coefficients g N0 −1 for degrees [N0 – i], i = 1, …, N0 of the remainder are the check symbols. MIRD codes with check matrix (5.2.5) can be decoded using an algorithm that is similar to the algorithm for maximum rank codes over fields [32] with appropriate modifications due to the presence of zero divisors. Let g = (g1, g2, …, gn) be the code vector. e = (e1, e2, …, en) be the error vector and y = g + e be the received vector. We first calculate the syndrome 122 s = (s0, s1, …, sd–2) = yHT = eHT. (5.2.17) The decoders problem is to determine the error vector e on the basis of the known syndrome vector s. Assume that the rank norm of the error vector is m. Thus we have e = EN = (E0, E1, …, Em)N (5.2.18) where E0, E1, …, Em are linearly independent over Z2 and N = (Nij) is a m × n matrix of rank m with elements from Z2. Thus (5.2.17) can be written as s = ENHT = EX (5.2.19) where the matrix X = NHT has the form, X= x1 x1[1] ... x1[d − 2] x2 x[1] 2 ... x[d2 − 2] xm x[1] m ... x[dm − 2] n where xp = N pj h j , p = 1, 2, …, m (5.2.20) j=1 are linearly independent over Z2. (5.2.19) is equivalent to the system of equations in the unknowns E0, E1, …, Em, x1, x2, …, xm. m Ei x[p] = sp, p = 1, 2, …, d–2. i (5.2.21) i =1 Assuming that the solution of this system has been found, we can determine the matrix N and the error vector e from (5.2.20) and (5.2.18). For m ≤ (d – 1) / 2 all the solutions lead to the error vector e. Thus, the decoding problem reduces to the solution of system (5.2.20) for the smallest possible value of m. The solution to the system (5.2.21) is unique if and only if all 123 the error magnitudes E0, E1, …, Em are units analogous to the case of the maximum distance codes over the integer rings [32]. d −2 s j z[ j] , corresponding We introduce the polynomial s(z) = j= 0 m to the syndrome s. Assume that Λ(z) = Λ p z[ p] , Λm = 1, p=0 denotes a polynomial whose roots are all possible linear combinations of E0, E1, …, Em with coefficients from Z2. Let m −1 i Λ p s[p] i − p , i = 0, 1, …, m–1. Fi z[i] , where Fi = F(z) = i= 0 p=0 We have the equality F(z) = Λ (z) * s (z) mod z[d–1] (5.2.22) Indeed, m Λ (z) * s (z) = Λ p (s(z))[p] p=0 m + d −1 Λ p s[p] j . z[i] = i=0 p + j −i But for m ≤ i ≤ d – 2, we have m Λ p s[p] j = p + j −i p=0 m [p] m Λp = Λ p s[p] i−p p=0 E jx [ j− p] j j=1 m = j=1 x[i] j Λ(Ej ) = 0 , since Λ (Ej) = 0, j = 1, 2, …, m. 124 If the coefficients of polynomial F(z) are known, then the coefficients of polynomial Λ (z). Λ0 = Fj sj p −1 Fj+ p − Λp = Λ i s[i] p − j− i i=0 [p] j , p = 1, 2, … s (5.2.23) where for j + p ≥ m we set Fj+p = 0. Now we assume that E0, E1, …, Em as well as the coefficients of Λ(z), are known. We consider the following truncated system in the unknows: m E j x[pj ] = sp, p = 1, 2, …, m–1. (5.2.24) j=1 We will solve (5.2.23) using the method of successive elimination of variables. We set Aij = Ej, Q1p = sp; we multiply the (p+1)-th equation of the system by A11, we extract the root of degree 2, and we subtract the p-th equation. As a result we obtain a system that does not contain x1 : p A1 j x[p] = Q1p, p = 0, 1, 2, …, m–2 j (5.2.25) j=1 where A1j = A1j = Q1p = A1p – A1 j [ −1] A11 Q1p +1 A11 A11, j = 2, …, m. [ −1] A11, p = 0, 1, …, m – 2. (5.2.26) 125 Repeating this process m – 1 times, and retaining the first equations obtained from the systems at each step, we arrive at a system of linear equations with a upper triangular coefficient matrix: m A1 j x j = Qi0, p = 0, 1, 2, …, m. (5.2.27) j=1 where A1j = Ej, j = 1, 2, …, m if j < i 0 A1j = A (i −1) j − [ −1] A (i −1) j A(i–1)(i–1) if j ≥ i; i = 2, 3, …, m A (i −1)(i −1) (5.2.28) Q1p = sp, p = 0, 1 , …, m – 1 Q1j = Q(i–1)p Q(i −1)( p +1) Q( i −1)(i −1) [ −1] A(i–1)(i–1) p = 0, 1, …, m – i; i = 2, …, m (5.2.29) The solution of (5.2.25) can be found by back substitution i.e., xm = Qm0 A mm m Q( m− i)i − xm–i = A (m− i) j x j j= m − i +1 , i = 1, 2, …, m – 1. (5.2.30) A (m − i)(m −i) We now state the above in the form of a decoding algorithm. 126 Step 1: We calculate the syndrome s = (s0, s1, …, sd–2) and the d −2 s j z[ j] . corresponding polynomial s (z) = j= 0 Step 2: We set F0(z) = z[d–1], F1(z) = s(z) and employ generalized Euclidean algorithm until we reach a F1+1(z) such that deg F1(z) ≥ 2(d–1)/2 , deg F1+1(z) < 2(d–1)/2. Then ∆(z) = γ Am(z) F(z) = γ (–1)m Fm+1(z) (5.2.31) where, γ is chosen such that the coefficient of Λ m is equal to 1. Polynomial Λ(z) can be determined either on the basis of the first formula in (5.2.22), if polynomials Ai(z), i = 1, 2, …, are calculated in parallel in the course of Euclidean algorithm, or using (5.2.23), which employ the coefficients of the remainder Fm+1(z) calculated in the course of the algorithm. Then roots E0, E1, …, Em of Λ(z) that are linearly independent over Z2 are determined. Step 3: Using 5.2.27 to 5.2.30 the known E0, E1, …, Em are used as a basis for determining x1, x2, …, xm. Representing these quantities in the form (5.2.20), we can obtain matrix N. Finally, we calculate the error vector using (5.2.29). Example 5.2.1: The code with the following parity check matrix 1 4 2 H= has length n = 3 and the designed distance d = 3. 1 2 4 Let y = (3, 2, 1) be the received codeword. Then, the syndrome is s = (s0, s1) = yHT = (5, 5). Hence, by modified inversionless Euclid’s algorithm, 127 Λ(z) = – ( s[1] / s1) + z[1] = –5z + z2. The nonzero root of 0 Λ(z) is 5. Hence, E = 5. From the single equation of the system (5.2.26) we determine x = (s1 / s0) = 1 = (1 × 1) + (0 × 4) + (0 × 2) = y1 h1 + y2 h2 + y2 h2) which gives (y1, y2, y3) = (1, 0, 0). The error vector is e = (y1 E, y2E, y3E) = (5, 0, 0) We have constructed a new class of effective erasure codes over the ring of integers using the rank distance metric. This class of codes can be suited in different applications like reliable computer communication protocols, ARQ protocols in satellites communications and in amateur radios. 128 In this chapter we study concatenation of linear block code with another linear block code or concatenation of three or more linear block codes. We describe this in section one. This chapter has two sections. In section two we describe concatenation of RD codes with CR-matric. We give the probable ways of building concatenated bicodes, biconcatination of codes and quasi concatenated bicodes. The construction and the encoding procedure of the concatenated codes is described in this section which is as follows: Let S = ((n1, n2, …, nt), (k1, …, kt)) be the special supercode defined over the Galois field Z2 = GF(2) and the inner codes C1 = C1(n1, k1), C2 = C2(n2, k2), … and Ct = Ct(nt, kt) be codes with Hamming metric defined over the Galois field GF(2). Suppose m = (x1 | x2 | … | xt) be the message to be encoded where each xi is a ki tuple of the form (a1i ,a i2 ,...,a ik i ) ; 1 ≤ i ≤ t, thus we get x = (b1 | b2 | … | bt) where bi = (a1i ,a i2 ,...,a in i ) ; 1 ≤ i ≤ t where a ij ∈ GF(2); 1 ≤ j ≤ ni; 1 ≤ i ≤ t. 129 Thus we have a k1 + k2 + … + kt dimensional super vector space associated with this concatenated code or the super code is a k1 + k2 + … + kt dimensional vector subspace of a n1 + n2 + … + nt dimensional vector space over Z2. Infact S has 2k1 + k 2 + ...+ k t elements. We can consider a map; g : S → (C1 × C2 × … × Ct) = {(x1, x2, …, xt) | xi ∈ Ci, 1 ≤ i ≤ t} given by g ((x1 | … | xt)) = (x1, x2, …, xt) where xi ∈ Ci; 1 ≤ i ≤ t. This map g is one to one linear transformation of S to C1 × C2 × … × Ct. So S ≅ (C1 × C2 × … × Ct) just ‘|’ replaced by ×. The concatenated code is comprised of the outer code and t number of inner codes. The outer code is a super code and the tinner codes are the row submatrices of the outer code. That is the outer code which is the super code has its sub row vectors from these t inner codes. The t inner codes can be distinct or otherwise. The following is the concatenated coding system. Thus we see the concatenated code word which is a super code takes the form of a super row matrix x = (x11 , x12 ,..., x1n1 x12 , x 22 ,..., x 2n 2 … x1t , x t2 ,..., x nt t ) with x pj ∈ Z2; 1 ≤ j, p ≤ t and the concatenated code S = {x = (x11 , x12 ,..., x1n1 x12 , x 22 ,..., x n2 2 … x1t , x t2 ,..., x tn t | x1j , x 2j ,..., x nj j ) ∈ Cj = Cj (nj, kj); 1 ≤ j ≤ t; x pj ∈ Z2; 1 ≤ j, p ≤ t}. 130 Message Outer encoder First inner encoder … tth inner encoder … Channel First inner decoder … tth inner decoder Outer decoder Decoded message t For any two x, y ∈ S we can define dS (x, y) = d j (x j , y j ) j=1 where xj, yj ∈ Cj (nj, kj); 1 ≤ j ≤ t. It is easily verified dS(x, y) = dS(x+y) denotes the super Hamming metric on S over GF(2) or t-concatenated Hamming metric on S. All properties of Hamming metric can be derived in case of t-concatenated Hamming metric for the concatenated code S. 131 We illustrate this by an example. Example 6.1.1: Let S = {(x1 | x2 | x3 | x4) | x1 ∈ C (2, 3), x2 ∈ C(5, 2), x3 ∈ C (7, 4) and x4 ∈ C (4, 2)} be a concatenated code with the codes C1 = C (8, 3), C2 = (5, 2), C3 = C (7, 4) and C4 = C (4, 2). We see error detection can be done using the parity check matrices of C1, C2, C3 and C4. Error correction can be carried out using coset leader method [16]. This type of concatenated super codes has the following advantages. (i) The rate of transmission is increased. (ii) This concatenated codes saves time during transmission as insteaded of sending t-vectors of each nt tuples we send a lengthened code. (iii) We can retrieve the messages. t Further i =0 d min − 1 ≤ 2 i t d min − 1 . 2 So in a Super code which is the concatenated code using linear codes with Hamming metric we can detect and correct errors, with in the limits of compatibility. Now we describe another type of concatenated code of a linear codes with Hamming metric. 132 Source Divider unit Message 1 … Message t Message 1 … Message t … Super Channel Encoder decoder 1 … Decoder t … Consolidator unit Destination The message x = (x11 , x12 ,..., x1n1 , x12 , x 22 ,..., x 2n 2 , … x1t , x 2t ,..., x nt t ) is sent to the divider unit which devides them 133 into t messages and the messages are sent to t encoder and they pass the super channel and reach as t decoders, from the decoder units reaches the consolidation unit and then the destination. These codes will be useful when the bulk work is distributed to different units and the result is consolidated to get the final message. Let C1, C2, …, Ct be t number of linear codes distinct or otherwise of length n1, n2, …, nt and messages k1, k2, …, kt respectively. We denote by P = (x11 , x12 ,..., x1n1 , x12 , x 22 ,..., x 2n 2 , … x1t , x 2t ,..., x nt t ) | x ij ∈ Z2; 1 ≤ j ≤ t and 1 ≤ i ≤ n1, n2, …, nt}. We say P is concatenated using t inner codes, however P is not a super code, just a code. By using usual transmission the rate of transmission is certainly less or equal to the sum of the rates of transmissions. The diagram is self explanatory. We can use error connection technique or erasure correction technique. Finally we give yet another type of concatenated linear codes which we will define in the following. These will also be known as special blank concatenated codes. Suppose C1 = C(n, k) code and C2 = C(n, k′) or C(n–1, k1) code. Then we form the concatenated code C = C1 C2 = {(x1y1 x2y2 … xn yn) | (x1, x2, …, xn) is in C (n, k) and (y1, y2, …, yn) ∈ C(n, k′)} ((x1 y1 x2 y2 … xn-1 yn-1 xn) where (x1, …, xn) ∈ C(n, k) and (y1, …, yn–1) ∈ C (n–1, k1)) will be defined as the alternate concatenated two code or special blank concatenated code and the transmission is done using the ‘special blank’; however ‘special blanks’ are not erasures. We will describes how the transmission takes place. 134 Information Source Converter* I (x1–x2–…-xn-) or (x1-x2-…-xn) (–y1-y2-…-yn-) or (y1-y2-…-yn-1–) Converter II† Converter II † Message Message Encoder Encoder Channel Decoder I Decoder II Reconverter II with special blanks Reconverter I with special blanks Reconverter Receiver 135 * converter converts this concatenated code into two codes with special blanks. † the special blanks are omitted and the message are sent by converter I and converter II. This sort of coding will be used in networking where some secrecy is to be maintained so that processed as two units by two separate systems and the consolidated result is availed by the receiver. Likewise we can define m-concatenated codes. Deconverter converts the code words with special blanks into the concatenated code. Suppose we have 3 codes say C1 = C(5, 2), C2 = C(6, 3) and C3 = C (5, 3); the 3-concatinated code C = {x1y1z1 x2y2z2 x3y3z3 x4y4z4 x5y5z5 y6) | (x1 x2 … x5) ∈ C1, (y1 y2 y3 y4 y5 y6) ∈ C2 and (z1, z2, …, z5) ∈ C3}. Now this code C of length 16 is sent and converter divides this into 3 codes of length 16 with special blanks codes writer I, writer II and writer III, they convert them into messages of length 5, 6 and 5 respectively and coded and sent via three channels. We can have m number of codes of lengths n1, n2, …, nm with message symbols k1, k2, …, km respectively. That is Ci = (ni, ki), 1 ≤ i ≤ m. Hence C the concatenated m code C1, …, Cm is given by C = { x11x12 ...x1m x12 x 22 ...x 2m x13 x 32 ...x 3m ...x1p1 x 2p2 ...x mpm } where some pi’s may be zero and some pj’s are nj’s; 1 ≤ i, j ≤ m. Now when any x from C is transmitted x is decomposed into m units say 1, 2, …, m where the first unit the code words will be of the form y = ( x11 … x12 … x1n1 …), the second unit y2 = (– x12 … – x 22 … x1n 2 …) and so on. The blanks are special blanks. From the m-units the m-converters will convert these y1, y2, …, ym code words into z1 = ( x11x12 ...x1n1 ), z2 = ( x12 x 22 ...x 2n 2 ), …, zm = ( x1m x 2m ...x mn m ) by removing the special blanks. Now z1, z2, …, zm are sent and as in case of usual transmission we get the received message say as P1, P2, …, Pm then they are passed through the reconverter where they get the special blanks and then they pass through the consolidation channel. Then the 136 receiver receives the message which is a concatenated m-linear code. We just describe the transmission by the following diagram: Message (concatenated message of m codes say of m length Converter* Writer 1 … … Unit 1 Modulator 1 Channel 1 Demodulator 1 Decoder 1 Receiver 1 Writer m Unit m message message Encoder 1 ni ) i −1 … Encoder m … Modulator m … … … … 137 Channel Demodulator m Decoder m Receiver m * Converter converts them into m codes with special blanks. m When the concatenated code of the length n i with i =1 m k i is sent, then the converter concatenated message symbols i =1 m n i = n1+n2 + … + divides them into m codes of each length i =1 nm with special blanks. Now these are sent to m writers writer 1, writer 2, … writer m. These writers write the codes by deleating the special blanks spaces. These units acts as the sender of the message, these messages are encoded by encoder 1, encoder 2, …, encoder m. From the encoder it passes thro’ the modulator, and from the modulators to the channels from channels to decoders and from the decoders to the m receiver if the purpose of the concatenated coding is to send the message to m receivers from one sender. But on the other hand if the purpose is to send to receiver but each channel or system does a different type of m-jobs and should reach the single receiver then we have the decoded mmessages would be sent to m-reversing units and then m of these reversing units to m-rewriters who include the blanks and from it reaches a single reconverter and from the reconverter the receiver receives the message then in that case of extended diagram would be as follows. 138 Message Converter* Writer 1 … … Unit 1 Unit m message message Encoder 1 Writer m … Encoder m Modulator 1 … Modulator m Channel … Channel D1 decorder … Dm decorder Reversing unit 1 … Reversing unit m Rewriter 1 … Rewriter 1 Destination 139 Rewriter m Thus it is a 12 step process. The concatenated code consists of an outer and an inner code. The outer code is a RD code and the inner code is a binary code and the outer code is a code over the inner code. The concatenated code consists of the codewords of the outer code expressed in terms of the alphabets of the inner code. This concatenated coding system is depicted in the following figure: Message Outer Encoder Inner Encoder Channel Super Channel Inner Decoder Outer Decoder Decoder Message From the above figure we see that the encoder of a concatenated code consists of an outer encoder and an inner encoder corresponding to the outer and inner codes respectively. 140 Similarly the decoder of a concatenated code consists of an outer decoder and an inner decoder corresponding to the outer and inner codes respectively. Here the combination of the inner encoder, channel and the inner decoder can be thought of as forming a new channel called a super-channel. The superchannel transmits the codewords of the outer code. The encoding procedure of concatenated codes is given in the following section. Let the outer code A be a linear (n a , k a ,d a ) 2k b RD code defined over, the Galois field GF( 2k b ) and the inner code B be a linear (nb, kb, db)2 code defined over the Galois field GF (2) of order 2. Throughout this section, we consider the inner code with Hamming metric. Let m = (a1, a2, …, a k a ) ∈ [GF( 2k b ) ]ka be the message to be encoded, where each ai ∈ GF (2k b ) . The procedure of concatenation of the outer code A and the inner code B is given in the following three steps: Step 1: The message m = (a1, a2, …, a k a ) ∈ GF ( 2k b ) ]ka where each ai ∈ GF( 2k b ) is encoded with the outer code A into a codeword. Thus we get a na-tuple a = (a1, a2, …, a n a )T where each ai ∈ GF( 2k b ). Now a is the codeword of MRD code which is to be transmitted after applying the following steps: Step 2: GF( 2k b ) is a kb - dimensional vector space over the field GF(2). Let g : GF( 2k b ) → [GF(2) ]k b be the mapping of GF( 2k b ) onto [GF(2) ]k b such that for each symbol ai ∈ GF( 2k b ), i = 1, 2, …, na is mapped into a kb-dimensional vector with symbols in GF(2); that is g(ai) = (bli, b2i, …, bk bi ) where bji ∈ GF(2), j = 1, 2, …, kb and i = 1, 2, …, na. 141 Clearly the map g is a one-one linear transformation of the vector space GF( 2k b ) onto [GF(2) ]k b . Hence, GF( 2k b ) = [GF(2) ]k b . After applying steps 1 and 2 to the message m we denote the result in the form of a matrix; g(a1 ) g(a 2 ) ... g(a n a ) = b11 b 21 ... bk b 1 b12 b 22 ... bkb 2 ... b1n a ... b 2n a ... ... ... bk b n a , (6.2.1) where bij ∈ GF (2), i = 1, 2, …, kb and j = 1, 2, …, na. Step 3: Each g (ai) = (b1i, b2i, …, bn bi ) is encoded with the inner code resulting in a codeword from the inner code given by (b1i, b2i, …, bn bi ), where bji ∈ GF(2), j = 1, 2, …, nb and i = 1, 2, …, na. After applying steps 1, 2, and 3 of the encoding procedure described above to the message m and encoding each row of the matrix (6.2.1) by using the inner code we get the codeword of the concatenated code represented by the following matrix. b11 b 21 ... bn b 1 b12 b 22 ... bnb 2 ... b1n a ... b 2n a ... ... bn b n a (6.2.2) where bij ∈ GF(2), i = 1, 2, …, nb and j = 1, 2, …, na. From here onwards the matrix (6.2.2) will be known as the Concatenated Code Matrix (CC matrix) and will be denoted by 142 CCM (m), that is, it is the related concatenated code matrix of the message m. DEFINITION 6.2.1: The concatenated code obtained by concatenating the outer RD code, a defined over GF( 2k b ) and the inner binary code B is the set of all concatenated code matrices. Let CCM = {CCM(m) / m ∈ [GF( 2k b ) ]ka } denote the collection of all (na × nb) CC matrices or equivalently. CCM = {(bij): bij ∈ GF(2), i = 1, 2, …, na, j = 1, 2, …, nb and (bij)} is a CC matrix. DEFINITION 6.2.2: Let CCM be the concatenated code obtained by concatenating the outer RD code A and the inner binary code B. For two concatenated code matrices X, Y ∈ CCM define dc(X, Y) = r (X + Y), where r (X+Y) denotes the rank of the matrix X + Y over GF (2) obtained by adding the CC matrices X and Y, using the usual matrix addition modulo 2. That is, if X = (aij) and Y = (bij) then X + Y = (aij + bij) mod 2. By the usual properties of the rank of the matrix, for every X, Y, Z ∈ CCM. (i) dc (X,Y) ≥ 0 (ii) dc (X, Y) = 0 if and only if X = Y, (iii) dc (X, Y) = dc (Y, X) (iv) dc (X, Y) ≤ dc (X, Z) + dc (Z, Y). Thus dc is a metric on the set of all concatenated code matrices on CCM and we define dc as the concatenated rank metric (CR-metric). DEFINITION 6.2.3: The set of all concatenated code matrices (CCM) equipped with the concatenated rank metric (CR-metric) dc is called the concatenated Rank Metric code (CRM code). 143 Throughout we denote a CRM code by (CCM, dc). It is clear from the very construction that the CRM code is not a RD code or a binary code. DEFINITION 6.2.4: Let (CCM, dc) be a CRM code. The minimum distance of the concatenated rank metric code (CCM, dc) is defined as d = min {r (X+Y) / X, Y ∈ CCM, X ≠ Y}. For X, Y ∈ CCM we have X + Y ∈ CCM we can restate the above definition as follows: DEFINITION 6.2.5: Let (CCM, dc) be a CRM code with dc the concatenated rank metric. The minimum distance of the concatenated rank metric code (CCM, dc) is defined as d = min {r (X) : X ∈ CCM – {0}}. DEFINITION 6.2.6: Let (CCM, dc) be a CRM code with dc the concatenated rank metric. Let X ∈ CCM. We say r (X) = 0 if and ony if X = 0. DEFINITION 6.2.7: Let (CCM, dc) be a CRM code with dc the concatenated rank metric. Let m be the transmitted message with the corresponding CC matrix viz., X = CCM (m). Let Y be the received matrix. If r (X+Y) = 0, that is, X+Y = 0 which implies X = Y, then Y is the correct message since addition of X and Y is under addition modulo 2. If r (X+Y) > s, s > 0, then Y has an error of rank s. A relation between the minimum distance of the concatenated rank metric code and the minimum distance of the outer RD code is given by the following theorem. THEOREM 6.2.1: Let the outer code A be a linear (n a , k a ,d a ) 2k b RD code defined over GF( 2k b ) and the inner code B be a binary linear (nb, kb, db)2 code defined over GF(2). Let (CCM, dc) be the concatenated rank metric code with the CR-metric dc 144 obtained by using the outer code A and the inner code B. Then the minimum distance of the concatenated rank metric code (CCM, dc) is da : da is just the minimum distance of the outer RD code. Proof : Let the outer RD code A be a (n a , k a ,d a ) 2k b code with minimum distance da and let the inner code B be a binary linear (nb, kb, db)2 code defined over GF(2). Let (CCM, dc) be the concatenated rank metric code obtained by using the outer code A and the inner code B. Let the message m = (a1, a2, …, a k a ) ∈ [GF( 2k b ) ]k b where each ai ∈ GF( 2k b ) be encoded with the outer code A into a codeword a = (a1, a2, …, a n a )T ∈ A. Since the minimum distance of the outer RD code is da, so r(a) ≥ da. This implies atleast da columns of the matrix aT are linearly independent over GF(2). Without loss of generality let us assume that the first da columns of the matrix aT are linearly independent over GF(2). That is, a1, a2, …, a da are linearly independent over GF(2). By the method of concatenating the codes A and B given earlier and after applying the mapping g we get the matrix B= b11 b 21 ... bk b 1 b12 b 22 ... bkb 2 ... ... ... ... b1d a b 2da ... ... b1n a b 2n a ... b k b d a ... ... ... bk b n a where bij ∈ GF(2), i = 1, 2, …, kb and j = 1, 2, …, na. Since r(a) ≥ da, we get r(b) ≥ da. We have, after applying the inner encoder to the matrix B, let the concatenated code matrix corresponding to the message m be CCM(m) = b1, that is, 145 b1 = b11 b 21 ... bnb 1 b12 b 22 ... bnb 2 ... ... ... ... b1d a b 2da ... b n b da ... ... ... ... b1n a b 2n a ... bnfcb n a where bij ∈ GF (2), i = 1, 2, …, nb and j = 1, 2, …, na. Then, r(b1) ≥ da since the addition of parity bits by the inner code B to the matrix b does not change the rank of the matrix b. Hence the minimum distance of the concatenated rank metric code of da. The above theorem is illustrated by the following example. Example 6.2.1: Let the outer code A be a (2, 1, 1) RD code with minimum distance 1 defined over GF(22) = {0, 1, α, α2} where α is the root of the primitive polynomial x2 + x + 1 of GF(22). Let the generator matrix of the outer code A be G = (1 0) where 0, 1 ∈ GF(22). Let the inner code B be a binary (4, 2, 3) code with minimum distance 3 be defined over GF(2) having the parity check matrix H= 1 0 1 0 1 1 0 1 . The mapping g : GF(22) → [GF(2)]2 is the mapping given by the primitive polynomial of GF(22), defined as 0 → 00, 1 → 01, α →10, α2 →11. 146 The concatenated rank metric code CCM = 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 , , 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 , . The CCM has minimum distance d = 1, (since rank of reach of the CC matrices in CCM is either zero or one). In general, in the case of concatenated codes with Hamming matrix the true minimum distance of the code cannot be obtained but only a lower bound can be obtained. Whereas for the CRM code constructed by us the minimum distance calculated in the above theorem is the true minimum distance and not a lower bound. We prove this in the following corollary. Corollary 6.2.1: Let the outer code A be a linear (n a , k a ,d a ) 2k b RD code with minimum distance da defined over GF ( 2k b ) and the inner code B be a binary linear (nb, kb, db)2 code with minimum distance db defined GF (2). Let (CCM, dc) be the CRM code obtained by using the codes A and B. The minimum distance of the CRM code is the true minimum distance and it is just the minimum distance of the outer code. Proof: Let the outer code A be a linear (n a , k a ,d a ) 2k b RD code with minimum distance da defined over GF( 2k b ) and the inner code B be a binary linear (nb, kb, db)2 code defined over GF(2). Let(CCM, dc) be the concatenated rank metric code obtained by using the outer code A and the inner code B. From theorem 6.2.1 we know that the minimum distance of the concatenated rank metric code (CCM, dc) is da. Hence the minimum distance of the concatenated rank metric code is the true minimum distance and not a lower bound for the minimum distance. 147 It is interesting to note that, in the case of (CCM, dc) code or CRM codes if we want to have a desired minimum distance we can without hesitation take the outer RD code with the desired minimum distance and use any convenient binary inner code, for the minimum distance is independent of he choice of the inner code. Thus this concatenation technique helps one to construct any CRM code of desired minimum distance which is not enjoyed by any other class of codes. THEOREM 6.2.2: (Error detection theorem for CRM codes) Let (CCM, dc) be the concatenated rank metric code with CR-metric dc obtained by using the codes A and B where the outer code A is a linear ( na ,ka ,d a )2kb RD code defined over GF( 2 kb ) and the inner code B is a binary linear (nb, kb, db)2 code defined over GF(2). Let X be the transmitted CC matrix and Y be the received matrix. If r(Y) < da then an error has occurred in the matrix Y during transmission. Proof : Let m be the message transmitted. Let X be the associated concatenated code matrix of m, that is X = CCM(m). Let Y be the received concatenated code matrix which contains errors occurred during transmission. Suppose r(Y) < da. From corollary 6.2.1 the minimum distance of the concatenated rank metric code is the true minimum distance and hence r(X) ≥ da for every X ∈ CCM. So, r(Y) < da indicates that an error has occurred during transmission. It is very important to note that from the above theorem we can just by computing the rank of the received matrix, we can immediately conclude that an error has occurred during transmission. We give the decoding procedure for CRM codes. Our decoding procedure for CRM codes is nothing but to obtain a decoding method for the received concatenated code matrix which is done by first decoding with the inner code and then decoding with the outer code. The reason for doing so is due to the systematic construction of CRM codes explained 148 earlier. We know by the very construction of the CRM codes that the received concatenated code matrix has its entries from the alphabets of the inner code. Hence the received concatenated code matrix is first decoded by using the inner code and then it is decoded with the decoding algorithm of the outer code. Hence the decoder of a concatenated code consists of an inner decoder and an outer decoder. Now we explain the decoding procedure for concatenated rank metric codes (CCM, dc) with CR-matrix dc. Let Y be the received message. Clearly Y is the matrix given by Y= y11 y21 ... ynb 1 y12 y22 ... ynb 2 ... y1na ... y 2n a ... ... y n b n a (6.2.3) where yij ∈ GF (2), i = 1, 2, …, nb and j = 1, 2, …, na. We describe the decoding procedure of a received concatenated code matrix Y in the following three steps. Step 1: For each i = 1, 2, …, nb decode (y1i, y2i, …, y n b i ) using the inner code decoder and obtain a kb - tuple (y1i, y2i, …, y k b i ) where bji ∈ GF (2), j = 1, 2, …, nb and obtain the matrix. y= y11 y21 ... ykb 1 y12 y22 ... ykb 2 ... y1na ... y 2n a ... ... y k b n a where yij ∈ GF(2), I = 1, 2, …, kb and j = 1, 2, …, na. Here when decoding with the inner code the number of columns in the received concatenated matrix Y is reduced and the number of row remains unaltered. 149 Step 2: Applying the mapping g-1: [GF(2) ]k b → GF( 2k b ) on each row of the matrix y we get zi ∈ GF( 2k b ). Hence corresponding to the matrix y we obtain a na tuple (z1, z2, …, z n a ) ∈ [GF( 2k b ) ]na . Step 3: Now decode the na-tuple (z1, z2, …, z n a ) ∈ [GF( 2k b ) ]na using the outer decoder. Thus the transmitted message corresponding to the received concatenated code matrix is given by (z1, z2, …, z k a ) ∈ [GF( 2k b ) ]ka which gives only the message symbols. The following examples illustrates the decoding procedure described above. Example 6.2.2: Let the outer code A be a (2, 1,1) RD code defiend over GF(22) = {0, 1, α, α2} where α is the root of the primitive polynomial x2 + 2 + 1 of GF(22). Let the generator matrix of the outer code A be G = (1 0) where 0, 1 ∈ GF(22). Let the inner code B be a binary (4,2,3) code defined over GF(2) having the parity check matrix H= 1 0 1 0 1 1 0 1 . The mapping g : GF(22) → [GF(2)]2 is the mapping given by the primitive polynomial of GF(22), defined as 0 → 00, 1 → 01, α →10, α2 →11. The concatenated rank metric code CCM = 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 , , 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 150 . , Suppose the matrix Y = 1 1 1 0 is received. The 1 0 0 0 received matrix Y is decoded using the decoding procedure of CRM codes described above. By step 1, we first use the inner decoder received matrix Y. The inner decoder decodes (1 1 and (1 0 0 0) to ( 0 0) to obtain the matrix y = 0 to decode the 1 1 0) to (1 1) 1 . 0 Then by step 2, on applying the map g : [GF(2)]2 → GF(22) to each row of matrix y, we get y2 α2 = . By step 3, the outer decodes this column vector y2 to α2 0 the transmitted message symbol (since in this example the RD code has only one message symbol). –1 Now from these concatenated MRD codes we can define biconcatenated MRD codes or concatenated MRD bicodes, C = C1 ∪ C2 where each Ci is a concatenated CRM codes. We can also extend this to n-concatenated CRM codes or concatenated n-CRM codes as C = C1 ∪ C2 ∪ … ∪ Cn where each Ci is a CRM code; 1 ≤ i ≤ n. This form of n-codes will help in the simultaneous processing using n-units which will be time saving. We can also define quasi n-concatenated CRM codes, when some t of them are concatenated CRM codes and the rest are MRD codes. Further the n-concatenated special super codes; C = C1 ∪ C2 ∪ … ∪ Cn if each Ci is a special super code; i = 1, 2, …, n. If n = 2 we get the biconcatenated special super code. We can also have biconcatenated CRM code with a special super codes defined as mixed biconcatenated code. That is C = C1 ∪ C2 where C1 is a super special code and C2 is a CRM code. We can extend this to mixed n-concatenated codes where t of 151 them are super special codes (t < n) and rest are just CRM codes. We can also have the notion of quasi mixed nconcatenated codes where t1 of them are CRM codes, t2 of them are just MRD codes, t3 of them special super codes and the rest of them are just linear codes. Thus we can have quasi mixed nconcatenated codes. These codes will help when bulk messages are sent and this will save time and economy. 152 1. Berlekamp, E.R., Algebraic coding theory, McGraw-Hill, New York, 1968. 2. Birkhoff, G., and Maclane, S., A Brief Survey of Modern Algebra, 2nd ed, New york: The Macmillan Company, 1965. 3. Blake, I.F., Codes over certain rings, Information Control, 20, 396-404, 1972. 4. Blake, I.F., Codes over integer residue rings, Information Control, 29, 295-300, 1975. 5. Calderbank, A.R. and N.J.A. Slaone, Modular and p-adic cyclic codes, Designs, Codes and Cryptography, 6, 21-35, 1995. 6. Forney, G.D., Burst Correcting codes for the classic bursty channel, IEEE Trans. Comm. Tech., COM-19, 772-781, 1971. 7. Forney, G.D., Concatenated codes, MIT Press, Cambridge, 1966. 8. Forney, G.D., On decoding BCH codes, IEEE Trans. Inf. Thy., IT-11, 549-557, 1965. 9. Gabidulin, E.M., Theory of codes with maximum rank distance, Problems of Information Transmission, 21, 1-12, 1985. 153 10. Golay, M.J.E., Notes on Digital Coding, Proc., of the IRE 37, 657-666, 1949. 11. Hamming, R.W., Error detecting and error correcting codes, Bewll Syst. Tech. Jl., 29, 147-160, 1950. 12. Hill, R., A first course in coding theory, Clarendon, Oxford, 1986. 13. Interando, I.C., Palazzo, R. and M. Elia, On the decoding of Reed-Solomon and BCH codes over integer residue rings, IEEE Trans. On information Theory, 43, 1013-1021, 1997. 14. Jungnickel, D., Finite Fields, Structure and arithmetic, Bibliographisher Institut, Mannheim, 1993. 15. Lempel, A., Matrix Factorization over F2 and tracet d min − 1 d min − 1 ≤ orthogonal basis of i = 0 , SIAM 2 2 t i Journal on Computations, 4, 175-186, 1975. 16. Lidl, R. and G. Pilz, Applied abstract algebra, Springerverlag, New York, 1984. 17. Luigi Rizzo, Effective erasure codes for reliable computer communication protocols, Computer Communication Review, 27, 24-36, 1997. 18. Mac Williams, F.J. and N.J.A. Sloane, The theory of error correcting codes, North Holland Publishing Company, 1977. 19. Massey, J.L., Linear Codes with complementary duals, Discrete Mathematics, 106 and 107, 337-342, 1992. 20. Michelson, A.M., and A.H. Leveque, Error-control techniques for digital communication, John Wiley & Sons, New York, 1985. 21. Peterson W.W. Encoding error correction Procedures for the Bose-Chaudhuri codes, IRE Trans Inf Thy 6 459-470, 1960. 22. Peterson, W.W. and E.J. Weldon, Error correcting codes, M I T Press, Cambridge, 1972. 154 23. Priti Shankar, On BCH codes over arbitrary integer rings, IEEE Trans on Inform Theory, 25, 480-2, 1979. 24. Raja Durai, R.S., and Vasantha, W.B., Some results on TDirect codes, Asia-Europe Workshop on information theory, Kamogawa, Japan, June 25-28, 2003. 25. Raja Durai, R.S., On linear codes with Rank metric: Construction, Properties and Applications, Ph.D. Dissertation, Guide Dr. W.B. Vasantha Kandasamy, Department of Mathematics, Indian Institute of Technology, Chennai, May 2004. 26. Reed, I.S., and G. Solomon, Polynomial codes over certain finite fields, SIAM Jl. Appl. Maths, 8, 300-304, 1960. 27. Rimoldi, B, Coding for the Guassian multiple access channel, An algebraic approach, Proceedings of International Symposium on Information Theory, Austin, TX, 1993. 28. Shannon, C.E. A mathematical theory of communication, Bell Syst. Tech., j. 27, 379-426 and 623-656, 1948. 29. Sujatha, R., Construction of concatenation and erasure techniques for the class of MRD codes and their applications, Ph.D. Dissertation, Guide: Dr. W.B. Vasantha Kandasamy, Department of Mathematics, Indian Institute of Technology, Chennai, June 1998. 30. Suresh Babu, N. Studies of rank distance codes, Ph.D. Thesis, Department of Mathematics, Indian Institute of Technology, Chennai, 1995. 31. Tommy Pedersen, Performance aspects of concatenated codes, Likeoping studies in Science and Technology, Dissertations, No. 245, 1992. 32. Vasantha, W.B. and R. Sujatha, Effective erasure codes for reliable computer communication protocols using codes over arbitrary integer rings, Prog. of Maths, Vol 32, 187207, 1998. 155 33. Wekerly, J.F., Detection of unidirectional multiple errors using low-cost arithmetic codes, IEEE Trans. Comput., C24, 210-212, 1975. 34. Zimmermann, K.H., The weight distribution of indecomposable cyclic codes over 2-groups, Journal of Combinatorial Theory (A), 60, 85-103, 1992. 156 2 2-user F-adder channel, 106-8 A Abelian group, 7-9 Algebraic linear codes, 29-32 ARQ system, 83 B Binary symmetric channel, 43-5 Binary symmetric erasure channel, 44-6 Blank spaces, 44-6 C Canonical generator matrix, 35-7 Code word, 29-32 Commutative ring, 11-12 Concatenated bicodes, 129Concatenation of Linear Block codes, 129-32 Coset leader method, 38-40 Coset leader, 38-9 CRM code, 142-9 157 CR-metric, 140-9 Cyclic code, 40-4 E Erasure technique, 41-5 Erasures, 43-5 F Factor group, 10-11 Field, 16-7 G Group code, 31-3 Group, 7-9 I Integer rank distance code, 112-5 Integer rank distance code, 113-9 Integer rank distance space, 113-5 Irreducible polynomial, 19-20 L LCD codes, 101-5 Left ideal, 13-4 Linear submodule, 113-5 M Maximal cyclic codes, 40-3 Maximal ideal, 20-3 Minimal ideal, 20-3 MIRD codes, 111-4 MRD codes with complementary duals, 103-5 MRD codes, 49-53 158 N Noiseless 2-user F-adder channel, 106-8 Noisy 2-user F-adder channel, 107-8 Normal subgroup, 9-11 P Parity check code, 34-5 Parity check matrix of a linear code, 31-3 Polynomial ring, 18-9 Prime field, 17-8 Q q-Cyclic MRD codes, 91-4 q-Cyclic RD codes, 83-6 Quasi concatenated bicodes, 129Quotient ring, 15-6 R Rank distance code, 46-9 Rank distance space, 46-53 Rank metric, 46-53 Rank norm, 46-53 Reducible polynomial, 19-20 Repetition code, 33-5 Right coset, 10-11 Right ideal, 13-4 S Shortened q-cyclic RD-codes, 89-92 special blank concatenated codes, 134-9 Special blanks, 46-8, 133-6 Subfield, 17-8 Subgroup, 8-10 159 Subring, 12-3 Super code, 129-135 T t-concatenated Hamming metric, 129-135 Transmission rate, 31-3 V Vander monde Matrix, 116-8 Vector space, 25-6 Vector subspace, 25-6 160 ! ! "" "" ! # ' # ( # # * ) " + # # ! ! ( ( - * $$ . + / # ' ( , ! # # ) ' , ! # ) $0 1 2 3 $%$ $& ( # ( ( . , ' 4 5 ! ( 2 ( ! " # 7 !# ! 899 8 899((( ; @00 , ( ( " ( 5 ) 9 < ! # ) 9(! 9 ;# = # 4 6 ! : 9 ! >? ! ) ! ! 5 ! ! ! 3 4 " ! ! "" 4 5 " ! 4 ( # = * @0 . 5 5 C ! # # = " = ' - ' B ( 7 - 1 @0 , ( ! 161 5 @0 0 . 4 A ; @0 # 2 < - ) 6 4 ( ! 4 5 < # ( ! 7-1 D $ # # ! ) # ! ( ) ##, % ? ' ! 6 B ; ! D 7-1 2 = 162 $ ! 0