Run a computation for steps and record, at each step, the value it holds in each of its registers. The record is a table: one column per register, one row per step, every entry an element of a finite field. A proof system of the kind underlying Halo 2 and Zcash Orchard convinces a verifier that such a table obeys its rules—that every row follows from the one before it—without the verifier replaying the computation. Its basic move is to treat each column as the value table of a polynomial: a function given by its values at fixed points is, by Lagrange interpolation (5.30), the same data as a polynomial of degree less than , and statements about the table become statements about polynomials—checkable all at once, at a single random point, by the Schwartz–Zippel principle (5.45). For this plan to be workable two demands must be met. The evaluation points must be structured, so that “every row” conditions, “next row” shifts, and the bookkeeping polynomials attached to the point set stay cheap; and converting between a polynomial’s values and its coefficients—and multiplying two polynomials—must cost far less than the field operations of the schoolbook methods, or provers could never handle tables of practical size. Both demands are met by one choice of point set: the powers of a root of unity. Nearly every operation such a proof system performs—committing to a polynomial, checking that two polynomials agree, enforcing that a constraint vanishes everywhere it should, multiplying or interpolating efficiently—is ultimately a computation indexed by the finite multiplicative subgroup those powers form. This section develops the theory of these subgroups and delivers, in the fast Fourier transform, the arithmetic promised above.
Throughout, denotes a field. When is to be finite, the notation denotes the field with elements (so is a prime power, 6.9); when we intend a prime field specifically we write . The multiplicative group of nonzero elements is (Example 3.7). We reserve the letter for the order of the domain we shall construct; throughout, .
The route is as follows. We first define roots of unity and the primitive ones among them, and settle exactly when a finite field contains them: the condition is , a direct consequence of the cyclicity of proved in §6. We then fix the evaluation domain , the subgroup those roots form, and work out its toolkit: the vanishing polynomial and its cosets, the Lagrange basis in closed form, and the evaluation/interpolation isomorphism in matrix form. The isomorphism, read as a matrix, is the number-theoretic transform; the convolution theorem turns polynomial multiplication into entrywise multiplication of value vectors; and the fast Fourier transform computes the transform in operations. A closing synthesis assembles the pieces into the reason these domains form the substrate of polynomial proof systems.
The starting point is the equation . Its solutions in a field are the roots of unity of order dividing .
Let be a field and . An element is an -th root of unity if . We write
for the set of all -th roots of unity in .
Note that , since ; every -th root of unity is therefore a unit, i.e. lies in . The set is not merely a set; it is a group.
The set is a finite subgroup of of order at most .
The bound need not be attained. Whether it is attained is precisely the question of the existence of a primitive -th root of unity.
An element is a primitive -th root of unity if and for every integer with . Equivalently, is a primitive -th root of unity if its multiplicative order (3.11) equals .
Here is the least positive integer with ; it exists for any because itself is such an exponent and the positive integers are well-ordered. The two formulations in 9.3 agree: for together with states exactly that the least positive exponent killing is .
The identification promised in 6.20 can now be stated. A primitive root of a finite field —a generator of the cyclic group , in the sense of 6.19—is an element of multiplicative order , which by 9.3 is precisely a primitive -th root of unity. The group-theoretic vocabulary “generator of ” and the polynomial-flavoured vocabulary “primitive -th root of unity” name the same elements.
Let have finite order . Then for any integer we have if and only if . In particular, is an -th root of unity if and only if , and is a primitive -th root of unity if and only if .
The lemma’s constant companion is the order-of-a-power formula in a cyclic group, , proved as Corollary 3.23; we use the pair repeatedly below as the standard device for computing orders.
If is a primitive -th root of unity, then
is a cyclic group of order exactly , and these powers are pairwise distinct.
Over the complex numbers a primitive -th root of unity always exists, namely : this is the classical picture of equally spaced points on the unit circle, with the primitive roots sitting at the angles for . Over a finite field existence is more delicate, and it is exactly the finite case that matters for cryptography.
The decisive structural fact about finite fields is that their multiplicative group is cyclic of order (6.17); the existence theorem for roots of unity rests on it.
Let be a finite field and with (automatic when , where ; equivalently, in characteristic , exactly the condition ). Then:
contains a primitive -th root of unity if and only if .
When , the group is cyclic of order exactly , and the number of primitive -th roots of unity in is , where is Euler’s totient function (2.26).
Let be a generator of , which is cyclic of order by 6.17.
() Suppose is a primitive -th root of unity in . Then has order by 9.3, and by Lagrange’s theorem the order of an element divides the group order (Corollary 3.30). Hence .
() Suppose , say . Set . Then , so . Its order is
using the order-of-a-power formula (Corollary 3.23) together with (so ). Thus is a primitive -th root of unity, and by 9.6, is cyclic of order exactly .
Count. In the cyclic group of order , the element has order , again by Corollary 3.23. This equals precisely when , and the number of with is by definition (2.26). Hence there are exactly primitive -th roots of unity.
(A side note on the coprimality hypothesis. The condition is what guarantees that is separable— when in —hence has distinct roots in a splitting field over (5.40); that all of them lie in itself is exactly the condition . If divided , then would have repeated roots and would be strictly smaller. But already forces , since , so the hypothesis is in fact subsumed.) □
The proof shows that for a finite field the clean statement is simply: has a primitive -th root of unity , with no separate coprimality side-condition, because automatically makes coprime to . We stated the condition explicitly only to flag the role of the characteristic.
Take with . Here , and is a generator of : its successive powers are , all six nonzero residues (Example 6.21). For , set and . Indeed , , , so has order and . There are primitive cube roots of unity, namely and . By contrast , so has no primitive -th root of unity: , and is irreducible over because it has no root there, not being a square modulo .
For the fast algorithms below it is desirable that be a power of two, or at least smooth—a product of small primes, ideally with many factors of two. 9.7 shows this is possible exactly when . The largest with is called the two-adicity of the field. Designers deliberately choose primes with high two-adicity—so that for large —as scalar fields in proof systems precisely so that large smooth evaluation domains exist. Both Pasta primes—those underlying the Pallas and Vesta curves of 10—satisfy , with two-adicity exactly (the primes are specified in §5.4.9.6, “Pallas and Vesta”, of the Zcash protocol specification), so each Pasta field contains primitive -th roots of unity for every , furnishing power-of-two evaluation domains of every size up to ; this is what makes the entire machinery of this section available to Halo 2 and Orchard.
We now fix the central object of this section.
Let be a field containing a primitive -th root of unity . The evaluation domain of order is the multiplicative subgroup
a cyclic group of order by 9.6. We index its elements as , and abbreviate by when convenient. Both and remain fixed for the rest of the section.
Because is a multiplicative group, it is closed under products and inverses, and . These elementary facts are exactly what make substantially more useful than an arbitrary set of interpolation points: cosets, products, and shifts of interact algebraically. The single most important polynomial attached to is the one that vanishes precisely on it.
The vanishing polynomial (or zerofier) of is
On a generic -point set the vanishing polynomial (5.33) is an unstructured product of linear factors. On the group it collapses.
With of order generated by a primitive -th root of unity ,
Moreover is separable: it has distinct roots and .
Every satisfies , hence is a root of . The elements of are distinct (9.6), so has distinct roots, namely all of , and factors as for some constant by iterating the factor theorem (5.36, with the degree leaving no room for further factors). Comparing leading coefficients—both and the product are monic—gives , whence .
For separability, the formal derivative is (5.37). The existence of the distinct roots already forces : if divided , say , the freshman’s dream (6.13) would give , a polynomial with at most distinct roots—a contradiction. Hence in , so is nonzero at every element of , since each is nonzero. Thus it has no root in common with , so and is separable (5.40). □
The contraposition through the freshman’s dream is worth isolating as a device: it converts a root count ( distinct -th roots of unity exist) into a characteristic condition (), and thereby licenses dividing by in —which the closed forms below do constantly.
The closed form is the workhorse of polynomial proof systems: testing whether a polynomial vanishes on all of reduces to checking divisibility by , which one can verify by exhibiting a quotient with . Moreover, evaluating at any point costs a single exponentiation , not multiplications. We record two structural consequences.
Substitute :
using 9.13 for the middle equality. The constant is , and
so distinct cosets give distinct constants . □
Let be a field, with , and . Then
Write . Multiplying by advances every term one slot:
In the difference , the terms appear in both lines and cancel; only the two extremes survive:
Since , the factor is invertible, and dividing by it yields the claim. □
If then , and more generally for any integer ,
For there is also a proof with no formula at all. The terms of run through the subgroup generated by , each element appearing equally often; multiplying the sum by merely rotates that cycle one notch—each term advances to the next, the last wrapping around to the first—so the sum satisfies . A quantity invariant under scaling by something other than can only be zero: with forces . The balanced cycle of 1 is this argument made visible.
Call two vectors in orthogonal when their standard inner product (8.21) vanishes. For each frequency let be its vector of powers, and let be the same construction run with in place of : the mirror of , walking the cycle in the opposite direction, in the role the complex conjugate plays classically (on the unit circle ). Then , which 9.16 evaluates to for and to for : distinct frequency vectors are orthogonal, and each pairs with its own mirror to . (Which factor carries the mirror is a convention: with the roles exchanged the exponent is , and the criterion is symmetric, so the verdict is the same; the order here matches the product computed in 9.29.) This is the finite-field counterpart of the orthogonality of the exponentials in classical Fourier analysis, the balanced trip around the cycle replacing the integral over the circle. It is the engine of the inverse-transform proof below (9.29): there the appear as the columns of the transform matrix, so in the inverse sum every wrong frequency’s contribution rides on one of these vanishing pairings and cancels, while the right one survives -fold and the rescales it.
Attention now passes from the group to the polynomials we study on it. Since has exactly points, values on pin down polynomials of degree less than (5.20); the basis adapted to this situation is the Lagrange basis of §5.7, which on the group acquires a closed form it has on no generic point set.
The polynomials satisfy the Kronecker-delta conditions
they form a basis of , and they give the unique interpolant: for any data , the polynomial
is the unique element of with for all .
Each is well defined and of degree because the nodes are distinct (9.6), so the denominators with are nonzero. The delta conditions, the interpolation , and the uniqueness are 5.30 (with (4)) applied to these nodes with ; uniqueness rests, as there, on the root count: two interpolants in differ by a polynomial of degree with distinct roots, which is the zero polynomial (5.18). It remains to see that the form a basis of . They are linearly independent: if , evaluation at yields for every (8.11). Being independent vectors in the -dimensional space (9.19), they form a basis (8.17). □
The root-count step deserves a name, for it recurs: to prove two polynomials of degree equal, show they agree on all points of . We use this root-count device for the uniqueness above, for 9.24, and for Example 9.25 below.
On a generic point set the Lagrange polynomials admit no closed form simpler than the defining product. On the group they collapse to a compact expression involving the vanishing polynomial.
For with primitive root , and for each ,
In particular, dividing out one linear factor and scaling yields all Lagrange polynomials from the single polynomial .
Fix . From 9.13, , so
which is exactly the numerator of in 9.20. It remains to evaluate the denominator . Writing with , the product rule (5.38) gives , so
—the derivative at a simple root equals the product of the differences to the other roots, the computation already made for simple roots in the proof of 5.40. Concretely , so
using . Therefore
as claimed. □
The closed form renders the barycentric interpolation formula on especially clean. Writing and substituting 9.22,
Evaluating at a point thus costs one evaluation of and terms of the sum, with no per-point polynomial reconstruction. A verifier can use this formula when the values are known, as for public-input polynomials; a commitment to hidden values does not by itself permit this evaluation.
The Lagrange basis polynomials for satisfy identically.
The constant polynomial interpolates the data for all ; 9.24 is the statement . Likewise the values of on are , and, for , 9.21 gives : both sides have degree and agree on all of , so the root-count device applies. We invoke these identities constantly when rewriting monomials in the Lagrange basis.
An element of admits two natural descriptions: by its coefficients, or by its values on . Both are coordinate systems on the same -dimensional vector space, and passage between them is a linear isomorphism—the specialisation to of the evaluation isomorphism met for general nodes in 5.32.
The evaluation map on is the -linear map (8.18)
Linearity is immediate from , an instance of 5.16.
The evaluation map is a vector-space isomorphism. Its inverse is the interpolation map
That is, and .
Both maps are linear and act between spaces of the same finite dimension , so verifying one composition would suffice (a one-sided inverse makes injective, hence surjective by rank–nullity, 8.19); we check both for clarity. For , the polynomial has value at by 9.21, so . For , the polynomial is, by the uniqueness clause of 9.21, the unique degree- polynomial taking the values on —which is itself. Hence the two maps are inverse; in particular is bijective and linear, i.e. an isomorphism (8.18). □
In coordinates, is given by a matrix, which we name here because it is the bridge to the Fourier transform. The notation is worth fixing once, since §8 did not need it: an matrix over is a doubly indexed family of elements of , acting on a vector by —the general form, written out through the standard basis (Example 8.15), of a linear map . The product of two matrices is defined so that , which forces ; the identity matrix , with entries , acts as the identity map; and is invertible if some matrix satisfies .
Let have coefficient vector . Then has -th entry . Thus, relative to the monomial basis on and the standard basis on , the Vandermonde matrix
—rows indexed by the evaluation point , columns by the power —represents , so that . We call the (discrete Fourier) transform matrix on .
The matrix of 9.28 is invertible, with
Equivalently, , where is the transform matrix built from (itself a primitive -th root of unity). Consequently the coefficient and value representations are related by the mutually inverse formulas
First note that has order by Corollary 3.23 (with ), so is again a matrix of the shape in 9.28. We show . The entry of is
By 9.16 this sum is if and otherwise; for we have . Hence , and the same computation with the roles of the two factors exchanged gives . Since in (9.13), we may divide by : . The component formulas write out the matrix identities and . □
9.27 and 9.29 are two faces of one statement. The abstract face: evaluation on is an isomorphism whose inverse is Lagrange interpolation. The concrete face: that isomorphism is the matrix , and its inverse is, up to the scalar , the same matrix with replaced by . The near-symmetry between a transform and its inverse—differing only by the substitution and a scale —is the algebraic reason the fast inverse transform of 9.37 costs exactly as much as the forward one.
The map , read as the matrix , is the discrete Fourier transform, but over a finite field rather than over . Because it involves no analytic structure—no complex exponentials, no convergence—it is called the number-theoretic transform.
Let be a primitive -th root of unity in . The number-theoretic transform (NTT) sends the coefficient vector of a polynomial to its value vector on : it is the evaluation map written in coordinates. Explicitly, the NTT of is with
each entry being the value at of the polynomial with coefficients . The inverse number-theoretic transform is interpolation—the recovery of the coefficients from the values—and by 9.29 it too is a single explicit sum:
The NTT enjoys the same convolution property as the classical DFT, and this is the mechanism underlying fast polynomial multiplication. Recall that the coefficients of a product are a convolution: with and , the coefficient of in is (5.3). The cyclic variant folds indices modulo : for , the cyclic convolution has entries
For with , let be their product (of degree ). Then for every ,
i.e. pointwise multiplication of value vectors corresponds to polynomial multiplication. Equivalently, writing for the coefficient vectors of (padded with zeros up to length ),
so the NTT turns convolution into entrywise multiplication.
The first identity is the statement that evaluation at is a ring homomorphism (5.16): . Since , interpolation recovers the product from its values on the -point set (9.21), so the entrywise product of the value vectors uniquely determines .
For the convolution statement the plan is: (i) multiplication in is cyclic convolution of coefficient vectors; (ii) evaluation on is a ring isomorphism from that quotient onto with entrywise operations; (iii) the degree bound rules out wrap-around, so the cyclic product is the genuine one. For (i), work in the quotient ring (4.19 and 4.20, applied to the ideal of multiples of , 4.17). Every class has a unique representative of degree , by division with remainder (5.12); and multiplying two such representatives and reducing replaces each with by , since . The coefficient of in the reduced product of the representatives with coefficient vectors and is therefore : multiplication in is cyclic convolution of coefficient vectors.
Now consider the map from to , where is a commutative ring under entrywise addition and multiplication (the ring laws hold in each coordinate because they hold in ), with multiplicative identity . The map is well defined: two representatives of a class differ by a multiple of , which vanishes on (9.13). It is a ring homomorphism (4.21), because evaluation at each point of is one (5.16) and the operations on are entrywise. And it is bijective: classes correspond to their degree- representatives, on which is a bijection by 9.27. Hence it is a ring isomorphism , and it sends the product of the classes of and —coefficient vector —to the entrywise product of and . This is the displayed identity. Finally, when , the genuine product already has degree , so no folding occurs, the cyclic and ordinary products coincide, and the statement computes itself. □
9.32 reduces multiplying two degree- polynomials—a quadratic-cost operation by the schoolbook method—to: transform both (NTT), multiply the value vectors entrywise ( multiplications), and transform back (inverse NTT). If the NTT runs in operations, the whole multiplication costs . The fast Fourier transform supplies that conditional.
In , the element has , so it is a primitive -th root of unity with domain . To multiply and , pad both coefficient vectors to length and transform: and , the values of and of on . Multiplying entrywise gives , the values of on , and the inverse transform returns : the coefficients of , agreeing with the schoolbook product. At nothing is saved; the point is the shape of the pipeline, which becomes decisive once the transforms themselves cost (§9.7).
Computing directly from 9.28 costs field multiplications: each of the outputs is a sum of products. The fast Fourier transform (FFT)—here a number-theoretic FFT—computes the same vector in operations by a divide-and-conquer recursion, provided is a power of two (or, more generally, smooth). This is where the requirement that have smooth order, 9.10, becomes indispensable.
Suppose and is a primitive -th root of unity in . Given , split its coefficients by parity into
so that . Then is a primitive -th root of unity, and for ,
| (7) | ||||
| (8) |
Thus the length- NTT of reduces to two length- NTTs (of the even and odd coefficient subsequences, over the domain ) plus extra operations.
The half-domain trick just used— whenever , so the second half of the outputs differs from the first only by a sign on the odd part—recurs in every radix-2 argument over an evaluation domain; it is worth remembering alongside the theorem.
Equations (7)–(8) constitute the butterfly: from the two subtransform outputs and one forms the twiddle and reads off the two outputs and . Pictorially, and sit as two nodes on the left; each is carried to both outputs on the right, the two -edges with weight and the two -edges with weights and ; the pair of crossing edges forms the that names the operation. Each butterfly costs one multiplication (the twiddle) and two additions, and there are of them per level.
The recursion is exactly 9.35: a length- transform calls two length- transforms (on the even and odd coefficient subsequences) and combines them with butterflies of operations each, for the overhead. Unrolling, with ,
Divide by and set : then , so , and . With this is . (Equivalently: the recursion tree has levels, each performing total work across all subproblems at that level.) The inverse-transform claim is 9.29: the inverse is the same Cooley–Tukey recursion with in place of (also a primitive -th root of unity), plus a final pass of divisions by , all within . □
The hypothesis that enables fast transforms is that be smooth—a product of small primes—and, crucially, that the field actually contain a primitive -th root of unity, i.e. (9.7). A power-of-two dividing is the optimal case: pure radix-2 with the cleanest butterfly.
Take with primitive -th root (so and , and is the primitive nd root). For , the two length- subtransforms over the domain —each itself a single butterfly, with twiddle —are
and the butterflies give
(Note the output indexing: outputs and pair up, per (7)–(8).) This uses subtransforms of additions each plus butterflies of additions each ( per level, 9.36)—together twiddle multiplications and additions—versus coefficient-products and additions for the direct matrix multiply; and the gap widens as grows.
This section closes by assembling the pieces into the reason these domains form the substrate of Halo 2 and Orchard. A proof system of the polynomial type encodes a computation as a system of polynomial identities and convinces a verifier that those identities hold. The evaluation domain is where the encoding lives—the -step table of the section’s opening is laid out on the points of —and every property proved above is load-bearing.
Witnesses as evaluations on . A prover lays out the trace of a computation as the values of one or more polynomials on the points of . By 9.27 this is the same data as a polynomial of degree ; the prover may move freely between the value (Lagrange) representation, natural for stating constraints row by row, and the coefficient representation, natural for committing and for low-degree testing. The change of representation is the (inverse) NTT.
Constraints as divisibility by . “Constraint polynomial holds on every row” means vanishes on all of , which by 9.13 means exactly that divides . The prover demonstrates this by exhibiting a quotient with . The inexpensive closed form —one exponentiation to evaluate—is what makes this check cheap at a random point. 9.14 extends the same technique to cosets , used to separate quotient and remainder domains.
Lagrange selectors. The Lagrange polynomials of 9.20 are selectors: is on row and elsewhere (9.21), so boundary and instance constraints (e.g. “the first row equals the public input”) become . The closed form and the barycentric formula (9.22, 9.23) let the verifier evaluate these at a random challenge in or even field operations rather than reconstructing polynomials.
Group structure for permutations and shifts. Because is a cyclic group (9.11), multiplication by is the cyclic “next-row” shift . Constraints relating a row to its neighbour become versus ; permutation arguments—the heart of Halo 2’s copy constraints—rest on the action of the group on itself and on its cosets. An arbitrary set of points offers none of this.
Smoothness for speed. Provers manipulate polynomials of size (often after blowing the domain up by a small constant factor for low-degree testing). Every transform between representations, every multiplication, every coset evaluation is an NTT. By 9.37 these cost instead of —the difference between feasible and infeasible at the sizes used in practice—provided is smooth and contains a primitive -th root of unity. By 9.7 that requires ; by 9.10 this is why high-two-adicity primes are chosen for the scalar fields of the Pallas and Vesta curves (10).
In summary: the existence condition (9.7) supplies the group ; the group supplies the clean vanishing polynomial (9.13), the closed-form Lagrange basis (9.22), and the evaluation/interpolation isomorphism (9.27); and smoothness of supplies the FFT (9.37). Together these discharge both demands of the section’s opening—a structured point set on which an execution trace can live, and multiplication and interpolation on it—and they are exactly the ingredients a polynomial proof system requires, which is why such systems rest on smooth multiplicative evaluation domains and on the fields that contain them.