16 bool disable_fixed_dyadic_trace_size
22 const FF beta_sqr = beta.
sqr();
23 const FF beta_cube = beta_sqr * beta;
24 auto eccvm_set_permutation_delta =
25 gamma * (gamma + beta_sqr) * (gamma + beta_sqr + beta_sqr) * (gamma + beta_sqr + beta_sqr + beta_sqr);
26 eccvm_set_permutation_delta = eccvm_set_permutation_delta.
invert();
31 .public_input_delta = 0,
33 .beta_cube = beta_cube,
34 .eccvm_set_permutation_delta = eccvm_set_permutation_delta,
42 const size_t num_rows = polynomials.get_polynomial_size();
43 const size_t unmasked_witness_size = num_rows - NUM_DISABLED_ROWS_IN_SUMCHECK;
44 compute_logderivative_inverse<FF, ECCVMLookupRelation<FF>>(polynomials, params, unmasked_witness_size);
45 compute_grand_product<Flavor, ECCVMSetRelation<FF>>(polynomials, params, unmasked_witness_size);
47 polynomials.z_perm_shift =
Polynomial(polynomials.z_perm.shifted());
49 const auto evaluate_relation = [&]<
typename Relation>(
const std::string& relation_name) {
51 for (
auto& r : result) {
54 constexpr size_t NUM_SUBRELATIONS = result.size();
56 for (
size_t i = 0; i < num_rows; ++i) {
57 auto row = polynomials.get_row(i);
62 if (!Relation::skip(row)) {
63 Relation::accumulate(result, row, params, 1);
67 Relation::accumulate(result, row, params, 1);
71 Relation::accumulate(result, row, params, 1);
75 for (
size_t j = 0; j < NUM_SUBRELATIONS; ++j) {
77 info(
"Relation ", relation_name,
", subrelation index ", j,
" failed at row ", i);
92 result = result && evaluate_relation.template operator()<
ECCVMMSMRelation<FF>>(
"ECCVMMSMRelation");
93 result = result && evaluate_relation.template operator()<
ECCVMSetRelation<FF>>(
"ECCVMSetRelation");
98 for (
auto& r : lookup_result) {
101 for (
size_t i = 0; i < num_rows; ++i) {
102 LookupRelation::accumulate(lookup_result, polynomials.get_row(i), params, 1);
104 for (
auto r : lookup_result) {
106 info(
"Relation ECCVMLookupRelation failed.");