This is the submitted version of the article: Benbelkacem, N.; Borges, J.,; Dougherty, S. T.; [et al.]. «On Z2Z4-additive complementary dual codes and related LCD codes». Finite Fields and Their Applications, Vol. 62 (Feb. 2020), art. 101622. DOI 10.1016/j.ffa.2019.101622 This version is available at https://ddd.uab.cat/record/239899 under the terms of the license On Z2 Z4 -additive complementary dual codes and related LCD codes N. Benbelkacema , J. Borgesb , S.T. Doughertyc , C. Fernández-Córdobab a Faculty of Mathematics, University of Science and Technology Houari Boumediene b Department of Information and Communications Engineering, Universitat Autònoma de Barcelona c Department of Mathematics, University of Scranton Abstract Linear complementary dual codes were defined by Massey in 1992, and were used to give an optimum linear coding solution for the two user binary adder channel. In this paper, we define the analog of LCD codes over fields in the ambient space with mixed binary and quaternary alphabets. These codes are additive, in the sense that they are additive subgroups, rather than linear as they are not vector spaces over some finite field. We study the structure of these codes and we use the canonical Gray map from this space to the Hamming space to construct binary LCD codes in certain cases. We give examples of such binary LCD codes which are distance-optimal, i.e., they have the largest minimum distance among all binary LCD codes with the same length and dimension. Keywords: Z2 Z4 -additive codes, LCD codes, complementary dual, Gray map 2000 MSC: 94B25, 94B60 1. Introduction Let Z2 and Z4 be the ring of integers modulo 2 and 4 respectively. Let Zn2 denote the set of all binary vectors of length n and let Zn4 be the set of all n- tuples over the ring Z4 . Any non-empty subset C of Zn2 is a binary code and a subgroup of Zn2 is called a binary linear code. If C ⊂ Zn2 is a binary linear code, then C is also a linear subspace of Zn2 (considered as the binary vector space of dimension n). If the dimension of C is k, then we say that C is a binary (n, k) code. Any non-empty subset C of Zn4 is a quaternary code and a subgroup of Zn4 is called a quaternary linear code. A binary code is said to be linear complementary dual (LCD) if it is linear and C ∩ C ⊥ = {0}. Binary LCD codes were defined and characterized in [14]. In that paper, it is shown that these codes are an optimum linear coding solution for the two-user binary adder channel. In [4], LCD codes are used for an application in the security of digital communication; specifically, in counter measures to passive and active side-channel attacks in embedded cryptosystems. Preprint submitted to Elsevier November 25, 2019 Some constructions of LCD codes are given in [5], where the authors develop a linear programming bound on the largest size of an LCD code when the length and the minimum distance is given. More recently, in [10], the authors study LCD codes with the largest minimum distance for fixed length and dimension. LCD cyclic codes over finite fields are called reversible codes in [13], and it is shown that some LCD cyclic codes over finite fields are BCH codes. Later, in [11], the authors give constructions of families of reversible cyclic codes over finite fields and prove that some of these LCD cyclic codes are optimal codes. A more general class of LCD cyclic codes, the LCD quasi-cyclic codes, were studied in [6] and generalized in [8]. Complementary dual codes have also been studied in [12] for linear codes over finite chain rings. β A Z2 Z4 -additive code is an additive subgroup of Zα 2 × Z4 . These codes were first introduced in [16], as abelian translation-invariant propelinear codes. Later, an exhaustive description of Z2 Z4 -additive codes was done in [2]. The structure and properties of Z2 Z4 -additive codes have been intensely studied, for example in [1], [3], and [7]. Here, we generalize the notion of LCD codes to additive complementary dual β (ACD) codes in Zα 2 × Z4 . We construct infinite families of codes that are ACD. We use these ACD codes to construct infinite families of binary LCD codes via the Gray map. We give conditions for the case when the image of an ACD code is a binary LCD code. We say that a binary LCD (n, k) code is distance-optimal if it has the largest minimum distance among all binary LCD (n, k) codes. A complete classification of binary distance-optimal LCD (n, k) codes for 1 ≤ k ≤ n ≤ 16 is given in [10]. In Examples 5.2 and 5.12, we show that some binary distance-optimal LCD codes are binary images of ACD codes. The paper is organized as follows. In Section 2, we recall the basic definitions and properties of Z2 Z4 -additive codes. In Section 3, we define ACD codes and state several properties similar to those of LCD codes. In Section 4, we study different cases of ACD codes, taking into account if the binary and the quaternary parts are complementary dual codes, or are not. We give several infinite families of ACD codes. In Section 5, we construct binary LCD codes as binary images of ACD codes, giving necessary and sufficient conditions. Finally, in Section 6, we summarize the main results of the paper. 2. Z2 Z4 -additive codes We define Z2 Z4 -additive codes and give some known properties. Specially, those properties related to the duality and linearity of Z2 Z4 -codes and also to the binary image of these codes via the Gray map. β Definition 2.1. A Z2 Z4 -additive code C is a subgroup of Zα 2 × Z4 , where α and β are nonnegative integers. Unless otherwise stated, the first α coordinates correspond to the coordinates over Z2 and the last β coordinates to the coordinates over Z4 . For a vector 2 β 0 0 u ∈ Zα α 2 × Z4 , we write u = (u | u ), where u = (u1 , . . . , uα ) ∈ Z2 and u = β (u01 , . . . , u0β ) ∈ Z4 . Note that a vector in boldface indicates that it has mixed coordinates (binary and quaternary), whereas if a vector is not in boldface, then all of its coordinates are either over Z2 or over Z4 . However, when we write 0 (respectively 1), we mean the binary or quaternary all-zero vector (respectively all-one vector). In such cases, the alphabet and the length of these vectors will be clear from the context. Also, we denote by 2 the quaternary all-two vector. If C is a Z2 Z4 -additive code, then C is isomorphic to Zγ2 × Zδ4 , for some nonnegative integers γ and δ. Therefore, C has |C| = 2γ+2δ codewords and the number of codewords of order at most two is 2γ+δ . Let X (respectively Y ) be the set of Z2 (respectively Z4 ) coordinate posi- tions, so |X| = α and |Y | = β. Call CX (respectively CY ) the punctured code of C by deleting the coordinates outside X (respectively Y ). Let Cb be the sub- code of C which contains exactly all codewords of order at most 2. Let κ be the dimension of (Cb )X , which is a binary linear code. For the case α = 0, we write κ = 0. Considering all these parameters, we say that C is of type (α, β; γ, δ; κ). Note that CY is a quaternary linear code of type (0, β; γY , δ; 0), where 0 ≤ γY ≤ γ, and CX is a binary linear code of type (α, 0; γX , 0; γX ), where κ ≤ γX ≤ κ + δ. A Z2 Z4 -additive code C is said to be separable if C = CX × CY . Two Z2 Z4 -additive codes C1 and C2 , both of type (α, β; γ, δ; κ), are said to be monomially equivalent, if one can be obtained from the other by permutating the coordinates and (if necessary) changing the signs of certain Z4 coordinates. Although C is not a free module in general, there exist {ui }γi=1 and {vj }δj=1 such that every codeword in C can be uniquely expressible in the form γ X δ X λi ui + µj vj , i=1 j=1 where λi ∈ Z2 for all 1 ≤ i ≤ γ, µj ∈ Z4 for all 1 ≤ j ≤ δ and ui , vj are codewords of order two and order four, respectively. Moreover, the vectors ui , vj give us a generator matrix G of size (γ + δ) × (α + β) for the code C. This generator matrix G can be written as  G = GX GY , (1) where GX is matrix over Z2 of size (γ + δ) × α and GY is a matrix over Z4 of size (γ + δ) × β. Note that GX is the generator matrix of CX and GY is the generator matrix of CY . In [2], it is proven that if C is a Z2 Z4 -additive code of type (α, β; γ, δ; κ), then C is permutation equivalent to a Z2 Z4 -additive code with standard generator matrix of the form   Iκ Tb 2T2 0 0 GS =  0 0 2T1 2Iγ−κ 0  , (2) 0 Sb Sq R Iδ 3 where Tb , Sb are matrices over Z2 ; T1 , T2 , R are matrices over Z4 with all entries in {0, 1} ⊂ Z4 ; and Sq is a matrix over Z4 . Let φ : Z4 −→ Z22 be the usual Gray map defined in [9], that is, φ(0) = (0, 0), φ(1) = (0, 1), φ(2) = (1, 1), φ(3) = (1, 0). β Let Φ be the following extension of the usual Gray map: Φ : Zα n 2 × Z4 −→ Z2 , where n = α + 2β, given by β Φ(u | u0 ) = (u, φ(u01 ), . . . , φ(u0β )) ∀u ∈ Zα 0 0 0 2 , ∀u = (u1 , . . . , uβ ) ∈ Z4 . Let C be a Z2 Z4 -additive code of type (α, β; γ, δ; κ). The binary code C = Φ(C) of length n = α + 2β is a Z2 Z4 -linear code of type (α, β; γ, δ; κ). From now on, β we denote the code in Zα 2 × Z4 by using a calligraphic letter, C, whereas the image under the Gray map is written in a regular letter C = Φ(C). The Hamming distance dH (u, v) between two vectors u, v ∈ Zn2 is the number of coordinates in which u and v differ, and the Hamming weight of a vector u ∈ Zn2 , denoted by wH (u), is the number of nonzero coordinates of u, so dH (u, v) = wH (u − v). On the other hand, the Lee weights of the elements in Z4 are defined as: wL (0) = 0, wL (1) = wL (3) = 1, wL (2) = 2. Then, the Lee weight of a vector u ∈ Zn4 , denoted by wL (u), is the addition of the weights of its coordinates, whereas the Lee distance dL (u, v) between two vectors u, v ∈ Zn4 β is dL (u, v) = wL (u − v). For a vector u = (u | u0 ) ∈ Zα 2 × Z4 , define the 0 weight of u, denoted by wt(u), as wtH (u) + wtL (u ) and the distance between β u, v ∈ Zα 2 ×Z4 to be d(u, v) = wt(u−v). Denote by d (C) the minimum distance between codewords in C. Note that the map Φ is an isometry which transforms β α+2β distances in Zα2 × Z4 to Hamming distances in Z2 . The inner product of two vectors u = (u | u ) and v = (v | v 0 ) is defined as 0 Xα β X [u, v] = 2( ui vi ) + u0j vj0 ∈ Z4 , i=1 j=1 where the computations are made taking the zeros and ones in the α binary coordinates as quaternary zeros and ones, respectively. For binary vectors u, v and quaternary vectors u0 , v 0 , we denote its inner product as [u, v]2 and [u0 , v 0 ]4 , respectively. Note that [u, v] = 2[u, v]2 + [u0 , v 0 ]4 , for u = (u | u0 ), v = (v | v 0 ), and considering [u, v]2 ∈ {0, 1} as elements in Z4 . The dual code of C, denoted by C ⊥ , is defined in the standard way as β C ⊥ = {v ∈ Zα 2 × Z4 | [u, v] = 0 for all u ∈ C}. Let C be a Z2 Z4 -additive code. Then, its dual code is also a Z2 Z4 -additive code. Moreover, their types are related as it is shown in the following theorem. Theorem 2.2 ([2]). If C is a Z2 Z4 -additive code of type (α, β; γ, δ; κ), then its dual code, C ⊥ , is a Z2 Z4 -additive code of type (α, β; γ̄, δ̄; κ̄), where γ̄ = α + γ − 2κ, δ̄ = β − γ − δ + κ, κ̄ = α − κ. 4 Moreover, if C is a Z2 Z4 -additive separable code, then C ⊥ = (CX )⊥ × (CY )⊥ . As for binary and quaternary codes, we say that a Z2 Z4 -additive code C is self-orthogonal if C ⊂ C ⊥ and self-dual if C = C ⊥ . In general, the Gray map image C of C is not linear, and thus, it need not be related to a dual in the usual sense. We then define the Z2 Z4 -dual of C to be the code C⊥ = Φ(C ⊥ ). We have the following diagram Φ C −−−−→ C = Φ(C)   ⊥y Φ C ⊥ −−−−→ C⊥ = Φ(C ⊥ ). Note that, in general, C⊥ is not the dual of C, so we cannot add an arrow on the right side to produce a commutative diagram. For example, if we have a Z2 Z4 -linear code C that is not linear, then clearly C ⊥ 6= C⊥ . The linearity of Z2 Z4 -linear codes was studied in [7]. The key to establish this linearity was the fact that Φ(v + w) = Φ(v) + Φ(w) + Φ(2v ∗ w), (3) where ∗ denotes the component-wise product. It follows immediately that Φ(C) is linear if and only if 2v ∗ w ∈ C, for all v, w ∈ C. Note that Φ(v) + Φ(2u) = β Φ(v + 2u), for v, u ∈ Zα 2 × Z4 . Let C be a Z2 Z4 -additive code with generator matrix as in (1). We define the product  T  T GX = 2GX GTX + GY GTY ,  G · G = GX GY · GTY with entries from Z4 , where all entries in GX are considered as elements in {0, 1} ⊂ Z4 and the product of a row by a column is computed as the inner β product of vectors in Zα T T 2 ×Z4 . Note that in GX GX and GY GY the usual matrix T multiplication is used, but not in G · G . 3. Additive complementary dual codes In this section, we generalize the concept of linear complementary duality to Z2 Z4 -additive codes. We also give an infinite family of Z2 Z4 -additive codes that are additive complementary dual. β Definition 3.1. A code C ⊆ Zα 2 × Z4 is additive complementary dual (briefly ACD) if it is a Z2 Z4 -additive code such that C ∩ C ⊥ = {0}. For the case β = 0, an ACD code is simply a binary LCD code. If α = 0, then an ACD code is called a quaternary LCD code. For binary LCD codes we have the following property. 5 Lemma 3.2 ([14]). Let C be a binary LCD code. Then Zn2 = C ⊕ C ⊥ . That is, any vector w in Zn2 can be written uniquely as w1 + w2 , for w1 ∈ C and w2 ∈ C ⊥ . This proposition can be easily extended to ACD codes. β β Lemma 3.3. Let C ⊆ Zα α 2 × Z4 be an ACD code. Then any vector w ∈ Z2 × Z4 ⊥ can be written uniquely as w1 + w2 , for w1 ∈ C and w2 ∈ C . The following proposition characterizes binary LCD codes by considering their generator and parity-check matrices. Proposition 3.4 ([14]). Let C be a binary (n, k) linear code with generator matrix G and parity-check matrix H. The following statements are equivalent: 1. C is an LCD code, 2. the k × k matrix GGT is nonsingular, 3. the (n − k) × (n − k) matrix HH T is nonsingular. Now, we will study an analogous property of Proposition 3.4 for ACD codes. If we have a generator matrix for an ACD code, sometimes we will need to make some changes in the matrix (e.g. permutations of rows and columns and sign changes). Hence, we will make use of the following technical lemma. Lemma 3.5. If C is an ACD code, then any monomially equivalent code C 0 is also an ACD code. Proof. The result is straightforward, since the inner product of two vectors is not changed by coordinate permutations or sign changes. Now, we state sufficient conditions for a Z2 Z4 -additive code to be ACD. Proposition 3.6. Let G be a generator matrix for a Z2 Z4 -additive code C. Denote by v1 , . . . , vr the rows of G, so that C = hv1 , . . . , vr i. If [vi , vj ] ∈ {0, 2} and [vi , vi ] ∈ / {0, 2} for all i, j = 1, . . . , r such that i 6= j, then C is an ACD code and CY is a quaternary LCD code. Proof. Let x ∈ C \{0} be any nonzero codeword. P We want to show that x ∈ / C⊥. Since x ∈ C, x can be written as x = i∈J λi vi , where J = {1, . . . , r} and λi ∈ Z4 . First, assume there exists j ∈ J such that λj ∈ {1, 3}. Thus, X X [x, vj ] = λi [vi , vj ] = λi [vi , vj ] + λj [vj , vj ]. i∈J i∈J\{j} / C⊥. Since λi [vi , vj ] ∈ {0, 2} for i 6= j, we have that [x, vj ] 6= 0 and x ∈ P if λi ∈ {0, 2} for all i ∈ J, let j ∈ ⊥ Finally, J such that λj = 2. Then, [x, vj ] = i∈J λi [vi , vj ] = 2[vj , vj ] = 2 and x ∈ /C . The same argument can be used for CY . 6 Corollary 3.7. Let G be a generator matrix for a Z2 Z4 -additive code C and consider the matrix G · GT = (wij )1≤i,j≤r with entries from Z4 . If wij ∈ {0, 2} and wii ∈ / {0, 2} for all i, j = 1, . . . , r such that i 6= j, then C is an ACD code and CY is a quaternary LCD code. Proof. It is a direct consequence of Proposition 3.6. Remark 3.8. The reverse statements of Proposition 3.6 and Corollary 3.7 are not true in general. Let C be the Z2 Z4 -additive code generated by   1 1 1 2 0 G= . 0 0 1 2 1 We have that C is ACD, but in this case   T 2 2 G·G = . 2 0 Corollary 3.9. If G · GT is invertible (over Z4 ), then C is an ACD code. Remark 3.10. Again, the reverse statement of Corollary 3.9 is not true in general. Let C be the Z2 Z4 -additive code generated by   1 0 0 0 0 G =  0 1 1 2 1 . 0 0 0 0 2 We have that C is ACD, but in this case   3 2 G · GT = , 2 0 that is not invertible (over Z4 ). Proposition 3.11. Let C be a binary (α, k) code and let {v1 , . . . , vk } be a basis for C. Let δ ≥ k and let GX be the δ × α matrix whose non-zero row vectors are {v1 , . . . , vk }. Then, the Z2 Z4 -additive code C of type (α, δ; 0, δ; 0) generated by G = (GX | Iδ ) is an ACD code. Proof. Let C be the Z2 Z4 -additive code with generator matrix G = (GX | Iδ ). Note that G · GT = 2GX GTX + Iδ = (wij )1≤i,j≤δ , where all entries in GX are considered as elements in {0, 1} ⊂ Z4 , and hence 2GX GTX has all entries in {0, 2}. Therefore, wij ∈ {0, 2} and wii ∈ / {0, 2} for all i, j = 1, . . . , δ such that i 6= j, and C is ACD by Corollary 3.7. The generator matrix G is in standard form and it is easy to see that C is of type (α, δ; 0, δ; 0). 7 4. Complementary duality of C, CX and CY In this section, we discuss the complementary duality of a Z2 Z4 -additive code C in terms of the complementary duality of CX and CY . First, in Example 4.1, we give an example of a non ACD code C such that CX and CY are binary and quaternary LCD codes, respectively. We also show in Example 4.2 an ACD code, where neither CX nor CY are LCD codes. The case when C is an ACD code and both CX and CY are LCD codes is studied in Section 4.1, and it includes separable codes. Finally, in Section 4.2, we consider the case when C is ACD and either CX or CY is LCD. We start with an example of a Z2 Z4 -additive code that is not ACD and, by contrast, CX is a binary LCD code and CY is a quaternary LCD code. Example 4.1. Let C be a Z2 Z4 -additive code of type (α, α; 1, α; α) generated by   Iα Iα . 1 2 Clearly, CX = Zα α 2 is an LCD code and CY = Z4 is also LCD. However, the last row vα+1 = (1 | 2) is orthogonal to any row in the generator matrix. Hence, vα+1 ∈ C ∩ C ⊥ and C is not complementary dual. In the following example we show that there exist Z2 Z4 -additive ACD codes C such that neither CX nor CY are complementary dual codes. Example 4.2. Let C be the code given in Remark 3.8. The generator and the parity check matrices of C are     1 0 1 0 2 1 1 1 2 0 G= , H= 0 1 1 0 2 , 0 0 1 2 1 0 0 1 1 0 ⊥ respectively. Note that (1, 1, 0) ∈ CX ∩ CX and (2, 0) ∈ CY ∩ CY⊥ . Therefore, CX and CY are not a binary LCD and quaternary LCD codes, respectively. However, we have that C is an ACD code since C ∩ C ⊥ = {0}. 4.1. ACD codes C with both CX and CY LCD codes For this case, we distinguish when C is a separable or a non-separable code. Proposition 4.3. Let C be a Z2 Z4 -additive code. If C is separable, then C is an ACD code if and only if CX is a binary LCD code and CY is a quaternary LCD code. Proof. Since C is separable, C = CX × CY and C ⊥ = CX ⊥ × CY⊥ . Assume C is an ACD code. By definition, any codeword u = (u | u ) ∈ C ∩ C ⊥ is the zero 0 ⊥ codeword. Let u ∈ CX ∩ CX . The codeword (u | 0) ∈ C ∩ C ⊥ and this implies that u = 0 . So, CX is a binary LCD code. Similarly, if u0 ∈ CY ∩ CY⊥ , then (0 | u0 ) ∈ C ∩ C ⊥ and hence u0 = 0 that implies that CY is a quaternary LCD code. 8 Conversely, let CX and CY be a binary and a quaternary LCD code, respec- tively. Let u = (u | u0 ) ∈ C ∩ C ⊥ . This implies that u ∈ CX ∩ CX ⊥ = {0} and 0 ⊥ 0 u ∈ CY ∩ CY {0}. Then, u = (u | u ) is the zero codeword and C is an ACD code. As we have seen in Proposition 4.3, a separable Z2 Z4 -additive code C = CX × CY is ACD if and only if both CX and CY are linear complementary codes. However, there also exist non-separable ACD codes C such that CX is binary LCD and CY is quaternary LCD, as we can see in the following example. Example 4.4. Let C be a Z2 Z4 -additive code generated by   1 0 0 1 2 0  0 1 0 0 2 1 . 0 0 1 2 1 2 Let v1 , v2 and v3 the row vectors of G. We can see that [vi , vj ] = 0, for all i 6= j, and [vi , vi ] 6∈ {0, 2}, Therefore, by Proposition 3.6, C is ACD. Moreover, CX and CY are both LCD codes. 4.2. ACD codes C with either CX or CY LCD codes β In Proposition 3.11, we obtain a family of free Z2 Z4 -additive codes in Zα 2 ×Z4 that are ACD. The following lemma is a particular case of Proposition 3.11 and gives a family of ACD codes C where CX is self-orthogonal and CY = Zδ4 , Therefore, CX is not LCD and CY is LCD. Lemma 4.5. Let D be an (α, δ) binary self-orthogonal code with generator matrix GX . Then, the Z2 Z4 -additive code C with generator matrix G = (GX | Iδ ) is an ACD code of type (α, δ; 0, δ; 0). Corollary 4.6. For any non-negative integers α and δ ≤ b α2 c, there exist an ACD code of type (α, δ; 0, δ; 0) and (α, δ; α − 2δ, δ; α − δ). Proof. There exist an (α, δ) binary self-orthogonal code D, for all δ ≤ b α2 c. By using the construction given in Lemma 4.5, we obtain an ACD code C of type (α, δ; 0, δ; 0). The code C ⊥ is also ACD and it is of type (α, δ; α − 2δ, δ; α − δ) by Theorem 2.2. Corollary 4.7. Let C be a (α, δ) binary self-dual code with generator matrix GX . Then, the Z2 Z4 -additive dual code C with generator matrix  G = GX | I α2 is an ACD code of type (α, α2 ; 0, δ; 0). Note that if CY is a quaternary self-orthogonal (or self-dual in particular) code with generator matrix GY , then the Z2 Z4 -additive code with generator matrix G = (Iα | GY ) is not necessarily ACD. 9 Example 4.8. Let C be a Z2 Z4 -additive code generated by   1 0 0 1 1 1 1  0 1 0 2 0 2 0  0 0 1 0 2 0 2 Note that CY is a quaternary self-dual code, but C is not ACD since the vector (0, 0, 0, 2, 2, 2, 2) ∈ C ∩ C ⊥ . In general, if CY is a quaternary self-orthogonal code of length β and type 2γ 4δ with generator matrix GY and G = (Iγ+δ | GY ) is the generator matrix of a Z2 Z4 -additive code C, then we have that G · GT = 2Iγ+δ , and hence we do not know in general whether C is an ACD code or not. The last example gives a code that is not ACD; however, there are some cases where the code C is an ACD code as in the following proposition that is easily proven. Proposition 4.9. Let C be the Z2 Z4 -additive complementary dual code of type (α, α, α, 0; α) generated by G = (Iα | 2Iα ) . Then, CX is a binary LCD code and CY is not a quaternary LCD code because it is a self-dual code. Lemma 4.10. Let C be a Z2 Z4 -additive code such that CX is a binary LCD code and CY is a quaternary self-orthogonal code. Then C is an ACD code if and only if for all w = (w | w0 ) ∈ C, if w0 6= 0, then w 6= 0. Corollary 4.11. Let C be a Z2 Z4 -additive code of type (α, β; γ, δ; κ) such that CX is a binary LCD code and CY is a quaternary self-orthogonal code. If δ 6= 0, then C is not an ACD code. Proof. If δ 6= 0, then there exist w = (w | w0 ) ∈ C of order 4. Then 2w = (0 | 2w0 ) ∈ C and, by Lemma 4.10, C is not an ACD code. In Example 4.8, CX is an LCD code, CY is self-orthogonal and the value δ in the Z2 Z4 -additive code C is not 0. Therefore, the code is not an ACD code. Corollary 4.12. Let C be a Z2 Z4 -additive code of type (α, β; γ, δ; κ) such that CX is a binary LCD code and CY is a quaternary self-orthogonal code. If δ = 0 and κ = γ, then C is an ACD code. In Proposition 4.9, we have an ACD code of type (α, β; γ, δ; κ) = (α, α, α, 0; α). Note that CX is binary LCD, CY is quaternary self-dual, δ = 0 and κ = γ. 10 5. Binary LCD codes from ACD codes In general, if C is a Z2 Z4 -additive code, C = φ(C) may not be a linear code. Therefore, if C is an ACD code, then C is not necessarily a binary LCD code. In this section, we establish the conditions for an ACD code C so that its image C is a binary LCD code. We first give three examples of ACD codes with different situations when considering their binary image. In the first case, the binary images under the Gray map of both, the code and its dual, are not linear. In the second and third case, the binary image of the code is linear whereas the binary image of its dual is not linear. In the second example the binary image is LCD but it is not LCD in the third example. At the end of the section we will see that if the binary image under the Gray map of the code and its dual are linear, then the code is necessarily LCD. Example 5.1. Let C1 be the Z2 Z4 -additive code with generator and parity check matrix     1 0 2 0 0 0 0 1 2 3 1 0  0 1 0 2 0 0  , and  0 0 3 3 1 0 ,  1 1 1 3 0 1 0 0 1 2 0 1 respectively. We have that C1 ∩ C1⊥ = {0} and C1 is an ACD code. Note that 2(0, 1 | 2, 3, 1, 0) ∗ (1, 1 | 1, 3, 0, 1) = (0, 0 | 0, 2, 0, 0) 6∈ C1 and, therefore C1 = Φ(C1 ) is not linear and C1 is not LCD. We have that neither (C1 )⊥ = Φ(C1⊥ ) is linear because, for example, 2(0, 0 | 3, 3, 1, 0) ∗ (0, 0 | 1, 2, 0, 1) 6∈ C1⊥ . Example 5.2. Now consider C2 the Z2 Z4 -additive code with generator and parity check matrix   1 0 2 0 0    0 1 2 2 1 0 3 1 0 0  , and , 1 1 3 0 1 0 0 1 1 1 respectively. We have that C2 is an ACD code and C2 = Φ(C2 ) is linear. We have that the generator and parity check matrix of C2 are     1 0 0 0 1 1 1 1 1 0 0 1 0 1 0 0  0 1 0 0 0 0 1 1   0 1 0 0 0 1 0 1   0 0 1 0 1 0 1 0  , and  0 0 1 1    , 0 0 1 1  0 0 0 1 0 1 0 1 0 0 0 0 1 1 1 1 respectively, C2 ∩C2⊥ = {0} and C2 is a LCD (8, 4) code with minimum distance 3. However, since 2(1, 0 | 3, 1, 0) ∗ (1, 1 | 3, 0, 1) = (0, 0 | 2, 0, 0) 6∈ C2⊥ , the code (C2 )⊥ is not linear therefore it is not LCD. 11 Remark 5.3. According to [10, Table 3], the codes C2 and C2⊥ in Example 5.2 are distance-optimal and unique, up to equivalence. Therefore, we can establish that any binary distance-optimal LCD (8, 4) code is the binary image of an ACD code, up to equivalence. Example 5.4. Consider the Z2 Z4 -additive code C3 with generator and parity check matrix   1 0 0 0 0 2 0    0 1 0 0 0 2 2  0 0 0 2 2 0 0    0 0 1 0 0 2 2  , and H = G=   1 1 1 3 1 1 0 ,  0 0 0 1 1 0 1  0 1 1 2 1 0 1 0 0 0 0 2 2 2 respectively. The binary code C3 = Φ(C3 ) is linear, and it is easy to check that (C3 )⊥ = Φ(C3⊥ ) is not linear. Then, we have that (C3 )⊥ is not LCD. Moreover, C3 ∩ C3⊥ = h(0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1)i and, therefore, C3 is not LCD. The following property is easy to prove but the statement is new up to our knowledge. β Lemma 5.5. Let C ⊂ Zα 2 × Z4 be a Z2 Z4 -additive code, C = Φ(C) and C⊥ = ⊥ ⊥ Φ(C ). If C⊥ = C , then C is linear. Proof. Clearly, C ⊆ (C ⊥ )⊥ = (C⊥ )⊥ . Since |C| · |C⊥ | = 2α+2β , it follows that C = (C⊥ )⊥ and C is linear. Lemma 5.6. Let C be a Z2 Z4 -additive code. Let v, w ∈ C and u ∈ C ⊥ . Then, [2v ∗ w, u] = [2v ∗ u, w] = [2u ∗ w, v]. Proof. Let v = (v | v 0 ), w = (w | w0 ) ∈ C and u = (u | u0 ) ∈ C ⊥ . We have that [2v ∗ w, u] = 0 + 2v10 w10 u01 + · · · + 2vβ0 wβ0 u0β , that coincides with [2v ∗ u, w] and [2u ∗ w, v]. Proposition 5.7. Let C be a Z2 Z4 -additive code, C = Φ(C). We have that C is linear if and only if 2u ∗ v ∈ C ⊥ for all u ∈ C, v ∈ C ⊥ . Proof. We know that C is linear if and only if 2v ∗ w ∈ C, for all v, w ∈ C; that is, [2v ∗ w, u] = 0 for all u ∈ C ⊥ . By Lemma 5.6, we have that [2v ∗ w, u] = [2v ∗ u, w]. Therefore, C is linear if and only if for all v, w ∈ C and u ∈ C ⊥ , [2v ∗ u, w] = 0; that is equivalent to 2v ∗ u ∈ C ⊥ . Corollary 5.8. Let C be a Z2 Z4 -additive code, C⊥ = Φ(C ⊥ ). We have that C⊥ is linear if and only if 2u ∗ v ∈ C for all u ∈ C, v ∈ C ⊥ . Let C be a Z2 Z4 -additive code. Define the set DC = {2u ∗ v | u ∈ C, v ∈ C ⊥ }. With the definition of DC , we can obtain some corollaries of the previous proposition. 12 Corollary 5.9. Let C be a Z2 Z4 -additive code, C = Φ(C) and C⊥ = Φ(C ⊥ ). If DC = {0}, then C and C⊥ are linear codes. Proof. If DC = {0}, then for all u ∈ C and v ∈ C ⊥ we have that 2u ∗ v = 0 and then 2u ∗ v ∈ C ∩ C ⊥ . By Proposition 5.7 and Corollary 5.8, the codes C and C⊥ are linear. Example 5.10. Let C1 , C2 , and C3 be the ACD codes defined in Example 5.1, Example 5.2 and Example 5.4, respectively. We have that Φ(C1 ) and Φ(C1⊥ ) are not linear. We have also seen that φ(C2 ) and Φ(C3 ) are linear whereas Φ(C2⊥ ) and Φ(C3⊥ ) are not linear. We obtain DC1 = h(0, 0 | 2, 0, 0, 2), (0, 0, | 0, 2, 0, 2), (0, 0 | 0, 0, 2, 2)i, DC2 = h(0, 0 | 2, 0, 2), (0, 0 | 0, 2, 2)i, and DC3 = h(0, 0, 0 | 2, 0, 0, 2), (0, 0, 0 | 0, 2, 0, 2)i. Therefore, in none of this cases we obtain DC = {0}. Corollary 5.11. Let C be an ACD code, C = Φ(C) and C⊥ = Φ(C ⊥ ). Then, C and C⊥ are linear if and only if DC = {0}. Proof. If DC = {0}, then C and C⊥ are linear codes by Corollary 5.9. Assume now that C and C⊥ are linear codes. Let 2u ∗ v ∈ DC , where u ∈ C, v ∈ C ⊥ . The code C is linear and, by Proposition 5.7, 2u ∗ v ∈ C ⊥ . Similarly, C⊥ is linear and 2u ∗ v ∈ C by Corollary 5.8. Then, DC ⊆ C ∩ C ⊥ . Since C is ACD, C ∩ C ⊥ = {0} and DC = {0}. Example 5.12. Let C be the ACD code given in Example 4.2. We have that DC = {0} ∈ C and hence C=Φ(C) is linear by Corollary 5.9. The code C is a binary linear (7, 3) code with minimum distance 2. The generator and parity check matrices for C are     1 0 0 0 1 1 1 1 1 0 0 0 0 1  0 0 1 1 1 0 1  , and  0 1 0 0 1 1 1  ,    0 0 1 0 1 0 0  0 0 0 0 0 1 1 0 0 0 1 1 0 0 respectively. Moreover, C ∩ C ⊥ = {0} and therefore C is an LCD code. In this case, we have that C⊥ = C ⊥ and hence C⊥ is also an LCD (7, 4) code with minimum distance 2. Remark 5.13. According to [10, Table 3], the code C ⊥ is distance-optimal, whereas C is not. β ⊥ Theorem 5.14. Let C ⊆ Zα 2 × Z4 be an ACD code. If DC ⊆ C ∪ C , then any α+2β x ∈ Z2 can be written uniquely as Φ(u) + Φ(v), for u ∈ C, v ∈ C ⊥ . 13 Proof. Let x = Φ(w) ∈ Zα+2β 2 , for w ∈ Zα β 2 × Z4 . Since C is ACD, there exist ⊥ unique vectors w1 ∈ C, w2 ∈ C such that w = w1 + w2 by Lemma 3.3. Since DC ⊆ C ∪ C ⊥ , we may assume 2w1 ∗ w2 ∈ C; the case 2w1 ∗ w2 ∈ C ⊥ is similar. By (3), we have that x = Φ(w) = Φ(w1 + w2 ) = Φ(w1 + 2w1 ∗ w2 ) + Φ(w2 ) = Φ(u) + Φ(v), where u = w1 + 2w1 ∗ w2 ∈ C and v = w2 ∈ C ⊥ . Note that u and v are computed in a unique way from the unique vectors w1 and w2 , thus Φ(u) and Φ(v) are unique. Alternatively, if we assume that Φ(u) + Φ(v) = Φ(u0 ) + Φ(v0 ), where u, u0 ∈ C, and v, v0 ∈ C ⊥ , then we obtain Φ(u + v + 2u ∗ v) = Φ(u0 + v0 + 2u0 ∗ v0 ) =⇒ u + v + 2u ∗ v = u0 + v0 + 2u0 ∗ v0 . Put x = u − u0 ∈ C and y = v − v0 ∈ C ⊥ . Hence, we have x + y = 2u ∗ v + 2u0 ∗ v0 , where x ∈ C, y ∈ C ⊥ and 2u ∗ v, 2u0 ∗ v0 ∈ C ∪ C ⊥ . Since C is an ACD code, we have that (i) x = 0 (when 2u ∗ v, 2u0 ∗ v0 ∈ C ⊥ ), or (ii) x + 2u ∗ v = 0 (when 2u ∗ v ∈ C, 2u0 ∗ v0 ∈ C ⊥ ), or (iii) x + 2u0 ∗ v0 = 0 (when 2u ∗ v ∈ C ⊥ , 2u0 ∗ v0 ∈ C), or (iv) x + 2u ∗ v + 2u0 ∗ v0 = 0 (when 2u ∗ v, 2u0 ∗ v0 ∈ C). For case (i), we have u = u0 and therefore v = v0 . For case (ii), we have u − u0 + 2u ∗ v = 0 and v − v0 + 2u0 ∗ v0 = 0. Since 2u ∗ v ∈ C ∪ C ⊥ , we obtain that u = 0 or u0 = 0 and thus 2u ∗ v = 0 or 2u0 ∗ v0 = 0. Consequently, u = u0 (implying v = v0 ) or v = v0 (implying u = u0 ). Case (iii) is similar to (ii). In case (iv), we have y = 0 and then it is similar to case (i). The following proposition gives a complete family of ACD codes whose im- ages are LCD codes. Proposition 5.15. Let C be the Z2 Z4 -additive code with generator matrix of the form G = (GX | Iδ ) , where GX generates a self-orthogonal code. Then, C = Φ(C) is a binary LCD code. Proof. Let C be the Z2 Z4 -additive code with generator matrix G = (GX | Iδ ), such that GX generates a self-orthogonal code. Assume there exist v = (v | v 0 ) ∈ β ⊥ ⊥ 0 Zα 2 × Z4 such that Φ(v) ∈ C ∩ C . Since Φ(v) ∈ C , for all w = (w | w ) ∈ C, 0 0 0 0 0 = [Φ(v), Φ(w)]2 = [v, w]2 + [Φ(v ), Φ(w )]2 = 0 + [Φ(v ), Φ(w )]2 , therefore Φ(v 0 ) = 0. Then, v = (v | 0) ∈ C and, by the form of the generator matrix of C, v = 0 and v = 0. 14 Corollary 5.16. For any non-negative integers α and δ ≤ b α2 c, there exists an (α + 2δ, δ) LCD code C that is a Z2 Z4 -linear code of type (α, δ; 0, δ; 0). Note that in the previous proposition we have that the code Φ(C) is linear and DC ⊆ C. These are not the only ACD codes that have images that are LCD. Example 5.17. Consider the code generated by (1 | 1). This code has 4 vectors, namely (0 | 0), (1 | 1), (0 | 2) and (1 | 3). Its orthogonal has two vectors, namely (0 | 0) and (1 | 2). Therefore, this code is ACD. The images of these codes are {(0, 0, 0), (1, 1, 0), (0, 1, 1), (1, 0, 1)} and {(0, 0, 0), (1, 1, 1)}, which are binary LCD codes. Therefore, we can have ACD codes whose images are LCD codes that do not satisfy the conditions of Proposition 5.15. Let A and B be two codes such that every element in the ambient space can be written uniquely as a + b where a ∈ A and b ∈ B. For example, when C is an ACD code then this is the case. It is also the case, via Theorem 5.14 for binary codes that are the images of C and C ⊥ when C is ACD and DC ⊆ C ∪ C ⊥ . Define the complete bipartite graph Γ = (V, E) where V = A ∪ B. Then the set of edges E has cardinality |A||B| which is the size of the ambient space. Each edge represents the unique vector in the ambient space that is the sum of a and b. Therefore, this coding situation is equivalent to the complete bipartite graph K|A|,|B| . Lemma 5.18. Let X, Y be binary vector spaces of length n such that X ∩ X ⊥ = {0} and |X ⊥ | = |Y |. If any vector a ∈ Zn2 have a unique representations a = x + z and a = x0 + y where x, x0 ∈ X, z ∈ X ⊥ and y ∈ Y , then Y = X ⊥ . Proof. Let a ∈ Zn2 and consider the unique representations of a of the form a = x + z and a = x0 + y where x, x0 ∈ X, z ∈ X ⊥ and y ∈ Y . We have that x + z = x0 + y and therefore x + x0 = z + y. Then, since x + x0 ∈ X, we have that z + y ∈ X. Moreover, z + y ∈ hX ⊥ , Y i, which is disjoint to X except the element 0. Hence z + y = 0 that implies y = z. Therefore, for any y ∈ Y , we have y = 0 + y, 0 ∈ X, and y ∈ X ⊥ . Since |X ⊥ | = |Y |, Y = X ⊥ . Theorem 5.19. Let C be an ACD code and C = Φ(C) a binary LCD code. Then, C⊥ = Φ(C ⊥ ) is LCD and C⊥ = C ⊥ . Proof. Let C be an ACD such that C is LCD. We have that C ∩ C ⊥ = {0} and any a ∈ Zα+2β 2 can be written uniquely as a = x + z, where x ∈ C and z ∈ C ⊥ . By Proposition 5.7, DC ⊆ C ⊥ and hence a have a unique representation a = x0 +y where x0 ∈ C and y ∈ C⊥ by Theorem 5.14. Therefore, by Lemma 5.18, C⊥ = C ⊥ . Lemma 5.20. Let C be an ACD code such that C = Φ(C) and C⊥ = Φ(C ⊥ ) are linear. Then, for u ∈ C and v ∈ C ⊥ , we have that Φ(u + v) = Φ(u) + Φ(v). Proof. Let u ∈ C, v ∈ C ⊥ . We have that Φ(u + v) = Φ(u) + Φ(v) + Φ(2u ∗ v) and 2u ∗ v ∈ DC . Since C and C⊥ are linear, then DC = {0} by Corollary 5.11. Therefore, 2u ∗ v = 0 and Φ(u + v) = Φ(u) + Φ(v). 15 β Lemma 5.21. Let u, v ∈ Zα 2 ×Z4 such that 2u∗v = 0. Then, [Φ(u), Φ(v)]2 = 0 if and only if [u, v] = 0. β Proof. Let u = (u | u0 ), v = (v | v 0 ) ∈ Zα 2 × Z4 such that 2u ∗ v = (0 | 2u ∗ v ) = 0. Consider ui and vi the i-th coordinate of u0 and v 0 respec- 0 0 0 0 tively. Note that if 2u0i vi0 = 0, then u0i ∈ {0, 2} or vi0 ∈ {0, 2}. Let J = {1 ≤ j ≤ β | u0j ∈ {1, 3} or vj0 ∈ {1, 3}}. Note that if i ∈ J, then u0i vi0 = 2 and [Φ(u0i ), Φ(vi0 )]2 = 1, and u0i vi0 = [Φ(u0i ), Φ(vi0 )]2 = 0, otherwise. Therefore, Pβ [u0 , v 0 ]4 = i=1 u0i vi0 = i∈J u0i vi0 = 2 i∈J [Φ(u0i ), Φ(vi0 )]2 = 2[Φ(u0 ), Φ(v 0 )]2 , P P considering [Φ(u0 ), Φ(v 0 )]2 as an element in {0, 1} ⊆ Z4 . We have that [u, v] = 2[u, v]2 + [u0 , v 0 ]4 = 2[u, v]2 + 2[Φ(u0 ), Φ(v 0 )]2 = 2[Φ(u), Φ(v)]2 , where [Φ(u0 ), Φ(v 0 )]2 and [Φ(u), Φ(v)]2 are elements in {0, 1} ⊆ Z4 . Therefore, [Φ(u), Φ(v)]2 = 0 if and only if [u, v] = 0. Theorem 5.22. Let C be an ACD code, C = Φ(C) and C⊥ = Φ(C ⊥ ). The following statements are equivalents: (i) C is linear and DC ⊆ C. (ii) C⊥ is linear and DC ⊆ C ⊥ . (iii) C and C⊥ are linear. (iv) DC = {0}. (v) C and C⊥ are LCD. (vi) C⊥ = C ⊥ . Proof. By Corollary 5.8, C⊥ is linear if any only if DC ⊆ C. Therefore we obtain (i) ⇔ (iii). Similarly, by Proposition 5.7, C is linear if any only if DC ⊆ C ⊥ and hence (ii) ⇔ (iii). The equivalence (iii) ⇔ (iv) is given by Corollary 5.9. Now we will prove that (iv) ⇔ (v). Let v ∈ C ⊥ , u ∈ C. We have that 2u ∗ v ∈ DC = {0}. Then, by Lemma 5.21, [Φ(u), Φ(v)]2 = [u, v] = 0 and, Φ(v) ∈ C ⊥ . Since |C ⊥ | = |C ⊥ |, we have that C⊥ = C ⊥ . Finally, if x ∈ C ∩ C ⊥ , then Φ−1 (x) ∈ C ∩ C ⊥ = {0}, and therefore x = 0. Then, since C and C⊥ are linear by (iii), both C and C⊥ are LCD. Finally, (v) ⇒ (vi) by Theorem 5.19, and (vi) ⇒ (iii) by Lemma 5.5. Proposition 5.23. Let C be a Z2 Z4 -additive code of type (α, δ; 0, δ; 0) generated by G = (GX | Iδ ) . Then, C = Φ(C) is LCD. Proof. Let C be a Z2 Z4 -additive code generated by G = (GX | Iδ ), C = Φ(C). β It is easy to see that for all u, v ∈ Zα 2 × Z4 we have that 2u ∗ v ∈ C. Therefore, C is linear and DC ⊆ C. Then, by Theorem 5.22, we have that C is LCD. Corollary 5.24. Let C be a binary (α, k) code and let {v1 , . . . , vk } be a basis for C. Let δ ≥ k and let GX be the δ × α matrix whose non-zero row vectors are {v1 , . . . , vk }. Then, the Z2 Z4 -additive code C of type (α, δ; 0, δ; 0) generated by G = (GX | Iδ ) 16 satisfies that Φ(C) is LCD. Proof. Straightforward by Theorem 5.22 and Theorem 5.19. 6. Summary and conclusions The concept and basic properties of binary LCD codes can be easily gener- alized to Z2 Z4 -additive complementary dual codes or ACD codes. Given an ACD code C, we have considered the complementary duality of CX and CY . We have found examples of all possible situations: • Both CX and CY are not LCD codes. • Both CX and CY are LCD codes. This is the only possibility when C is separable (C = CX × CY ), but if C is not separable, this situation is also possible. • CX is a LCD code and CY is not. • CY is a LCD code and CX is not. The examples we have provided define, in several cases, infinite families of ACD codes. We have studied the binary images of ACD codes obtained with the Gray map Φ. For this, we have concluded that the set DC = {2u ∗ v | u ∈ C, v ∈ C ⊥ } plays a very important role: C = Φ(C) and C⊥ = Φ(C ⊥ ) are LCD codes if and only if DC = {0}. We have also seen that, sometimes, binary distance-optimal LCD codes can be obtained as binary images of ACD codes. Acknowledgements This work has been partially supported by the Spanish grants TIN2016- 77918-P, AEI/FEDER, UE. References [1] M. Bilal, J. Borges, S.T. Dougherty, C. Fernández-Córdoba. Maximum distance separable codes over Z4 and Z2 × Z4 . Designs, Codes Cryptogr., vol. 61, no. 1, pp. 31–40, 2011. [2] J. Borges, C. Fernández-Córdoba, J. Pujol, J. Rifà and M. Villanueva, “Z2 Z4 -linear codes: generator matrices and duality,” Designs, Codes and Cryptography, vol. 54, no. 2, pp. 167-179, 2010. [3] J. Borges, S.T. Dougherty, C. Fernández-Córdoba. Characterization and constructions of self-dual codes over Z2 × Z4 . Adv. Math. Commun., vol. 6, no. 3, pp. 287–303, 2012. 17 [4] C. Carlet, S. Guilley, “Complementary dual codes for counter-measures to side-channel attacks,” in Coding Theory and Applications (CIM Series in Mathematical Sciences), vol. 3, E. R. Pinto Eds. Berlı́n, Germany: Springer Verlag, 2014, pp. 97-105. [5] S.T. Dougherty, J. L. Kim, B. Ozkaya, L. Sok, P. Solé, “The combinatorics LCD codes: Linear programming bound and orthogonal,” I nternational Journal of Information and Coding Theory, vol. 4, no. 2-3, pp 116-128, 2017. [6] M. Esmaeili, S. Yari, “On complementary-dual quasi-cyclic codes,” Finite, Fields Appl., vol. 15, no. 3, pp. 375-386, 2009. [7] C. Fernández-Córdoba, J. Pujol, and M. Villanueva, “Z2 Z4 -linear codes: rank and kernel,” Designs, Codes and Cryptography, vol. 56, pp. 43-59, 2010. [8] C. Güneri, B. Özkaya, P. Solé, “Quasi-cyclic complementary dual codes,” Finite, Fields Appl., vol. 42, pp. 67-80, 2016. [9] A.R. Hammons, P.V. Kumar, A.R. Calderbank, N.J.A. Sloane and P. Solé, “The Z4 -linearity of kerdock, preparata, goethals and related codes,” IEEE Trans. on Information Theory, vol. 40, 301-319, 1994. [10] M. Harada, K. Saito, “Binary linear complementary dual codes,” Cryptog- raphy and Communications, vol. 11, pp. 677-696, 2019. [11] C. Li, C. Ding, S. Li, “LCD cyclic codes over finite fields,” IEEE Trans. on Information Theory, vol. 63, n. 7, pp. 4344-4356, 2017. [12] X. Liu, H. Liu, “LCD codes over finite chain rings,” Finite Fields and Their Applications, vol. 34, pp. 1-19, 2015. [13] J.L. Massey, “Reversible codes,” Inf. Control, vol. 7, no 3, pp. 369-380, 1964. [14] J.L. Massey, Linear Codes with Complementary Duals, Disc. Math, 106- 107, 337 - 342, 1992. [15] F. J. MacWilliams and N. J. A. Sloane, The theory of error-correcting codes, Elsevier, 1977. [16] J. Rifà and J. Pujol. Translation-invariant propelinear codes, IEEE Trans. Inf. Theory, vol. 43, no. 2, pp. 590–598, 1997. 18