Index Coding with Multiple Interpretations

The index coding problem consists of a system with a server and multiple receivers with different side information and demand sets, connected by a noiseless broadcast channel. The server knows the side information available to the receivers. The objective is to design an encoding scheme that enables all receivers to decode their demanded messages with a minimum number of transmissions, referred to as an index code length. The problem of finding the minimum length index code that enables all receivers to correct a specific number of errors has also been studied. This work establishes a connection between index coding and error-correcting codes with multiple interpretations from the tree construction of nested cyclic codes. The notion of multiple interpretations using nested codes is as follows: different data packets are independently encoded, and then combined by addition and transmitted as a single codeword, minimizing the number of channel uses and offering error protection. The resulting packet can be decoded and interpreted in different ways, increasing the error correction capability, depending on the amount of side information available at each receiver. Motivating applications are network downlink transmissions, information retrieval from datacenters, cache management, and sensor networks.


Introduction
In this work, we consider a source code variant, introduced by Birk and Kol [1], originally called informed source coding-on-demand (ISCOD), and further developed by Bar-Yossef et al. [2]. Motivating applications include satellite transmission of large files, audio and video on demand (such as streaming networks), database data retrieval, cache management for network applications and sensor networks. The model considered in [1] involves a source that possesses n messages and m receivers. Each receiver knows a proper subset of messages, which is referred to as the side information and demands a specific message unknown to it. The source, aware of the messages possessed by each receiver, uses this knowledge to develop a transmission scheme that satisfies the demands of all receivers using as few transmissions as possible, referred to as the index code length.
Index coding can be viewed as special case of rate distortion with multiple receivers, each with some side information about the source [3]. Index coding has received considerable attention recently, motivated by applications in multi-user broadcast scenarios, such as audio and video on demand, streaming networks, satellite communications and by its connection to network coding. In [4,5], the equivalence between network encoding and index encoding has been established. This research topic has been extended in other directions, such as pliable index coding [6], a variation of index coding in which we still consider a server and m clients with side information, but where the receivers are flexible and satisfied to receive any message that is not in their side information set; such flexibility can reduce the amount of communication, sometimes significantly. This has applications in music streaming services or internet searching, such as content distribution networks (CDNs) [7]; a CDN manages servers in multiple geographically distributed locations, stores copies of the web content (including documents, images, audio and others) in its servers and attempts to direct each user request to a CDN location that will provide the best user experience.
In this application, each receiver may be interested in receiving any message that it does not already possess as side information. Suppose that we are searching for the latest news and we already have some information. We are happy if we obtain any additional news that we do not have, with minimum delay. Here, we do not specify the news. On a music streaming service, users do not know which song will play next; they are usually only guaranteed that it will be one of a certain group and that it will not be repeated. In online advertising systems, customers do not require a specific advertisement to view; it is the distributor who chooses which one will be placed on customers' screens. The distributor may wish to avoid repeating the same advertisement for the same customer, as this can decrease customer satisfaction.
How much we can gain in terms of bandwidth and user satisfaction, if recommendation systems become bandwidth-aware and take into account not only the user preferences? Song and Fragouli [8] formulated this as a new problem in the context of index coding, where they relaxed the index coding requirements and considered the case where the customer is satisfied to receive any message that they do not already have, with satisfaction proportional to their preference for that message.
A promising research area that has recently emerged is in how to use index coding to improve the communication efficiency in distributed computing systems, especially for data shuffling in iterative computations [9,10]. Index coding has been proposed to increase the efficiency of data shuffling, which can form a major communication bottleneck for big data applications. In particular, pliable index coding can offer a more efficient framework for data shuffling, as it can better leverage the many possible shuffling choices to reduce the number of transmissions.
The index coding problem subject to transmission errors was initially considered by Dau et al. [11]. In this work, we establish a connection between index coding and errorcorrecting codes with multiple interpretations from the tree construction of nested cyclic codes proposed in [12]. The notion of multiple interpretation using nested codes [13] is as follows: multiple information packets are separately encoded via linear channel codes, and then combined by addition and transmitted as a single codeword, minimizing the number of channel uses and offering error protection. The resulting packet can be decoded and interpreted in different ways, yielding an increase in error correction capability, depending on the amount of side information available at each receiver. Part of the content of this paper was presented in [14]. In the current version, evidence to verify our claims has been added, as well as some examples. The results in this paper are an extension of the results in [12,14].
The main contributions of this paper are as follows.
• We verify that, for cyclic codes, there will not always be an increase in error correction capability between different levels of the code tree. For this reason, we initially restrict the study to Reed-Solomon codes since they are maximum separable distance (MDS) codes, and provide an increase in Hamming distance at each level. This means that, under certain conditions, knowledge of side information can be interpreted as an increase in error correction capability. • We propose a new variant for the index coding problem, which we call "index coding with multiple interpretations". We assume that receivers demand all the messages from the source and that the sender is unaware of the subset of messages already known by the receivers. The sender performs encoding such that any side information may be used by the decoder in order to increase its error correction capability. Moreover, if a receiver has no side information, the decoder considers the received word to belong to the highest rate code, associated with the root node of the tree. • We also propose a solution to relax some constraints on how side information should occur at the receivers, using graph coloring associated with the pliable index coding problem.

Notation and Definitions
For any positive integer n, we let [n] := {1, . . . , n}. We write F q to denote the finite field of size q, where q is a prime power, and use F q n×t to denote the vector space of all n × t matrices over F q .

Review of Linear and Cyclic Codes
We now introduce the notation and briefly review some of the relevant properties of linear and cyclic codes based on [15,16]. The purpose of a code is to add extra check symbols to the data symbols so that errors may be found and corrected at the receiver. That is, a sequence of data symbols is represented by some longer sequence of symbols with enough redundancy to protect the data. In general, to design coding schemes for receivers with side information, we will consider collections of linear codes that are of length n over F q .

Structure of Linear Block Codes
Recall that under componentwise vector addition and componentwise scalar multiplication, the set of n-tuples of elements from F q is the vector space called F n q . For the vectors u = (u 1 , . . . , u n ) ∈ F n q and v = (v 1 , . . . , v n ) ∈ F n q , the Hamming distance between u and v is defined to be the number of coordinates u and v that differ, i.e., is equal to d. Sometimes, we only use (n, k) q to refer to the code C, where n is the length of the codewords and k is the dimension of the code. The code's rate is the ratio k n .
That is, a (n, k) q linear code C can be completely described by any set of k linearly independent codewords v 1 , v 2 , . . . , v k ; thus, any codeword is one of the q k linear combina- If we arrange the codewords into a k × n matrix G, we say that G is a generator matrix for C.
A special case of major importance is F n 2 , which is the vector space of all binary codewords of length n with two such vectors added by modulo-2 addition in each component. A binary code of size M = 2 k for an integer k is referred to as an (n, k) binary code.
We consider cyclic codes of length n over F q with gcd(n, q) = 1. Label the coordinates of c ∈ F n q with the elements of Z n = {0, 1 . . . , n − 1} and associate the vector c = (c 0 , . . . , c n−1 ) with the polynomial c(x) = c 0 + c 1 x + · · · + c n−1 x n−1 . With this correspondence, a cyclic code C is an ideal of the ring R n = F q [x]/(x n − 1). We use g(x) to denote the generator polynomial of C and write C = g(x) = {C(x) ∈ F q [x]; g(x)|C(x)} to describe a t-error correcting cyclic code.

Index Coding with Side Information
The system shown in Figure 1 illustrates the index coding problem. Receiver R i is requesting the message x i , i ∈ {1, 2, 3} and knows other messages as side information; R 1 knows x 3 , R 2 knows x 1 and x 3 and the receiver R 3 knows x 1 and x 2 .
The goal of index coding is to perform the joint encoding of the messages, in order to simultaneously meet the demands of all receivers, while transmitting the resulting messages at the highest possible rate. Assuming a noiseless broadcast channel, the server would communicate all messages by sending one at a time, in three transmissions.
Alternatively, when transmitting the two coded messages x 1 and x 2 ⊕ x 3 , the receiver The index coding problem is formulated as follows. Suppose that a server S wants to send a vector x = (x 1 , {i}} as side information and is interested in receiving the message x i . The codeword C(x) ∈ F q is sent and allows each receiver R i to retrieve x i . C is an index code scalar over F q of length . The purpose of S is to find an index code that has the minimum length. The index code is called linear if C(x) is a linear function.

Index Coding via Fitting Matrices
A directed graph G = (V, E ) with n vertices specifies an instance of the index coding problem. Each vertex of G corresponds to a receiver (and its demand) and there is a directed edge i −→ j if and only if the receiver R i knows x j as side information. Then, we write: Thus, M − I is the adjacency matrix of an edge-induced subgraph of G, where I denotes the n × n identity matrix. 2. The minrank of G over the field F 2 is defined as follows: The term rank 2 (M) denotes the rank of such matrix M over F 2 , after " * " has been assigned a value of 0 or 1. As an example for the index coding problem instance described in Figure 1, the matrix M would be given as follows: Consider the side information graph G and a matrix M that fits G, as shown in Figure 2. As minrank 2 (M) = 2, we can select two linearly independent rows in a matrix M, namely M , and design an linear index code with the shortest possible length. The codeword sent will be M x.

Theorem 1 ([2]
). For any side information graph G, there exists a linear index code for G whose length equals minrk 2 (G). This bound is optimal for all linear index codes G.
In [17], the index encoding problem was generalized. Suppose that a sender wants to transmit n messages (X 1 , . . . , X n ), where X i ∈ F q t ∀ i ∈ [n], to m receivers R 1 , . . . , R m , through a noiseless channel. The receiver R j is interested in recovering a single block The goal is to satisfy the demands of all receivers, exploiting their side information in a minimum number of transmissions.
When m = n, f (j) = j, ∀ j ∈ [m] and t = 1, we have a scalar index code [2]. Otherwise, we have a vector index code.
Let I = {S j ; j ∈ [m]} be the set of side information of all receivers. An instance of an index coding problem given by (m, n, I, f ) can be described by a directed hypergraph.

Definition 4.
Given an instance of an index encoding problem described by H(m, n, I, f ), is a F q -index code with length , for the instance described by H, if, for each receiver R j , j ∈ [m], there exists a decoding function The transmission rate of the code is defined as t . If t = 1, then the index code is known as a scalar index code; otherwise, it is known as a vector index code. A linear coding function C is also called a linear index code. The goal of index coding is to find optimal index codes, i.e., those with the minimum possible transmission rate. For scalar linear index codes, we refer to the quantity r as the length of the code, and thus rate optimality translates to minimal length codes.
G is the matrix that generates the linear index code C.
The following definition generalizes the minrank definition over F q of the side information graph G, which was defined in [2], to a hypergraph H(m, n, I, f ).
The Hamming weight of v will be denoted by ω(v) = |Supp(v)|, the number of nonzero coordinates of v.

Definition 7 ([11]).
Suppose that H(m, n, I, f ) corresponds to an instance of index coding with side information (ICSI). Then, the minrank of H over F q is defined as This may be rewritten as follows.
Definition 8. Let a side information hypergraph H correspond to an instance of the ICSI problem.
The minrank of H over the field F q is defined as follows: ). Given an instance of an index encoding problem described by the hypergraph H(m, n, I, f ), the optimal length of an index code on the field F q is minrk q (H).
In [2], it was proven that, in several cases, linear index codes were optimal. They conjectured that for any side information graph G, the shortest-length index code would always be linear and have length minrk 2 (G). The conjecture was refuted by Lubetzky and Stav in [18]. In any case, as shown by Peeters [19], calculating the minrank of an arbitrary graph is a difficult task. More specifically, Peeters showed that deciding whether a graph has minrank three is an NP-complete problem.

Example 3.
Consider the instance of the index encoding problem given in Example 2. Then, we find that the matrix M that fits the hypergraph H has the form: The lines are associated with the receivers R 1 , . . . , R 5 and the columns to the message indexes 1, 2, 3 and 4. The symbol " * " can be replaced by an arbitrary element in the field F q .
For an example, consider the field F 2 . A matrix that fits the hypergraph H has rank at least 3. Thus, we select which achieves the minimum rank 3. Now, we consider three linearly independent lines of M, and suppose that The decoding process goes as follows. Since R 2 and R 5 already know {x 2 , x 4 } and {x 1 , x 3 }, respectively, they obtain x 3 and x 2 , respectively, from the first packet. Receiver R 1 obtains x 1 and both R 3 and R 4 obtain x 4 .

Remark 2.
We have made available at [20] an algorithm (m-files) in Matlab, which is designed to solve small examples in this work, since, as we mentioned above, there is no polynomial-time algorithm for an arbitrary graph.

Pliable Index Coding
The pliable index coding problem (PICOD), introduced by Brahma and Fragouli in [6], is a variant of the index coding problem. In PICOD, users do not have predetermined messages to decode, as in the case of classic index coding; instead, each user is satisfied to decode any message that is not present in its side information set. Figure 4 illustrates this system model.

Request any
Has

Request any
Has The problem is formalized as follows: a transmitter with n messages {x i : i ∈ [n]}, x i ∈ X is connected to m receivers R 1 , . . . , R m , through a noiseless channel. Each receiver R j knows x S j = {x i : i ∈ S j } as side information. We denote by I j [n] S j the index set of the unavailable messages in x S j . Then, x I j = {x i : i ∈ I j } denotes the set of requests of R j . Each receiver R j is satisfied if it can successfully recover any message that is not present in its side information set, i.e., any message x d ∈ x I j .
We can represent an instance of a pliable index coding problem using an undirected bipartite graph, one side representing the message indexes and the other side representing the receivers. We connect R j to the indices belonging to I j , as in Figure 5.

Remark 3.
By having this freedom to choose the desired message for each user, PICOD can satisfy all users with a significant reduction in the number of transmissions compared to the index encoding problem with the same set of messages and the same sets of user side information.
Example 4. We will consider the case described in Example 2 as a pliable index coding problem. Now, we have the bipartite graph in Figure 5 describing the problem. Note, for example, that client 1 demands any of the messages indexed in I 1 = {1, 2} and knows the indexed messages in S 1 = {3, 4}; client 3 will be satisfied to receive any of the messages x 2 , x 3 or x 4 , since it only knows x 1 .

Pliable Index Coding via Colorings of Hypergraphs
In [21], a graph coloring approach was presented for pliable index coding. The authors have shown the existence of a coding scheme that has length O(log 2 Γ), where Γ refers to a hypergraph parameter that captures the maximum number of intersections between edges of the PICOD hypergraph.
An instance of the pliable index encoding problem is described by (m, n, I)−PICOD, onde I = {I j ; j ∈ [m]}, and can be conveniently represented by a hypergraph. The problem illustrated in Example 5 can be represented by a hypergraph, as can be seen in Figure 6. Let H = (V, E H ) be a hypergraph and C : V → [L] be a coloring of V, where L is a positive integer. We say that C is a conflict-free coloring for the hyperdges, if each E H of H has at least one vertex with unique color. The smallest number of colors required for such a coloring is called the conflict-free chromatic number of H, denoted by χ CF (H). This parameter was first introduced by Even et al. [22].

Remark 4.
In [21], pliable index coding was given a graph coloring approach. The authors have shown the existence of a coding scheme that has length O(log 2 Γ), where Γ refers to a hypergraph parameter that captures the maximum number of "incidences" of other hyperedges in any given hyperedge. This result improves the best known achievable results, in some parameter regimes.

Definition 10.
A pliable index code (PIC) consists of a collection of an encoding function on the server that encodes the n messages to an −length codeword, The quantity − is called the length of the pliable index code. We are interested in designing pliable index codes that have small −.
We will assume that X = F k for some finite field F and integer k ≥ 1. If k > 1, we refer to this code as a k−vector PIC, while the k = 1 case is also called a scalar PIC. We will concentrate on the linear PICs. In this case, the coding function φ is represented by a matrix × mk (denoted by G) such that φ(x i : i ∈ [n]) = Gx T , where x = (x 11 , . . . , x 1k , . . . , x m1 , . . . , x mk ). The smallest for which there is a linear k−vector PIC for an instance of the pliable index coding problem given by the hypergraph H will be denoted by * k (H).
From the messages x 1 ⊕ x 4 and x 2 ⊕ x 3 , all receivers can successfully recover at least one message from their request set.
Using the same parameters as in Example 2, we see that the length of the index code for this instance is = 3, while, for the PICOD case, * k (H) = 2.

Index Coding via MDS Codes
The index coding model defined in Section 2.3, via graph theory, is only one of many approaches used to describe and solve an index encoding problem. One of the most interesting index coding schemes using codes has the maximum distance separable (MDS) property, which consists of transmitting κ(G) = n − mindeg(G), the parity symbols of a systematic MDS code with parameters (n + κ, n), where mindeg(G) represents the minimum amount of side information available at each receiver, i.e., for a general index encoding problem with side information graph G, Then, every receiver has n code symbols (including its side information) and, by the MDS property, it can successfully recover its desired message.

Proposition 1 ([1]).
Consider an index coding problem with n messages and n receivers represented by the side information graph G. Let S i , the side information set of the receiver R i , i ∈ [n], and then Corollary 1. If G is a complete graph, then mindeg(G) = n − 1 and the transmission of the parity symbol x 1 + · · · + x n of an (n + 1, n) MDS code over F 2 achieves minrk q (G) = 1.

Results
The tree construction method proposed in [12] can be interpreted as a network coding problem with multiple sources and multiple users. In the proposed model, both encoding and decoding are performed by polynomial operations, without the need for side information; however, if they exist, they may allow multiple interpretations at the receivers, based on the side information available at each receiver. Figure 8 illustrates this system model. Given the connection between network and index coding problems, established in [4], we can also interpret the coding with nested cyclic codes, at the stage where the packets are XOR-ed together, as a case of MDS index coding according to Corollary 1, in the particular case where each receiver is unaware of the message it is requesting, which may be a rare occurrence. However, it is possible to take advantage of the method's distinguishing feature-the possibility of multiple interpretations at the receivers-and, by imposing some extra conditions, design an index code model that has greater flexibility over the side information sets.
In the next subsections, we present some results and algorithm implementations, and in Section 4, we present in detail the proposed index encoding with multiple interpretations.

Index Coding from Reed-Solomon Codes
We establish a connection between index coding and error-correcting codes based on the tree construction method of nested cyclic codes proposed in [12]. We implement a few algorithms to perform tree construction using the Matlab language, which allows us to work over finite bodies in a practical and efficient way and helps to solve some implementation problems encountered later in [12]. We prove that for cyclic codes, there will not always be an increase in error correction capability between the levels of the tree, as suggested in [12]. This is why we have initially limited this study to Reed-Solomon codes, because they are MDS codes, which guarantees an increase in Hamming distance at each level, meaning that, under certain conditions, the knowledge of side information will be interpreted as an increase in the decoder's ability to correct errors.

A Tree Construction with Nested Cyclic Codes
A nested code is characterized by a global code where each element is given by a sum of codewords, each belonging to a different subcode. That is, where ⊕ represents an XOR operation. For an information vector i , 1 ≤ ≤ N, the codeword i G belongs to a subcode C of code C and c ∈ C.
Nested cyclic codes, whose subcodes are generated by generator polynomials, were originally proposed by Heegard [23], and were originally called partitioned linear block codes. They can be defined as follows: |C(x)} be a t-error-correcting cyclic code having g(x) as the generator polynomial. Note that C = g(x) is an ideal of the ring R n = F q [x]/(x n − 1), but is also a vector subspace of F n q , such that where C (x) = p (x)g (x), 1 ≤ ≤ N is an encoded packet belonging to the t -error-correcting subcode C = {C (x) ∈ F q [x]; g (x)|C (x)}, generated by g (x) and satisfying the following conditions: The tree-based algebraic construction of nested cyclic codes, proposed in [12], aims to 1. Encode, independently, different data packets, providing protection against channel errors; 2.
Encode different data packets producing codewords that are added, resulting in the packet C 0 ; 3.
Correct the errors on C 0 and, finally, recover the data in the receiver by polynomial operations.
Consider a tree in which the root node is associated with the vector subspace of an encompassing error correcting code. Thus, the root node is defined as the code C i0 , such that This subspace corresponds to a t 0 -error-correcting cyclic code C i0 (n, k i0 ), generated by the polynomial g i0 (x).

Definition 13.
A tree of nested cyclic codes is a finite tree such that 1.
Each inner node (including the root node) can be subdivided into another inner node and a terminal node;

2.
The jth th inner node is associated with a linear subspace C ij ⊂ F n q of dimension k ij , and can be subdivided into the subspaces The subspace C ij , associated with the jth inner node, must be a cyclic linear block code generated by g ij (x); 4.
To conclude, the last inner node will have no ramifications. Figure 9 illustrates the model described above. Figure 9. Tree construction. The sum of the dimensions associated with the last node and the terminal nodes is equal to the dimension of the root node.

Remark 5.
Let p j (x) be the data packet associated with the terminal node, for 1 ≤ j ≤ T. The encoding is given by Then, the encoded packets are summed up and the resulting codeword is sent out by the transmitter C 0 (x) = C 1 (x) + C 2 (x) + · · · + C T (x).
After the error correction phase, the jth packet p j (x) is decoded by the operations: The information will be contained in the remainder of the division of C 0 (x) by g ij (x), since the modulo operation eliminates the influence of all messages related to polynomials of degree equal to or greater than the degree of g ij . Thus, the quotient of the final division operation provides the desired information, since all other messages have degree less than the degree of the divisor polynomial. Therefore, in the case of the last package, only the division operation is required. We suggest consulting [12] for more details on the encoding process using the tree construction method.

Tree Construction: Algorithm and Considerations
We describe a few algorithms in Matlab and considerations for fitting to the model of tree construction, which can be found at [20], allowing us to perform the calculations on finite fields by making the appropriate transformations from integer representation to powers of α. Below, we exemplify the main idea of the algorithm. Example 6. For T = 3 let C i0 (7, 5) be a Reed-Solomon code in GF (8) and k t1 = k t2 = 2 the dimensions of subspaces C t1 , C t2 , respectively. They are associated with the terminal nodes of the tree; the last node of the tree, which is an inner node without ramification, is associated with C i2 of dimension k i2 = 1.
The packets p 1 (x) = x + α 2 , p 2 (x) = α 3 x + α, both associated with the the terminal nodes, have length 2; p 3 (x) = α 5 has length equal to 1 and is associated with the last node. Let α be the primitive element of GF (8), and the generator polynomials are Then, the encoded packets are The transmitted codeword C 0 (x) is given by

Remark 6.
Each terminal node is a shortened version of the code associated with the inner node from which the terminal node emanates. It is implicit that the codewords of shortened codes are prefixed with zeros to achieve length n and, therefore, that these codes are not cyclic.

Decoding-Error Correction
Considering tree construction based on Reed-Solomon codes and assuming that the receiver has side information available, when will there be an increase in error correction capability? Proposition 2. Due to the nesting structure, the variable error correctability characteristic can only be observed if there is a sequential removal of the packets associated with the nodes from the root to the top of the tree.
Proof. Supposing that C (x), 1 ≤ ≤ T is the first coded packet known at the receiver, then therefore, C 0 (x) ∈ C i0 (n, k io ), whose error correction capability is t 0 . Note that even though the receiver knows about other packages C j (x), < j ≤ T, the result does not change. On the other hand, if all packages C j (x); 1 ≤ j < are known to the receiver, we can write thus, C 0 (x) ∈ C i (n, k i ), whose error correction capability is t t 0 , and equality occurs only when d min (C ) − d min (C 0 ) < 2.

Example 7.
Consider the same tree as in Example 6.
• If all packages are unknown ⇒ the decoding is performed by C i0 (7,5) However, if C 2 (x) is known but C 1 (x) is not, then the resulting codeword still belongs to C 0 (x) ∈ C i0 (7,5), and there is no improvement in error correction capability, since Another advantage of Reed-Solomon codes is that they are easily decoded using an algebraic method known as syndrome decoding.

Syndrome Decoding
Syndrome decoding is an algebraic method based on the Berlekamp-Massey algorithm, which became a prototype for the decoding of many other linear codes.
If the coded package C 1 (x) is known and an error e(x) occurs, then the message received will be Suppose that the error is given by e(x) = 0x 6 + 0x 5 + α 2 x 4 + α 5 x 3 + 0x 2 + 0x + 0, and then

Remark 7.
Notice that we need to find the error locations and their values, which is the main difference with binary codes, since, for binary codes, it is enough to determine the error locations.
The decoding process can be divided into three stages.

Syndrome calculation
The syndrome calculation stage consists of checking the roots of the generating polynomial as inputs of r(x). If the result is null, the sequence belongs to the set of codewords and, therefore, there are no errors. Any nonzero value indicates the presence of an error.
If the encoded packet C 1 (x) is known, then the error correction algorithm is executed by C i1 , which is a RS(7, 3) code, generated by g i1 ( Therefore, evaluating the roots of g(x) at r(x), the result will only be null when there are no errors in the transmission.
To correct r(x), we must find the values and locations of the errors, which are denoted, respectively, by e 1 , . . . , e µ and x 1 , . . . , x µ . Substituting α j , 1 ≤ j ≤ 2t, into the error polynomial e(x), we obtain .
Obtain X i = α i and Y i = e i for 1 ≤ i ≤ µ, where X i and Y i will represent, respectively, the locations and values of the errors. Note that we will have 2t equations and 2t unknowns, t being error values and t being locations.
It can be shown that this nonlinear system has a unique solution if 0 ≤ µ ≤ t [15]. The techniques that solve this system of equations include defining the error locator polynomial (ELP) σ(z) [24].

Determining the error values
Calculating e(x) = e 3 x 3 + e 4 x 4 at the points α and α 2 , we can use the syndromes already obtained, S 1 and S 2 , to determine the values of the errors, solving the following system: Therefore, the error polynomial is given by e(x) = α 5 x 3 + α 2 x 4 . Now, correcting the received word r(x), we have

Decoding-Data Recovery
Example 8. For the cases in the previous examples, where T = 3, the original data can be recovered as follows: In summary, the module operation removes the branches above the node of interest and the division operation removes the branches below. Therefore, no side information is needed at the receiver in order to recover the data packets.
Will There Always Be an Increase in Error Correction Capability?
We analyze two cases of tree construction of nested cyclic codes, with the same parameters at each level. In one of them, we observe no increase in the error correction capability from the second to last internal node of the tree. This is due to the variety of possibilities of generating polynomials for a cyclic code of parameters (n, k). As a result, we demonstrate in Proposition 3 that, for Reed-Solomon codes, this feature of increasing capacity will be guaranteed provided that: k ij − k i(j+1) ≥ 2, ∀ j = 0, . . . , T − 1.
Example 9. Let C i0 (15, 10) be a cyclic code in GF(2) and k t1 = 4, k t2 = 2 be the dimensions of the subspaces C t1 , C t2 , respectively. The last node is associated with C i2 with dimension k i2 = 4. The construction is depicted in Figure 10. Figure 10. Tree construction.
We consider the factorization:

Remark 8.
We have provided an m-file algorithm at [20], which can be run through Matlab and performs the operations described in Examples 8 and 9.
Proposition 3. Given a (n, k) Reed-Solomon code, which has minimum distance d = n − k + 1, one can guarantee an increase in error correction capability at each level of the tree provided that k ij − k i(j+1) ≥ 2, ∀ j = 0, . . . , T − 1.
The verification that, for cyclic codes, there will not always be an increase in the error correction capacity between the levels of the tree, as considered in [12], leads us to search for answers on how to properly choose the generating polynomials for a code of parameters (n, k) and its subcodes, in order to guarantee subcodes with larger Hamming distance, with the purpose of observing an increase in the error correction capacity between the levels of the tree. An approach to constructing chains of some linear block codes while keeping the minimum distances (of the generated subcodes) as large as possible is presented in [25] and may be the solution to this problem.

An Example with a BCH Code
According to Luo and Vinck [25], to construct a chain of BCH subcodes with the characteristic of maintaining the minimum distance as large as possible, the task becomes more difficult because their subcodes may not be BCH and cyclic codes, and therefore the minimum distance of these subcodes might not be found easily. However, for primitive BCH codes, the minimum distance coincides with the weight of the generator polynomial, which makes it feasible to use it for the construction of the nested subcode chain that we seek. For non-primitive BCH codes, this statement is not always valid. For an extensive description of the minimum distance for BCH codes, we recommend consulting [26].
In Table 1, we present the parameters for binary primitive BCH codes of length n = 2 m − 1; it will guide the tree construction. Note that there will always be an increase in error correction capability for a fixed n and varying k.
Encoding the packets, we have: The transmitted codeword C 0 (x) is given by: Alternatively, it is possible to represent the codeword in vector form: C 0 (x) = (1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1) After the error correction process, which will be performed on the sum of the coded packets, taking into account the side information available at each receiver, data recovery will occur as follows:

Remark 9.
We have made available at [20] an m-file Matlab algorithm that performs the tree construction operations and the data recovery for the BCH code.

Index Coding with Multiple Interpretations
In the problem of index coding with multiple interpretations, we assume that receivers demand all the messages from the source and that the sender is unaware of the subset of messages already known in the receivers-performing an encoding so that any side information may be used by the decoder, in order to increase its error correction capability. Otherwise, if a receiver has no side information, the decoder considers the received word to belong to the highest rate code associated with the root node of the tree.
The proposed encoding process is shown in Figure 12 and can be performed in four main steps:

1.
Encoding of the different data packets with nested cyclic codes, which consists of subdividing the vector space of a linear block code into vector subspaces, using each of them for encoding a different user; 2.
Implementation of index coding at the relay node; the basic idea is that the different data packets, encoded by polynomial multiplications with linearly independent generators, are added and then forwarded to the receivers; 3.
Multiple interpretations at the receivers that occur at the error correction stage, where each receiver can decode the received message at different rates depending on the known side information; 4.
The data recovery stage, i.e., the process of decoding C 1 (x), . . . , C T (x) through polynomial operations (1), as described in Section 3.1. The notion of multiple interpretations was introduced in [13], indicating that the error correction capability in decoding gradually improves as the amount of side information available at the receiver increases. However, as we prove in Proposition 2, because of the nested structure of the tree, this characteristic of variable error correction capability can only be observed if there is a sequential removal of packets associated with the nodes, i.e., the side information should occur sequentially from the root to the top of the tree. However, in practice, this is not always the case. Thus, if we want to ensure that any information can be used efficiently in the decoder, it will be necessary to assume knowledge of the side information by the relay node or even the demand set, if we have a PICOD problem.
The following is a proposal for pliable index coding with multiple interpretations.

Pliable Index Coding with Multiple Interpretations
As in the pliable index coding problem [6], we will assume that the transmitter knows the demand set of each receiver and that all receivers are satisfied by receiving any message contained in their demand set. For example, if we are searching on the internet for a red flower image and we already have some previously downloaded pictures on our computer, if we find any other image that we do not have yet, we will be satisfied.
The goal of the server is to find an encoding scheme that satisfies all receivers, using as few transmissions as possible and ensuring that all side information associated with nodes located below the node where the packet to be recovered is located may be interpreted as a gain in error correction capability, even when they do not appear in such a sequence.
The idea behind this proposal is to apply conflict-free coloring to the hypergraph that represents the demands of all receivers, and instead of sending the encoded word C 0 (x) = C 1 (x) + C 2 (x) + · · · + C T (x), we select the packets in a way that maximizes the possibility of a gain in error correction capability, since, as mentioned above, packages will only be removed if they occur sequentially.
Note that if we send only the message C 0 = C 1 ⊕ C 3 ⊕ C 4 , all receivers recover one and only one message from their request set, as we can see in Table 2. Table 2. Receivers with their side information sets.

Receivers
Side Information Sets Decodes from Transmission Each receiver R j is satisfied if it can successfully recover any new message that is not present in its side information set, i.e., any message x d ∈ x I j , where I j [n] S j .
Depending on the problem, this would be an ideal solution, since the transmitter may want each receiver to decode only one message, in which case we would have a PICOD(1); no client can receive more than one message from its request set. The case of PICOD(1) is dealt with in detail in [27], and the following example, which aptly illustrates its use, is provided.
Consider a media service provider whom we pay for movies. The provider has a set of movies and customers pay for a certain number of movies, e.g., one movie. Suppose that the service is being sold in such a way that customers will be happy to receive any movie that they have not watched yet. There is a restriction on the service provider's side, since customers who have paid for only one movie should not receive more than one. Therefore, it can only supply one film for each client.

Conclusions
The verification that, for cyclic codes, there will not always be an increase in the error correction capacity between the levels of the tree leads us to search for ways to correctly choose the generating polynomials for a code and its subcodes, in order to guarantee subcodes with larger Hamming distance and an increase in error correction capability in consecutive levels of the tree. A method for the construction of chains of some linear block codes that maintains the minimum distances (of the generated subcodes) as large as possible is presented in Vinck and may be useful in addressing this issue.
Our work deals with the construction of index coding. We treat index coding as a network coding problem and we show how it is possible to construct pliable index codes with multiple interpretations by exploiting the conflict-free coloring of a hypergraph. Studying conflict-free coloring of a hypergraph in the context of the general index coding problem seems to be an interesting direction for future studies.