20 const std::shared_ptr<Transcript>& transcript)
21 : transcript(transcript)
26 size_t max_dyadic_size =
std::max(accumulator_claim->dyadic_size, instance_claim->dyadic_size);
27 polynomials.w_non_shifted_accumulator = accumulator_claim->non_shifted_polynomial;
28 polynomials.w_shifted_accumulator = accumulator_claim->shifted_polynomial.shifted();
29 polynomials.w_non_shifted_instance = instance_claim->non_shifted_polynomial;
30 polynomials.w_shifted_instance = instance_claim->shifted_polynomial.shifted();
31 polynomials.w_evaluations_accumulator =
33 polynomials.w_evaluations_instance =
36 polynomials.increase_polynomials_virtual_size(virtual_circuit_size);
37 std::vector<FF> accumulator_evaluations = { accumulator_claim->non_shifted_evaluation,
38 accumulator_claim->shifted_evaluation };
39 std::vector<FF> instance_evaluations = { instance_claim->non_shifted_evaluation,
40 instance_claim->shifted_evaluation };
42 accumulator_claim->challenge,
43 instance_claim->challenge,
44 accumulator_evaluations,
46 accumulator_claim->non_shifted_commitment,
47 accumulator_claim->shifted_commitment,
48 instance_claim->non_shifted_commitment,
49 instance_claim->shifted_commitment,
50 accumulator_claim->shifted_polynomial,
51 instance_claim->shifted_polynomial);
52 key->proving_key->circuit_size = max_dyadic_size;
91 const FF alpha =
transcript->template get_challenge<FF>(
"Sumcheck:alpha");
94 for (
size_t idx = 0; idx < gate_challenges.size(); idx++) {
95 gate_challenges[idx] =
FF(1);
98 const size_t circuit_size =
key->proving_key->circuit_size;
100 Sumcheck sumcheck(circuit_size,
101 key->proving_key->polynomials,
107 key->proving_key->accumulator_challenge,
108 key->proving_key->instance_challenge);
116 auto claim_batching_challenge =
transcript->get_challenge<
FF>(
"claim_batching_challenge");
117 auto new_non_shifted_polynomial =
Polynomial(
key->proving_key->circuit_size);
118 new_non_shifted_polynomial +=
key->proving_key->polynomials.w_non_shifted_accumulator;
119 new_non_shifted_polynomial.add_scaled(
key->proving_key->polynomials.w_non_shifted_instance,
120 claim_batching_challenge);
121 auto new_shifted_polynomial = Polynomial::shiftable(
key->proving_key->circuit_size);
122 new_shifted_polynomial +=
key->preshifted_accumulator;
123 new_shifted_polynomial.add_scaled(
key->preshifted_instance, claim_batching_challenge);
124 auto new_non_shifted_commitment =
125 key->non_shifted_accumulator_commitment +
key->non_shifted_instance_commitment * claim_batching_challenge;
126 auto new_shifted_commitment =
127 key->shifted_accumulator_commitment +
key->shifted_instance_commitment * claim_batching_challenge;
135 sumcheck_output.claimed_evaluations.w_non_shifted_instance * claim_batching_challenge;
137 sumcheck_output.claimed_evaluations.w_shifted_instance * claim_batching_challenge;
static Polynomial< FF > construct(std::span< const FF > challenges, size_t log_num_monomials)
Construct eq(X, r) coefficient table over Boolean hypercube {0,1}^d.