Compute contribution of the goblin translator permutation relation for a given edge (internal function)
There are 2 relations associated with enforcing the set permutation relation This file handles the relation that confirms faithful calculation of the grand product polynomial Z_perm.
C(in(X)...) = ( z_perm(X) + lagrange_first(X) )*P(X)
- ( z_perm_shift(X) + lagrange_last(X))*Q(X), where P(X) = Prod_{i=0:4} (numerator_polynomial_i(X) + lagrange_masking * β + γ) Q(X) = Prod_{i=0:4} (ordered_range_constraint_i(X) + lagrange_masking * β + γ) the first 4 numerator polynomials are interleaved range constraint polynomials and the last one is the constant extra numerator
If operating in zero-knowledge, we mark the positions (via the lagrange_masking polynomial) that should contain masking values, expected to be at the same indices both for the ordered and interleaved polynomials. The lagrange_masking * β term ensures that masking positions contribute unique values to the grand product, preventing information leakage about the underlying witness values at those positions.
- Parameters
-
| evals | transformed to evals + C(in(X)...)*scaling_factor |
| in | an std::array containing the fully extended Univariate edges. |
| parameters | contains beta, gamma, and public_input_delta, .... |
| scaling_factor | optional term to scale the evaluation before adding to evals. |
There are 2 relations associated with enforcing the set permutation relation This file handles the relation that confirms faithful calculation of the grand product polynomial Z_perm.
C(in(X)...) = ( z_perm(X) + lagrange_first(X) )*P(X)
- ( z_perm_shift(X) + lagrange_last(X))*Q(X), where P(X) = Prod_{i=0:4} (numerator_polynomial_i(X) + lagrange_masking * β + γ) Q(X) = Prod_{i=0:4} (ordered_range_constraint_i(X) + lagrange_masking * β + γ) the first 4 numerator polynomials are interleaved range constraint polynomials and the last one is the constant extra numerator
If operating in zero-knowledge, we mark the positions (via the lagrange_masking polynomial) that contain random values. Since the masking values in four interleaved polynomials are distributed across five ordered polynomials, we need to ensure that the values are consistent between the interleaved and ordered sets (even if they are at different indices).
- Parameters
-
| evals | transformed to evals + C(in(X)...)*scaling_factor |
| in | an std::array containing the fully extended Univariate edges. |
| parameters | contains beta, gamma, and public_input_delta, .... |
| scaling_factor | optional term to scale the evaluation before adding to evals. |
Definition at line 40 of file translator_permutation_relation_impl.hpp.