16 bool disable_fixed_dyadic_trace_size
22 const FF beta_sqr = beta.
sqr();
23 const FF beta_cube = beta_sqr * beta;
24 const FF beta_quartic = beta_sqr * beta_sqr;
25 auto first_term_tag = beta_quartic;
26 auto eccvm_set_permutation_delta = (gamma + first_term_tag) * (gamma + beta_sqr + first_term_tag) *
27 (gamma + beta_sqr + beta_sqr + first_term_tag) *
28 (gamma + beta_sqr + beta_sqr + beta_sqr + first_term_tag);
29 eccvm_set_permutation_delta = eccvm_set_permutation_delta.
invert();
34 .public_input_delta = 0,
36 .beta_cube = beta_cube,
37 .beta_quartic = beta_quartic,
38 .eccvm_set_permutation_delta = eccvm_set_permutation_delta,
46 const size_t num_rows = polynomials.get_polynomial_size();
47 const size_t unmasked_witness_size = num_rows - NUM_DISABLED_ROWS_IN_SUMCHECK;
48 compute_logderivative_inverse<FF, ECCVMLookupRelation<FF>>(polynomials, params, unmasked_witness_size);
49 compute_grand_product<Flavor, ECCVMSetRelation<FF>>(polynomials, params, unmasked_witness_size);
51 polynomials.z_perm_shift =
Polynomial(polynomials.z_perm.shifted());
53 const auto evaluate_relation = [&]<
typename Relation>(
const std::string& relation_name) {
55 for (
auto& r : result) {
58 constexpr size_t NUM_SUBRELATIONS = result.size();
60 for (
size_t i = 0; i < num_rows; ++i) {
61 auto row = polynomials.get_row(i);
66 if (!Relation::skip(row)) {
67 Relation::accumulate(result, row, params, 1);
71 Relation::accumulate(result, row, params, 1);
75 Relation::accumulate(result, row, params, 1);
79 for (
size_t j = 0; j < NUM_SUBRELATIONS; ++j) {
81 info(
"Relation ", relation_name,
", subrelation index ", j,
" failed at row ", i);
96 result = result && evaluate_relation.template operator()<
ECCVMMSMRelation<FF>>(
"ECCVMMSMRelation");
97 result = result && evaluate_relation.template operator()<
ECCVMSetRelation<FF>>(
"ECCVMSetRelation");
102 for (
auto& r : lookup_result) {
105 for (
size_t i = 0; i < num_rows; ++i) {
106 LookupRelation::accumulate(lookup_result, polynomials.get_row(i), params, 1);
108 for (
auto r : lookup_result) {
110 info(
"Relation ECCVMLookupRelation failed.");