Appearance
The recursive function z
Now that we have both the numerator and denominator functions, and the partial accumulators we can proceed to spell out the interactive protocol that allows the (potentially malicious) prover to prove that the permutation holds over the three columns
Moreover, the base case is
We can develop a succinct argument using polynomials by following these steps:
- We assume the prover has already commited to
. - The verifier challenges the prover with random
and . - The prover interpolates
over by computing each of the points for . - The prover interpolates polynomials
and corresponding to the and functions. - The prover computes the quotient polynomial
for the polynomial and commits to it. - The verifier checks the following two properties
It is interesting to note that in the multiplicative domain,
Exercise 17
Compute a function that receives as parameters the three polynomials
python
def interpolate_z_N_D(a,b,c, beta, gamma, Ω):
#TBD
return z,N,D
z,N,D = interpolate_z_N_D(a,b,c,42,42,Ω)
If computed correctly, the interpolated functions should pass the
python
L1 = prod((x - ω**m)//(ω - ω**m) for m in range(2,n+1))
L1=R(L1)
ZH = R(x^n-1)
(ZH).divides(L1*(z-1))
Moreover it should pass the following check, which proves the recursive constraint.
python
(ZH).divides( z*N -D*z(x*ω))
The polynomial
python
show(z*N -D*z(x*ω))