Chapter VI: Robust Indexing: Optimal Codes Correcting Deletion/Insertion
6.5 Robust Indexing for Deletion/Insertion Errors
Letββbe the most significant bit whereaπ1 andaπ2 differ, i.e.,(ππ
1,1, . . . , ππ
1,βββ1) = (ππ
2,1, . . . , ππ
2,βββ1) andππ
1,ββ = 1 andππ
2,ββ =0. Then according to the if statement in the encoding procedure, we have that
ππ
1β βοΈ
β:ππ
1,β=1andββ[ββ]
(2πΏβ²βββππ»( (ππ
1,1, . . . , ππ
1,ββ1,0),{aπ}π1β1
π=1)) > 0 and ππ
2β βοΈ
β:ππ
1,β=1andββ[ββ]
(2πΏβ²βββππ»( (ππ
1,1, . . . , ππ
1,ββ1,0),{aπ}π2β1
π=1)) β€0, which implies that
ππ
2βππ
1 <
βοΈ
β:ππ
1,β=1andββ[ββ]
(2πΏβ²ββ βππ»( (ππ
1,1, . . . , ππ
1,ββ1,0),{aπ}π2β1
π=1))
β βοΈ
β:ππ
1,β=1andββ[ββ]
(2πΏβ²ββ βππ»( (ππ
1,1, . . . , ππ
1,ββ1,0),{aπ}π1β1
π=1))
= βοΈ
β:ππ
1,β=1andββ[ββ]
(ππ»( (ππ
1,1, . . . , ππ
1,ββ1,0),{aπ}π1β1
π=1)
βππ»( (ππ
1,1, . . . , ππ
1,ββ1,0),{aπ}π2β1
π=1))
= βοΈ
β:ππ
1,β=1andββ[ββ]
ππ»( (ππ
1,1, . . . , ππ
1,ββ1,0),{aπ}ππ=π1β1
2)
(π)
β€
π1β1
βοΈ
π=π2
|c: ππ»(c,aπ) β€2π|
=(π1βπ2)π , (6.13)
where (π) follows from the definition of ππ»(a, π΄) and the fact that the strings which have(ππ
1,1, . . . , ππ
1,β1β1,0)and(ππ
1,1, . . . , ππ
1,β2β1,0)as prefixes, respectively, whereππ
1,β1=1, ππ
1,β2=1 andβ1 β β2, are different. Eq. (6.13) contradicts to the fact that the integers(π1, . . . , ππ) =πΉπ»
π (π)satisfyππβππ+1 > πforπ β [πβ1], which impliesππ
1βππ
2 β₯ (π1βπ2)π.
Since the calculation ofππ»(a, π΄)has polynomial complexity, the complexity of the encoding/decoding procedure is polynomial in πand πΏβ².
Theorem 6.5.1. For integers π , πΏ , π, and πΏβ² β 3 logπ+4π2+1. If πΏβ²+4π πΏβ²+ 2πlog(4π πΏβ²) β€ πΏ, there exists aπ-deletion code, computable in π ππ π¦(π , πΏ) time, that has redundancy8πlogπ πΏ+ (12π +2)logπ+π(π3) +π(logπ πΏ).
Similar to the construction in Sec.6.3, we use the first πΏβ²bits (π₯π,1, . . . , π₯π, πΏβ²), π β [π] in each string xπ as indexing bits and sort the strings {xπ} according to the lexicographic order of {(π₯π,1, . . . , π₯π, πΏβ²)}π
π=1. To protect the ordering, we use Reed- Solomon code to protect the characteristic vector 1({(π₯π,1, . . . , π₯π, πΏβ²)}π
π=1). The difference is that in this section, we construct the indexing bits{(π₯π,1, . . . , π₯π, πΏβ²)}π
π=1
such that the mutual deletion distance among {(π₯π,1, . . . , π₯π, πΏβ²)}π
π=1, rather than the mutual Hamming distance considered in Sec.6.3, is at least 2π+1, i.e., the deletion ballsDπ( (π₯π,1, . . . , π₯π, πΏβ²))andDπ( (π₯π ,1, . . . , π₯π , πΏβ²))do not intersect forπβ π, where the deletion ballDπ(u)of a stringu{0,1}πis the set of all lengthπβπ subsequence ofu. Define
Sπ· =
{a1, . . . ,aπ} :Dπ(aπ) β© Dπ(aπ) =β forπ β π .
The construction is based on the following two lemmas, where the first one is robust indexing for deletion/insertion errors, which will be proved in Sec. 6.5 and the second one is a deletion code construction, which we presented in Ch. 4.
Lemma 6.5.1. For π=2π πΏπβ²2
, there exists an invertible mapping πΉπ·
π : 2πΏβ² β (π β1)π+πβ1
πβ1 β
{0,1}πΏβ² π
, computable in π ππ π¦(π , πΏ) time, such that for any π β [ β(2
πΏβ²
βπ π)πβ1
(πβ1)! β], we have thatπΉπ·
π (π) β Sπ·.
Lemma 6.5.2. (Corollary of Theorem 4.1.2) For any integerπandπ =π+4πlogπ+ π(logπ), there exists a systematic encoding function πΈ ππ : {0,1}π β {0,1}π, computed inπ(π2π+1) time, and a decoding function π· π π : {0,1}πβπ β {0,1}π, computed inπ(ππ+1)time, such that for anycβ {0,1}πand substringdβ {0,1}πβπ ofπΈ ππ(c), we have thatπ· π π(d) =c.
Code Constructions
The code construction is the same as that in Sec.6.3except that here, the indexing bits {(π₯π,1, . . . , π₯π, πΏβ²)}π
π=1 are generated using the map πΉπ·
π . In addition, a deletion code in Lemma6.5.2is used to protect the concatenated string.
Let the datadβ π·to be encoded be a tupled=(π1,d2), whereπ1 β [ β(2
πΏβ²
βπ π)πβ1 (πβ1)! β]
and
d2 β {0,1}π
such thatπ+4πlogπ+π(logπ) =π(πΏβπΏβ²) β4π πΏβ², which implies thatπ= π(πΏβ πΏβ²) β4π πΏβ²β4πβlogπ πΏβ βπ(logπ πΏ). We briefly present the encoding/decoding procedure as follows.
Encoding:
(1) LetπΉπ·
π (π1) ={a1, . . . ,aπ} β Sπ»such thata1=1πΏβ²anda1 >a2 > . . . >aπ. Let(π₯π,1, . . . , π₯π, πΏβ²) =aπ, forπ β [π].
(2) Let
(π₯1, πΏβ²+1, . . . , π₯1, πΏβ²+4π πΏβ²+4πlog(4π πΏβ²)+π(log(4π πΏβ²)))
=πΈ ππ(π π2π(1({a1, . . . ,aπ}))) (3) Place the deletion codeπΈ ππ(d2)in bits
(π₯1, πΏβ²+4π πΏβ²+4πlog(4π πΏβ²)+π(log(4π πΏβ²))+1, . . . , π₯1, πΏ), and (π₯π, πΏβ²+1, . . . , π₯π, πΏ)forπ β [2, π].
Upon receiving{xβ²π}π
π=1, the decoding procedure is as follows.
Decoding:
(1) Find the unique stringxβ²π
0 such that (π₯β²
π0,1, . . . , π₯β²
π0, πΏβ²βπ) = 1πΏβ²βπ. Thenxβ²π
0 is an erroneous copy ofx1and the string
(π₯β²
π0, πΏβ²+1, . . . , π₯β²
π0, πΏβ²+4π πΏ+4πlog(4π πΏβ²)+π(log(4π πΏβ²))βπ) is an erroneous copy of
(π₯1, πΏβ²+1, . . . , π₯1, πΏβ²+4π πΏβ²+4πlog(4π πΏβ²)+π(log(4π πΏβ²))) =πΈ ππ(π π2π(1({aπ}π=1π ))). Correct the vectorπ π2π(1({aπ}π
π=1))and use it to recover1({aπ}π
π=1), and thus the indexing bits{(π₯π,1, . . . , π₯π, πΏβ²)}π
π=1. Recoverπ1= (πΉπ»
π )β1({aπ}π
π=1).
(2) For eachπ β [π], find the uniqueπ(π) β [π]such that(π₯β²
π(π),1, . . . , π₯β²
π(π), πΏβ²βπ) is a lengthπΏβ²βπ substring of(π₯π,1, . . . , π₯π, πΏβ²)(note thatπ(1) =π0). Checking if a string is a substring of another can be done in linear time using a greedy algorithm.
(4) Since xβ²π(π) is an erroneous copy of xπ, π β [π], the concatenation mβ² = ( (π₯β²
π(1), πΏβ²+4π πΏβ²+4πlog(4π πΏβ²)+π(log(4π πΏβ²))+1, . . . , π₯β²
π(1), πΏ1),xβ²π(
2), . . . ,xβ²π(π)), where πΏ1 is the length of xβ²π(
1), is an erroneous copy of πΈ ππ(d2). Use the de- coderπ· π π(mβ²)=d2.
(5) Output(π1,d2).
The proof of correctness is similar to that in Sec.6.3. The redundancy of the code is
π(C)=log 2πΏ
π
βlogβ
Γπβ1
π=1 (2πΏβ² βπ π) (π β1)! β
β [π(πΏβπΏβ²) β4π πΏβ²β8πlog(4π πΏβ²) βπ(log(4π πΏβ²))
β4πβlogπ πΏβ βπ(logπ πΏ)]
β€8πlogπ πΏ+ (12π+2)logπ+π(π3) +π(πlogπ πΏ). ComputingπΉπ·
π
We now prove Lemma 6.5.1. The robust indexing algorithm for generating the indexing strings {π₯π,1, . . . , π₯π, πΏβ²} is the same as in Sec. 6.4 except that we replace the notations ππ»(a, π΄) and π, which are based on Hamming distance, with their deletion distance counterparts. For a string c β {0,1}β and a set of indices Ξ = {πΏ1, . . . , πΏπ} β [β], letc(Ξ)be the lengthββπsubsequence ofcobtained by deleting bits(ππΏ
1, ππΏ
2, . . . , ππΏ
π)inc.
For sequencesc1 β {0,1}β1 andc2 β {0,1}β2 and nonnegative integersπ1, π2, define the set
I (c1,c2, π1, π2) ={(Ξ1,Ξ2) :Ξ1 β [β1],|Ξ1| β€π1,Ξ2 β [β2],|Ξ2| β€ π2, c1(Ξ1) =c2(Ξ2)}
and the number
π(c1,c2, π1, π2) =|I (c1,c2, π1, π2) |, (6.14) which is the number of ways to delete no more than π1 and π2 bits in c1 and c2, respectively, such that the resulting subsequences are the same. For a sequenceaβ {0,1}β of lengthβ β [0, πΏβ²]and a set of sequences π΄ β {0,1}πΏβ², define
ππ·(a, π΄) =βοΈ
cβπ΄
βοΈ
cβ²:cβ²β{0,1}πΏβ² and(π1β²,...,πβ)=a
π(cβ²,c, π , π).
For an empty sequenceaand a sequencec, we have that ππ·(a,c) =π β
π
βοΈ
π=0
πΏβ² π
2
2π, (6.15)
since ππ·(a,c) is the number of tuples (cβ²,Ξ1,Ξ2) of sequences cβ² β {0,1}πΏβ² and index setsΞ1,Ξ2 β [πΏβ²] such that after no more thanπ deletions in indicesΞ1and Ξ2incandcβ², respectively, we obtain the same subsequencec(Ξ1) =cβ²(Ξ2).
The algorithm for computingπΉπ·
π is the same as that for computingπΉπ»
π , by replacing the numbers ππ»( (ππ,1, . . . , ππ,ββ1,0),{aπ}πβ1
π=1) and π with numbers ππ·( (ππ,1, . . . , ππ,ββ1,0),{aπ}πβ1
π=1) and π. To prove the correctness of the algorithm, we need to show that ππ·(a, π΄) satisfies the two properties similar to the ones in Eq. (6.5) and Eq. (6.6). The first is that
ππ·(a, π΄)= ππ·( (a,0), π΄) +ππ·( (a,1), π΄) (6.16) for a sequenceaβ {0,1}β of lengthβ β [πΏβ²β1] and a set π΄ β {0,1}πΏβ², which is a deletion counterpart of Eq. (6.5). This can be proved by noticing that
ππ·(a, π΄)= βοΈ
cβ²:cβ²β{0,1}πΏβ² and(πβ²1,...,πββ²)=a
βοΈ
cβπ΄
π(cβ²,c, π , π) and that for every sequence cβ² β {0,1}πΏβ² that satisfies (πβ²
1, . . . , πβ²
β) = a, we have eitherπβ²
β+1 =1 orπβ²
β+1 =0.
The second property is that the numberππ·(a, π΄)is computable in polynomial time.
Since obtaining an explicit expression as in Eq. (6.6) is challenging, we compute the number ππ·(a,c) using dynamic programming for two sequences a β {0,1}β andc β {0,1}πΏβ² such thatβ β [0, πΏβ²]. Givenaandc, we compute
π(π1, π2, π1, π2)
= βοΈ
cβ²:cβ²β{0,1}πΏβ²ββ+π1 and(πβ²1,...,πβ²π 1)=(πββπ
1+1,...,πβ)
π(cβ²,(ππΏβ²βπ2+1, . . . , ππΏβ²), π1, π2). Note thatππ·(a,c) =π(β, πΏβ², π , π). In addition, by definition ofππ·(a, π΄), we have thatππ·(a, π΄) =Γ
cβπ΄ππ·(a,c). Hence,ππ·(a, π΄)can be computed efficiently when ππ·(a,c)is computed.
Forπ1=0, we have that
π(0, π2, π1, π2) = βοΈ
cβ²:cβ²β{0,1}πΏβ²ββ
π(cβ²,(ππΏβ²βπ2+1, . . . , ππΏβ²), π1, π2), (6.17)
which by Eq. (6.14) equals 0 when πΏβ²βββπ1 > π2orπ2βπ2 > πΏβ²ββ. WhenπΏβ²β ββπ1 β€ π2andπ2βπ2β€ πΏβ²ββ, we show that
π(0, π2, π1, π2) =
π2
βοΈ
π=π2β(πΏβ²ββ)
π2 π
πΏβ²ββ πΏβ²βββ (π2βπ)
2πΏβ²βββ(π2βπ), (6.18) forπ2β₯ πΏβ²ββand that
π(0, π2, π1, π2) =
π1
βοΈ
π=πΏβ²βββπ2
π2 π2β (πΏβ²βββπ)
πΏβ²ββ π
2π, (6.19) forπ2< πΏβ²ββ. Forπ2 β₯ πΏβ²ββand sets(Ξ1,Ξ2) β I (cβ²,c= (ππΏβ²βπ2+1, . . . , ππΏβ²), π1, π2), the cardinality|Ξ2|satisfiesπ2β (πΏβ²ββ) β€ |Ξ2| β€π2because
cβ²(Ξ1)= (ππΏβ²βπ2+1, . . . , ππΏβ²) (Ξ2). For given |Ξ2|, there are |Ξπ2
2|
ways to select Ξ2 and πΏβ²βββ(πΏβ²βπβ2βΞ2)
choices of Ξ1. Moreover, givenc,Ξ1, andΞ2, there are 2πΏβ²βββ(π2βΞ2) choices ofcβ²such thatc(Ξ2)= cβ²(Ξ1). Hence we have Eq. (6.18). Similarly, we have Eq. (6.19). Therefore, the numberπ(π1, π2, π1, π2)can be computed whenπ1=0.
For π1 > 0, we compute ππ
1, π2,π1,π2 iteratively from π1 = 0 to π1 = β using the following recursion.
π(π1, π2, π1, π2) = βοΈ
π:πβ[πΏβ²βπ2+1, πΏβ²],ππ=πββπ
1+1
π(π1β1, πΏβ²βπ , π1, π2β π+πΏβ²βπ2+1) +2π(π1β1, π2, π1β1, π2), (6.20) where π(πβ², πβ²β², πβ², πβ²β²) = 0 if πβ² < 0 or πβ²β² < 0. Note that for any (Ξ1,Ξ2) β I (cβ²,c= (ππΏβ²βπ2+1, . . . , ππΏβ²), π1, π2), we have either 1βΞ1or 1β Ξ1. When 1βΞ1, thencβ²β²(Ξ1\{1} β1) = (ππΏβ²βπ2+1, . . . , ππΏβ²) (Ξ2), wherecβ²β² = (πβ²
2, . . . , πβ²
πΏβ²ββ+π1) and Ξβπ ={πβπ : π βΞ}for any setΞand integerπ. Note that there areπ(π1β1, π2, π1β 1, π2) choices of(cβ²β²,Ξ1\{1} β1,Ξ2)such that(πβ²β²
1, . . . , πβ²β²
π1β1) =(πββπ
1+2,...,πβ)and cβ²β²(Ξ1\{1}β1)= (ππΏβ²βπ2+1, . . . , ππΏβ²) (Ξ2). Sinceπβ²
1can be either 0 or 1 when 1βΞ1. We have 2π(π1β1, π2, π1β1, π2) choices of (cβ²,Ξ1,Ξ2) such that (πβ²
2, . . . , πβ²
π1) = (πβ²β²
1, . . . , πβ²β²
π1β1) =(ππβπ
1+2,...,πβ)andcβ²(Ξ1)= (ππΏβ²βπ2+1, . . . , ππΏβ²) (Ξ2), when 1 βΞ1. When 1 β Ξ1, Let π be the minimum index such that π β [πΏβ²β π2 +1, πΏβ²] and (πβπΏβ²+π2) β Ξ2. Then, we have thatππ =πβ²
1=ππβπ
1+1, [1, πβπΏβ²+π2β1] β Ξ2, and cβ²β²(Ξ1β1) = (ππ+1, . . . , ππΏβ²) (Ξ2\[1, π β πΏβ²+ π2 β1] β π + πΏβ²β π2), where cβ²β² =(πβ²
2, . . . , πβ²
πΏβ²ββ+π1). There areπ(π1β1, πΏβ²βπ , π1, π2βπ+πΏβ²βπ2+1)choices of (cβ²β²,Ξ1 β 1,Ξ2\[1, π β πΏβ²+ π2 β 1] β π + πΏβ²β π2) such that cβ²β²(Ξ1 β 1) =
(ππ+1, . . . , ππΏβ²) (Ξ2\[1, π β πΏβ²+ π2β1] βπ + πΏβ²β π2) and that (πβ²β²
1, . . . , πβ²β²
π1β1) = (πββπ
1+2,...,πβ). Therefore, there are π(π1 β 1, πΏβ² β π , π1, π2 β π + πΏβ² β π2 + 1) choices of (cβ²,Ξ1,Ξ2) such that (πβ²
1, . . . , πβ²
π1) = (πββπ
1+1, . . . , πβ) and cβ²(Ξ1) = (ππΏβ²βπ2+1, . . . , ππΏβ²) (Ξ2). Note that for each π satisfying π β [πΏβ²β π2+1, πΏβ²] and ππ =πβ²
1 =πββπ
1+1, there areπ(π1β1, πΏβ²βπ , π1, π2βπ+πΏβ²βπ2+1)choices of such (cβ²,Ξ1,Ξ2). In addition, different π corresponds to different choices since π is the minimum index such that(πβπΏβ²+π2) β Ξ2. Hence, we have (6.4).
By Eq. (6.17), (6.18), (6.19), and (6.4), the number π(a,c) = π(β, πΏβ², π , π) can be recursively computed for any a β {0,1}β and c β {0,1}πΏβ². Therefore, the encoding/decoding can be computed in π ππ π¦(π , πΏβ²) time.
We are now ready to present the algorithm that computes πΉπ·
π (π) for an integer π β h
2πΏβ²β(πβ1)π+πβ1 πβ1
i
. The algorithm is the same as the encoding procedure in Sec. 6.4, by replacing ππ»(a, π΄) with ππ·(a, π΄) for any sequence a and set of sequences π΄. In addition, the integers ππ are generated such that π1 = 2πΏβ² and ππ+1β ππ > π forπ β [π β1]. Such ππ, π β [π] can be generated following the same argument in Lemma6.4.1, sinceπ β h
2πΏβ²β(πβ1)π+πβ1 πβ1
i
. Given integers ππ, π β [π], satisfying π1 = 2πΏβ² and ππ+1β ππ > π for π β [π β1], the encoding procedure for generating{a1, . . . ,aπ} is given as follows.
Encoding:
forπ β [π], do π =ππ.
forβ β [πΏβ²], do
if 2πΏβ²ββ βππ·( (ππ,1, . . . , ππ,ββ1,0),{aπ}πβ1
π=1) β₯π, thenππ,β =0.
else
π =πβ (2πΏβ²ββ βππ·( (ππ,1, . . . , ππ,ββ1,0),{aπ}πβ1
π=1)), ππ,β =1.
end if end for
end for
return{a1, . . . ,aπ}.
The correctness of the encoding procedure follows similar argument to the one in Sec. 6.4. We prove that the input(π1, . . . , ππ)and output{a1, . . . ,aπ}satisfy
decimal(aπ) =ππβ1+ βοΈ
β:ππ ,β=1andββ[πΏβ²]
ππ·( (ππ,1, . . . , ππ,ββ1,0),{aπ}πβπ=11) (6.21) and {a1, . . . ,aπ} β Sπ·. The following is a deletion metric version of 6.4.3, by replacingππ»(a, π΄)withππ·(a, π΄)for any sequenceaβ {0,1}βand setπ΄ β {0,1}πΏβ². Lemma 6.5.3. After theβ-th,β β [πΏβ²], inner for loop in theπ-th,π β [π], outer for loop in the encoding procedure, we have that
0< π β€ 2πΏβ²ββ βππ·( (ππ,1, . . . , ππ,β),{aπ}ππβ1=1). (6.22) At the end of theπ-th outer for loop, we have thatπ =1.
Proof. The proof is the same as that of Lemma6.4.3, by noticing that ππ·(0,{aπ}ππβ1=1) +ππ·(1,{aπ}ππβ1=1) =
πβ1
βοΈ
π=1
ππ·(,aπ)
(π)
=(πβ1)π,
where is the empty sequence and(π)follows from (6.15) and the fact thatππ·(a, π΄)= Γ
cβπ΄ππ·(a,c). In addition, we have (6.16), which is the deletion metric version of (6.5). The rest of the proof follows the same as in6.4.3. β‘ From Lemma6.5.3, we have
π =2πΏβ²βπΏβ² βππ·(aπ,{aπ}ππβ1=1) =1,
at the end of the π-th outer for-loop, π β [π]. Hence, ππ·(aπ,{aπ}πβ1
π=1) = 0 for π β [π] and Dπ(aπ) β© Dπ(aπ) = β for any π β π, π, π β [π]. Then, we have that{aπ}π
π=1 β Sπ·. In addition, similar to Lemma6.4.4, we can use Lemma6.5.3to show that the output{aπ}π
π=1satisfies Eq. (6.21).
Therefore, we have the following decoding algorithm, similar to the one in Sec. 6.4.
Decoding:
(1) Order the strings{aπ}π
π=1such thata1 > a2 > . . . >aπ. (2) Forπ β [π],
ππ=decimal(aπ) +1+ βοΈ
β:ππ ,β=1andββ[πΏβ²]
ππ·( (ππ,1, . . . , ππ,ββ1,0),{aπ}ππβ1=1). (6.23) Finally, the correctness of decoding is guaranteed by (6.21) and the fact thata1 >
a2 > . . . > aπ, where aπ is the output generated in theπ-th outer-loop. The latter follows similar proof to the one in Sec. 6.4. Suppose there existsπ1 > π2 such that aπ1 >aπ2 alphabetically. Then we have that
ππ
2βππ
1 <
βοΈ
β:ππ
1,β=1andββ[ββ] (2πΏβ²ββ
βππ·( (ππ
1,1, . . . , ππ
1,ββ1,0),{aπ}π2β1
π=1))
β βοΈ
β:ππ
1,β=1andββ[ββ]
(2πΏβ²ββ βππ·( (ππ
1,1, . . . , ππ
1,ββ1,0),{aπ}π1β1
π=1))
= βοΈ
β:ππ
1,β=1andββ[ββ]
(ππ·( (ππ
1,1, . . . , ππ
1,ββ1,0),{aπ}π1β1
π=1)
βππ·( (ππ
1,1, . . . , ππ
1,ββ1,0),{aπ}π2β1
π=1))
= βοΈ
β:ππ
1,β=1andββ[ββ]
ππ·( (ππ
1,1, . . . , ππ
1,ββ1,0),{aπ}ππ=π1β1
2)
(π)
β€ππ·(β ,{aπ}π1β1
π=π2)
(π)
β€ (π1βπ2)π, (6.24)
whereβ is the empty sequence and(π)follows from the definition ofππ·(a, π΄)and the fact that the strings which have (ππ
1,1, . . . , ππ
1,β1β1,0) and (ππ
1,1, . . . , ππ
1,β2β1,0) as prefixes, respectively, are different. Inequality (π) follows from (6.15) and the fact thatππ·(a, π΄)=Γ
cβπ΄ππ·(a,c).