The Refinement Polynomial
In this page, we discuss refinement and packing, two dual notions that sit at the center of ring-switching. Indeed, as we've said, we've thus far only committed large-field polynomials. On the other hand, given any large-field polynomial, we can freely decide to view it as a small-field polynomial, merely by refining the boundary points which divide adjacent field elements. The point is to make this formal data-casting operation algebraic, so that we can get an evaluation protocol on the refined thing. An important resource here will be our primer on binary towers.
The Refinement Polynomial
As we've seen, each -element concretely looks like a length- strings of bits. We're going to pick a refinement factor . The basic operation is this: if I start with a length- list containing -bit strings, then, by "chopping them up" into substrings a piece, I can cook up a length- list of -bit strings.
This is a procedure we just introduced on lists. On the other hand, using the dictionary between lists and multilinears, we can always equally express the procedure in terms of multilinears, too. Thus our input is a multilinear over the huge field . By performing the above procedure on 's vector of Lagrange coefficients, we get a further vector. Upon interpreting that vector as the vector of Lagrange coefficients of some further polynomial, we obtain a polynomial over . We call the refinement virtual polynomial.
The Packed Polynomial
We can always reverse this process, in a fairly straightforward way. Indeed, if we start with a polynomial over , let's say, we can choose to pack its coefficients. In this side of things, we arrange 's vector of Lagrange coefficients into chunks, and concatenate each chunk. In this way, we obtain a polynomial with fewer coefficients, but over a larger field. More precisely, if our chunk size is , then the end result will be , a polynomial over . The number of variables has gotten smaller, by , while the tower height has increased by .
The Algebraic Meaning
The key fact that underlies everything that comes next is that these packing and refinement operations are algebraic. If we were working in the prime-field setting, it simply would not be algebraically meaningful to slice and dice the bit-representations of field elements in the way that we're doing now. Nor, for that matter, would these operations be meaningful if we used classical binary fields (defined as quotients of univariate polynomial rings).
Binius uses towers of binary fields, binary fields of a special sort. We again fix a pair of tower heights . We write . As is true for any field extension, we can always view as a vector space over its own subfield . As we've seen, our tower construction yields a particular natural basis of over , called the the multilinear monomial basis. Because of how the recursive bit-representation of -elements works, the splitting or refinement operation we just did above in fact effects a basis decomposition with respect to this basis. Similarly, our packing operation is a basis-combination.
Indeed, if we start with a big-field element , then, by definition of the basis , we get a unique sequence of -valued coordinates for which holds. These -elements turn out to be exactly the substrings we just split 's bit representation into. This makes sense when you think about how towers work: the elements are the coefficients corresponding respectively to the monomials , in 's multilinear polynomial representation. When we write in bits, we end up concatenating these coefficients.
In our next topic—the tensor algebra—we will constantly use these splitting and joining operations. In fact, we will view -elements and -tuples of -elements like as "the same thing".