54 static constexpr bool HasZK =
true;
115 "Translator circuit is too small for defined number of steps "
116 "(TranslatorDeltaRangeConstraintRelation). ");
128 template <
typename FF>
150 "LIBRA_UNIVARIATES_LENGTH must be equal to Translator::BATCHED_RELATION_PARTIAL_LENGTH");
153 static constexpr size_t num_frs_comm = FrCodec::calc_num_fields<Commitment>();
154 static constexpr size_t num_frs_fr = FrCodec::calc_num_fields<FF>();
155 static constexpr size_t num_frs_fq = FrCodec::calc_num_fields<BF>();
166 ordered_extra_range_constraints_numerator,
169 lagrange_odd_in_minicircuit,
170 lagrange_even_in_minicircuit,
172 lagrange_last_in_minicircuit,
174 lagrange_mini_masking,
176 lagrange_ordered_masking);
182 concatenated_range_constraints_0,
183 concatenated_range_constraints_1,
184 concatenated_range_constraints_2,
185 concatenated_range_constraints_3,
186 concatenated_non_range)
200 accumulators_binary_limbs_0,
201 accumulators_binary_limbs_1,
202 accumulators_binary_limbs_2,
203 accumulators_binary_limbs_3,
204 quotient_low_binary_limbs,
205 quotient_high_binary_limbs,
215 p_x_low_limbs_range_constraint_0,
216 p_x_low_limbs_range_constraint_1,
217 p_x_low_limbs_range_constraint_2,
218 p_x_low_limbs_range_constraint_3,
219 p_x_low_limbs_range_constraint_4,
220 p_x_low_limbs_range_constraint_tail,
221 p_x_high_limbs_range_constraint_0,
222 p_x_high_limbs_range_constraint_1,
223 p_x_high_limbs_range_constraint_2,
224 p_x_high_limbs_range_constraint_3,
225 p_x_high_limbs_range_constraint_4,
226 p_x_high_limbs_range_constraint_tail,
227 p_y_low_limbs_range_constraint_0,
228 p_y_low_limbs_range_constraint_1,
229 p_y_low_limbs_range_constraint_2,
230 p_y_low_limbs_range_constraint_3,
231 p_y_low_limbs_range_constraint_4,
232 p_y_low_limbs_range_constraint_tail,
233 p_y_high_limbs_range_constraint_0,
234 p_y_high_limbs_range_constraint_1,
235 p_y_high_limbs_range_constraint_2,
236 p_y_high_limbs_range_constraint_3,
237 p_y_high_limbs_range_constraint_4,
238 p_y_high_limbs_range_constraint_tail,
239 z_low_limbs_range_constraint_0,
240 z_low_limbs_range_constraint_1,
241 z_low_limbs_range_constraint_2,
242 z_low_limbs_range_constraint_3,
243 z_low_limbs_range_constraint_4,
244 z_low_limbs_range_constraint_tail,
245 z_high_limbs_range_constraint_0,
246 z_high_limbs_range_constraint_1,
247 z_high_limbs_range_constraint_2,
248 z_high_limbs_range_constraint_3,
249 z_high_limbs_range_constraint_4,
250 z_high_limbs_range_constraint_tail,
251 accumulator_low_limbs_range_constraint_0,
252 accumulator_low_limbs_range_constraint_1,
253 accumulator_low_limbs_range_constraint_2,
254 accumulator_low_limbs_range_constraint_3,
255 accumulator_low_limbs_range_constraint_4,
256 accumulator_low_limbs_range_constraint_tail,
257 accumulator_high_limbs_range_constraint_0,
258 accumulator_high_limbs_range_constraint_1,
259 accumulator_high_limbs_range_constraint_2,
260 accumulator_high_limbs_range_constraint_3,
261 accumulator_high_limbs_range_constraint_4,
262 accumulator_high_limbs_range_constraint_tail,
263 quotient_low_limbs_range_constraint_0,
264 quotient_low_limbs_range_constraint_1,
265 quotient_low_limbs_range_constraint_2,
266 quotient_low_limbs_range_constraint_3,
267 quotient_low_limbs_range_constraint_4,
268 quotient_low_limbs_range_constraint_tail,
269 quotient_high_limbs_range_constraint_0,
270 quotient_high_limbs_range_constraint_1,
271 quotient_high_limbs_range_constraint_2,
272 quotient_high_limbs_range_constraint_3,
273 quotient_high_limbs_range_constraint_4,
274 quotient_high_limbs_range_constraint_tail,
275 relation_wide_limbs_range_constraint_0,
276 relation_wide_limbs_range_constraint_1,
277 relation_wide_limbs_range_constraint_2,
278 relation_wide_limbs_range_constraint_3);
284 template <
typename DataType>
305 template <
typename DataType>
317 ordered_range_constraints_0,
318 ordered_range_constraints_1,
319 ordered_range_constraints_2,
320 ordered_range_constraints_3,
321 ordered_range_constraints_4);
350 template <
typename DataType>
406 static DataType zero_value = DataType(0);
407 return partition_minicircuit_wires_into_groups<DataType>(
430 p_x_high_limbs_shift,
432 p_y_high_limbs_shift,
435 accumulators_binary_limbs_0_shift,
436 accumulators_binary_limbs_1_shift,
437 accumulators_binary_limbs_2_shift,
438 accumulators_binary_limbs_3_shift,
439 quotient_low_binary_limbs_shift,
440 quotient_high_binary_limbs_shift,
441 relation_wide_limbs_shift,
442 p_x_low_limbs_range_constraint_0_shift,
443 p_x_low_limbs_range_constraint_1_shift,
444 p_x_low_limbs_range_constraint_2_shift,
445 p_x_low_limbs_range_constraint_3_shift,
446 p_x_low_limbs_range_constraint_4_shift,
447 p_x_low_limbs_range_constraint_tail_shift,
448 p_x_high_limbs_range_constraint_0_shift,
449 p_x_high_limbs_range_constraint_1_shift,
450 p_x_high_limbs_range_constraint_2_shift,
451 p_x_high_limbs_range_constraint_3_shift,
452 p_x_high_limbs_range_constraint_4_shift,
453 p_x_high_limbs_range_constraint_tail_shift,
454 p_y_low_limbs_range_constraint_0_shift,
455 p_y_low_limbs_range_constraint_1_shift,
456 p_y_low_limbs_range_constraint_2_shift,
457 p_y_low_limbs_range_constraint_3_shift,
458 p_y_low_limbs_range_constraint_4_shift,
459 p_y_low_limbs_range_constraint_tail_shift,
460 p_y_high_limbs_range_constraint_0_shift,
461 p_y_high_limbs_range_constraint_1_shift,
462 p_y_high_limbs_range_constraint_2_shift,
463 p_y_high_limbs_range_constraint_3_shift,
464 p_y_high_limbs_range_constraint_4_shift,
465 p_y_high_limbs_range_constraint_tail_shift,
466 z_low_limbs_range_constraint_0_shift,
467 z_low_limbs_range_constraint_1_shift,
468 z_low_limbs_range_constraint_2_shift,
469 z_low_limbs_range_constraint_3_shift,
470 z_low_limbs_range_constraint_4_shift,
471 z_low_limbs_range_constraint_tail_shift,
472 z_high_limbs_range_constraint_0_shift,
473 z_high_limbs_range_constraint_1_shift,
474 z_high_limbs_range_constraint_2_shift,
475 z_high_limbs_range_constraint_3_shift,
476 z_high_limbs_range_constraint_4_shift,
477 z_high_limbs_range_constraint_tail_shift,
478 accumulator_low_limbs_range_constraint_0_shift,
479 accumulator_low_limbs_range_constraint_1_shift,
480 accumulator_low_limbs_range_constraint_2_shift,
481 accumulator_low_limbs_range_constraint_3_shift,
482 accumulator_low_limbs_range_constraint_4_shift,
483 accumulator_low_limbs_range_constraint_tail_shift,
484 accumulator_high_limbs_range_constraint_0_shift,
485 accumulator_high_limbs_range_constraint_1_shift,
486 accumulator_high_limbs_range_constraint_2_shift,
487 accumulator_high_limbs_range_constraint_3_shift,
488 accumulator_high_limbs_range_constraint_4_shift,
489 accumulator_high_limbs_range_constraint_tail_shift,
490 quotient_low_limbs_range_constraint_0_shift,
491 quotient_low_limbs_range_constraint_1_shift,
492 quotient_low_limbs_range_constraint_2_shift,
493 quotient_low_limbs_range_constraint_3_shift,
494 quotient_low_limbs_range_constraint_4_shift,
495 quotient_low_limbs_range_constraint_tail_shift,
496 quotient_high_limbs_range_constraint_0_shift,
497 quotient_high_limbs_range_constraint_1_shift,
498 quotient_high_limbs_range_constraint_2_shift,
499 quotient_high_limbs_range_constraint_3_shift,
500 quotient_high_limbs_range_constraint_4_shift,
501 quotient_high_limbs_range_constraint_tail_shift,
502 relation_wide_limbs_range_constraint_0_shift,
503 relation_wide_limbs_range_constraint_1_shift,
504 relation_wide_limbs_range_constraint_2_shift,
505 relation_wide_limbs_range_constraint_3_shift)
514 ordered_range_constraints_0_shift,
515 ordered_range_constraints_1_shift,
516 ordered_range_constraints_2_shift,
517 ordered_range_constraints_3_shift,
518 ordered_range_constraints_4_shift,
525 template <
typename DataType>
538 auto get_pcs_shifted()
550 static DataType zero_value = DataType(0);
573 template <
typename DataType>
655 std::ios_base::fmtflags f(os.flags());
656 auto entities =
a.get_all();
657 for (
size_t i = 0; i < entities.size() - 1; i++) {
658 os <<
"e[" <<
std::setw(2) << i <<
"] = " << (entities[i]) <<
",\n";
660 os <<
"e[" <<
std::setw(2) << (entities.size() - 1) <<
"] = " << entities[entities.size() - 1] <<
" }";
706 "Shifted minicircuit wires must match unshifted");
719 "Range constraint wires must fill exactly 4 concatenation groups");
784 template <
typename DataType,
typename WireRefs>
786 DataType& zero_value)
795 for (
size_t g = 0; g < num_range_groups; g++) {
804 for (
size_t j = 0; j < num_non_range; j++) {
805 group.push_back(wire_refs[j]);
808 group.push_back(zero_value);
817 template <
typename FFType>
828 template <
typename PolyContainer>
833 for (
auto& wire : polys.get_minicircuit_wires()) {
834 result[dst++] = wire[0];
836 for (
auto& wire : polys.get_minicircuit_wires_shifted()) {
837 result[dst++] = wire[0];
847 template <
typename FFType>
868 template <
typename FFType>
875 FFType l0 = FFType(1);
895 template <
typename FFType>
908 concat_refs[g] = concat_evals[g];
924 template <
typename FFType>
939 lagrange_basis[j] = FFType(1);
940 for (
size_t bit = 0; bit < NUM_TOP_BITS; bit++) {
942 lagrange_basis[j] *= ((j >> bit) & 1) ? u : (FFType(1) - u);
949 FFType padding_inv = lagrange_basis[0].invert();
951 auto reconstruct = [&](
const auto&
group) -> FFType {
952 FFType result = FFType(0);
954 result += lagrange_basis[j] *
group[j];
956 return result * padding_inv;
961 result[g] = reconstruct(groups[g]);
969 template <
typename FFType>
975 result[dst++] = entity;
983 template <
typename FFType>
989 entity = full_circuit[src++];
1007 ordered_range_constraint =
Polynomial{ circuit_size - 1,
1027 if (poly.is_empty()) {
1036 if (poly.is_empty()) {
1045 lagrange_first =
Polynomial{ 1, circuit_size };
1053 lagrange_last_in_minicircuit =
Polynomial{ 1,
1061 lagrange_masking =
Polynomial{ circuit_size, circuit_size };
1075 ordered_extra_range_constraints_numerator =
1095 for (
auto [result_field, polynomial] :
zip_view(result.get_all(), this->get_all())) {
1098 if (row_idx >= polynomial.start_index() && row_idx < polynomial.end_index()) {
1099 result_field = polynomial[row_idx];
1101 result_field =
FF(0);
1111 shifted = to_be_shifted.shifted();
1177 this->concatenated_range_constraints_0 =
"CONCATENATED_RANGE_CONSTRAINTS_0";
1178 this->concatenated_range_constraints_1 =
"CONCATENATED_RANGE_CONSTRAINTS_1";
1179 this->concatenated_range_constraints_2 =
"CONCATENATED_RANGE_CONSTRAINTS_2";
1180 this->concatenated_range_constraints_3 =
"CONCATENATED_RANGE_CONSTRAINTS_3";
1181 this->concatenated_non_range =
"CONCATENATED_NON_RANGE";
1184 this->ordered_range_constraints_0 =
"ORDERED_RANGE_CONSTRAINTS_0";
1185 this->ordered_range_constraints_1 =
"ORDERED_RANGE_CONSTRAINTS_1";
1186 this->ordered_range_constraints_2 =
"ORDERED_RANGE_CONSTRAINTS_2";
1187 this->ordered_range_constraints_3 =
"ORDERED_RANGE_CONSTRAINTS_3";
1188 this->ordered_range_constraints_4 =
"ORDERED_RANGE_CONSTRAINTS_4";
1191 this->z_perm =
"Z_PERM";
1195 template <
typename Commitment,
typename VerificationKey>
1202 this->ordered_extra_range_constraints_numerator =
1203 verification_key->ordered_extra_range_constraints_numerator;
1214 template <
typename ProverPolynomialsOrPartiallyEvaluatedMultivariates,
typename EdgeType>
1215 static bool skip_entire_row([[maybe_unused]]
const ProverPolynomialsOrPartiallyEvaluatedMultivariates& polynomials,
1216 [[maybe_unused]]
const EdgeType edge_idx)
1218 auto s0 = polynomials.ordered_range_constraints_0_shift[edge_idx];
1219 auto s1 = polynomials.ordered_range_constraints_1_shift[edge_idx];
1220 auto s2 = polynomials.ordered_range_constraints_2_shift[edge_idx];
1221 auto s3 = polynomials.ordered_range_constraints_3_shift[edge_idx];
1222 auto s4 = polynomials.ordered_range_constraints_4_shift[edge_idx];
1223 auto s5 = polynomials.ordered_range_constraints_0_shift[edge_idx + 1];
1224 auto s6 = polynomials.ordered_range_constraints_1_shift[edge_idx + 1];
1225 auto s7 = polynomials.ordered_range_constraints_2_shift[edge_idx + 1];
1226 auto s8 = polynomials.ordered_range_constraints_3_shift[edge_idx + 1];
1227 auto s9 = polynomials.ordered_range_constraints_4_shift[edge_idx + 1];
1228 auto shift_0 = (s0 == 0) && (s1 == 0) && (s2 == 0) && (s3 == 0) && (s4 == 0) && (s5 == 0) && (s6 == 0) &&
1229 (s7 == 0) && (s8 == 0) && (s9 == 0);
1230 return shift_0 && (polynomials.z_perm[edge_idx] == polynomials.z_perm_shift[edge_idx]) &&
1231 (polynomials.z_perm[edge_idx + 1] == polynomials.z_perm_shift[edge_idx + 1]) &&
1232 polynomials.lagrange_last[edge_idx] == 0 && polynomials.lagrange_last[edge_idx + 1] == 0;
Common transcript class for both parties. Stores the data for the current round, as well as the manif...
CommitmentKey object over a pairing group 𝔾₁.
Simple verification key class for fixed-size circuits (ECCVM, Translator, AVM).
A container for storing the partially evaluated multivariates produced by sumcheck.
A template class for a reference array. Behaves as if std::array<T&, N> was possible.
A template class for a reference vector. Behaves as if std::vector<T&> was possible.
A wrapper for Relations to expose methods used by the Sumcheck prover or verifier to add the contribu...
TranslatorCircuitBuilder creates a circuit that evaluates the correctness of the evaluation of EccOpQ...
static constexpr size_t NUM_RANDOM_OPS_END
static constexpr size_t MICRO_LIMB_BITS
static constexpr size_t NUM_WIRES
static constexpr size_t NUM_LIMB_BITS
static constexpr size_t RESULT_ROW
static constexpr size_t NUM_NO_OPS_START
A base class labelling all entities (for instance, all of the polynomials used by the prover during s...
DEFINE_COMPOUND_GET_ALL(MaskingEntities< DataType >, PrecomputedEntities< DataType >, WitnessEntities< DataType >, ShiftedEntities< DataType >) auto get_concatenated()
Getter for concatenated polynomials.
friend std::ostream & operator<<(std::ostream &os, const AllEntities &a)
auto get_pcs_unshifted()
All unshifted polynomials for PCS (excludes computable precomputed, includes concatenated).
auto get_full_circuit_entities()
Full-circuit entities sent in the proof (excludes computable precomputed, minicircuit wires,...
auto get_pcs_to_be_shifted()
All to-be-shifted polynomials for PCS (base to-be-shifted + concatenated).
auto get_ordered_range_constraints()
Getter for the ordered entities used in computing the denominator of the grand product in the permuta...
auto get_minicircuit_wires()
The 77 minicircuit wires (unshifted): NonRangeMain(13) + RangeConstraint(64).
auto get_minicircuit_wires_shifted()
The 77 minicircuit wire shifts: corresponds 1:1 with get_minicircuit_wires().
A field element for each entity of the flavor. These entities represent the prover polynomials evalua...
A container for commitment labels.
Ordered range constraint + z_perm shifted entities.
DEFINE_FLAVOR_MEMBERS(DataType, z_perm)
Container for ZK entities (gemini masking polynomial for ZK-PCS)
Non-op-queue minicircuit wire shifted entities (mirrors NonOpQueueWiresToBeShiftedEntities)
All non-op-queue wires that need to be shifted (composed of non-range main + range constraint)
Non-range main wires (13 wires that go into concatenated group 4)
Op queue shifted entities (mirrors OpQueueWiresToBeShiftedEntities)
Op queue wires (non-shifted): these represent the op queue and are provided by the merge protocol.
DEFINE_FLAVOR_MEMBERS(DataType, op)
Op queue wires (to be shifted): first 3 wires of the to-be-shifted group.
DEFINE_FLAVOR_MEMBERS(DataType, ordered_range_constraints_0, ordered_range_constraints_1, ordered_range_constraints_2, ordered_range_constraints_3, ordered_range_constraints_4)
A base class labelling precomputed entities and (ordered) subsets of interest.
bool operator==(const PrecomputedEntities &other) const =default
DEFINE_FLAVOR_MEMBERS(DataType, ordered_extra_range_constraints_numerator, lagrange_first, lagrange_last, lagrange_odd_in_minicircuit, lagrange_even_in_minicircuit, lagrange_result_row, lagrange_last_in_minicircuit, lagrange_masking, lagrange_mini_masking, lagrange_real_last, lagrange_ordered_masking)
A container for the prover polynomials handles.
static size_t get_polynomial_size()
~ProverPolynomials()=default
ProverPolynomials(const ProverPolynomials &o)=delete
ProverPolynomials(ProverPolynomials &&o) noexcept=default
ProverPolynomials & operator=(const ProverPolynomials &)=delete
AllValues get_row(size_t row_idx) const
Returns the evaluations of all prover polynomials at one point on the boolean hypercube,...
ProverPolynomials()
ProverPolynomials constructor.
ProverPolynomials & operator=(ProverPolynomials &&o) noexcept=default
The proving key is responsible for storing the polynomials used by the prover.
CommitmentKey commitment_key
ProverPolynomials polynomials
Range constraint wires (64 wires that go into concatenated groups 0-3)
DEFINE_FLAVOR_MEMBERS(DataType, p_x_low_limbs_range_constraint_0, p_x_low_limbs_range_constraint_1, p_x_low_limbs_range_constraint_2, p_x_low_limbs_range_constraint_3, p_x_low_limbs_range_constraint_4, p_x_low_limbs_range_constraint_tail, p_x_high_limbs_range_constraint_0, p_x_high_limbs_range_constraint_1, p_x_high_limbs_range_constraint_2, p_x_high_limbs_range_constraint_3, p_x_high_limbs_range_constraint_4, p_x_high_limbs_range_constraint_tail, p_y_low_limbs_range_constraint_0, p_y_low_limbs_range_constraint_1, p_y_low_limbs_range_constraint_2, p_y_low_limbs_range_constraint_3, p_y_low_limbs_range_constraint_4, p_y_low_limbs_range_constraint_tail, p_y_high_limbs_range_constraint_0, p_y_high_limbs_range_constraint_1, p_y_high_limbs_range_constraint_2, p_y_high_limbs_range_constraint_3, p_y_high_limbs_range_constraint_4, p_y_high_limbs_range_constraint_tail, z_low_limbs_range_constraint_0, z_low_limbs_range_constraint_1, z_low_limbs_range_constraint_2, z_low_limbs_range_constraint_3, z_low_limbs_range_constraint_4, z_low_limbs_range_constraint_tail, z_high_limbs_range_constraint_0, z_high_limbs_range_constraint_1, z_high_limbs_range_constraint_2, z_high_limbs_range_constraint_3, z_high_limbs_range_constraint_4, z_high_limbs_range_constraint_tail, accumulator_low_limbs_range_constraint_0, accumulator_low_limbs_range_constraint_1, accumulator_low_limbs_range_constraint_2, accumulator_low_limbs_range_constraint_3, accumulator_low_limbs_range_constraint_4, accumulator_low_limbs_range_constraint_tail, accumulator_high_limbs_range_constraint_0, accumulator_high_limbs_range_constraint_1, accumulator_high_limbs_range_constraint_2, accumulator_high_limbs_range_constraint_3, accumulator_high_limbs_range_constraint_4, accumulator_high_limbs_range_constraint_tail, quotient_low_limbs_range_constraint_0, quotient_low_limbs_range_constraint_1, quotient_low_limbs_range_constraint_2, quotient_low_limbs_range_constraint_3, quotient_low_limbs_range_constraint_4, quotient_low_limbs_range_constraint_tail, quotient_high_limbs_range_constraint_0, quotient_high_limbs_range_constraint_1, quotient_high_limbs_range_constraint_2, quotient_high_limbs_range_constraint_3, quotient_high_limbs_range_constraint_4, quotient_high_limbs_range_constraint_tail, relation_wide_limbs_range_constraint_0, relation_wide_limbs_range_constraint_1, relation_wide_limbs_range_constraint_2, relation_wide_limbs_range_constraint_3)
Represents polynomials shifted by 1 or their evaluations, defined relative to WireToBeShiftedEntities...
std::vector< RefVector< DataType > > get_groups_to_be_concatenated_shifted()
Get the shifted versions of minicircuit wires organized into 5 concatenation groups.
DEFINE_COMPOUND_GET_ALL(OpQueueShiftedEntities< DataType >, NonOpQueueShiftedEntities< DataType >, DerivedShiftedEntities< DataType >) auto get_pcs_shifted()
PCS-level shifted evaluations matching get_to_be_shifted(): op_queue(3) + ordered_range(5) + z_perm(1...
The only precomputed commitment the verifier needs for PCS.
bool operator==(const VKEntities &other) const =default
DEFINE_FLAVOR_MEMBERS(DataType, ordered_extra_range_constraints_numerator)
VerifierCommitments_(const std::shared_ptr< VerificationKey > &verification_key)
All wire entities that are not shifted (currently just the op queue wire)
All wires to be shifted (op queue + non-op-queue)
Container for all witness polynomials used/constructed by the prover.
auto get_all_to_be_shifted()
All polys that need shifted views for Sumcheck (corresponds 1:1 with ShiftedEntities).
DEFINE_COMPOUND_GET_ALL(WireNonshiftedEntities< DataType >, WireToBeShiftedEntities< DataType >, OrderedRangeConstraints< DataType >, DerivedWitnessEntities< DataType >, ConcatenatedPolynomials< DataType >) auto get_wires()
Entities constructed from circuit data.
auto get_non_opqueue_wires_and_ordered_range_constraints()
Concatenated polynomials and ordered range constraints (committed to by translator prover).
std::vector< RefVector< DataType > > get_groups_to_be_concatenated()
Get all minicircuit wire polynomials that are concatenated into the 5 concatenated polys.
auto get_concatenated()
Get the concatenated polynomials.
static constexpr size_t MINI_CIRCUIT_SIZE
static constexpr size_t MICRO_LIMB_BITS
std::tuple< TranslatorPermutationRelation< FF > > GrandProductRelations
static constexpr size_t num_frs_fq
static constexpr size_t NUM_MASKING_POLYNOMIALS
static constexpr size_t MAX_RANDOM_VALUES_PER_ORDERED
static bool skip_entire_row(const ProverPolynomialsOrPartiallyEvaluatedMultivariates &polynomials, const EdgeType edge_idx)
When evaluating the sumcheck protocol - can we skip evaluation of all relations for a given row?
static std::array< FFType, NUM_FULL_CIRCUIT_EVALUATIONS > get_full_circuit_evaluations(AllEntities< FFType > &evals)
Prover: extract the full-circuit evaluations via get_full_circuit_entities().
static constexpr size_t MAX_PARTIAL_RELATION_LENGTH
static constexpr size_t NUM_ALL_ENTITIES
static constexpr size_t NUM_WIRES
Curve::Element GroupElement
static constexpr size_t NUM_SENT_EVALUATIONS
static constexpr size_t SORT_STEP
static constexpr RepeatedCommitmentsData REPEATED_COMMITMENTS
static constexpr size_t NUM_CONCATENATED_POLYS
static constexpr size_t num_frs_comm
static constexpr size_t TO_BE_SHIFTED_WITNESSES_START
static void compute_computable_precomputed(AllEntities< FFType > &evals, std::span< const FFType > challenge)
Compute the computable precomputed selector evaluations and write them into AllEntities.
static constexpr size_t NUM_PCS_UNSHIFTED
static void set_minicircuit_evaluations(AllEntities< FFType > &evals, const std::array< FFType, NUM_MINICIRCUIT_EVALUATIONS > &mid)
Verifier: place the 154 raw mid-sumcheck minicircuit wire evaluations into AllEntities.
static constexpr size_t NUM_WITNESS_ENTITIES
static constexpr size_t NUM_FULL_CIRCUIT_EVALUATIONS
static constexpr size_t RANDOMNESS_START
static void complete_claimed_evaluations(AllEntities< FFType > &evals, std::span< const FFType > challenge)
Verifier: complete the claimed evaluations for the sumcheck relation check.
static constexpr size_t CONST_TRANSLATOR_LOG_N
static constexpr size_t NUM_OP_QUEUE_WIRES
static constexpr size_t PROOF_LENGTH
Relations_< FF > Relations
Curve::AffineElement Commitment
std::array< FF, NUM_SUBRELATIONS - 1 > SubrelationSeparators
static constexpr size_t NUM_CONCATENATED_WIRES
static constexpr size_t NUM_MINICIRCUIT_EVALUATIONS
static constexpr size_t MINIMUM_MINI_CIRCUIT_SIZE
static constexpr size_t LOG_MINI_CIRCUIT_SIZE
static constexpr bool USE_PADDING
static void set_full_circuit_evaluations(AllEntities< FFType > &evals, const std::array< FFType, NUM_FULL_CIRCUIT_EVALUATIONS > &full_circuit)
Verifier: write the full-circuit evaluations back via get_full_circuit_entities().
static constexpr size_t NUM_COMMITMENTS_IN_PROOF
static constexpr bool HasZK
static constexpr size_t NUM_ORDERED_RANGE
static constexpr size_t CONCATENATION_GROUP_SIZE
static std::array< FFType, NUM_CONCATENATED_POLYS > reconstruct_concatenated_evaluations(const std::vector< RefVector< FFType > > &groups, std::span< const FFType > challenge)
Reconstruct concatenated polynomial evaluations from individual wire evaluations using the Lagrange b...
static constexpr size_t NUM_LIMB_BITS
static constexpr size_t RESULT_ROW
static constexpr size_t NUM_MASKED_ROWS_END
static constexpr size_t NUM_RELATIONS
static constexpr bool USE_SHORT_MONOMIALS
static constexpr size_t NUM_TO_BE_SHIFTED
std::tuple< TranslatorPermutationRelation< FF >, TranslatorDeltaRangeConstraintRelation< FF >, TranslatorOpcodeConstraintRelation< FF >, TranslatorAccumulatorTransferRelation< FF >, TranslatorDecompositionRelation< FF >, TranslatorNonNativeFieldRelation< FF >, TranslatorZeroConstraintsRelation< FF > > Relations_
static constexpr size_t NUM_PRECOMPUTED_ENTITIES
static constexpr size_t NUM_SHIFTED_ENTITIES
static std::vector< RefVector< DataType > > partition_minicircuit_wires_into_groups(WireRefs wire_refs, DataType &zero_value)
Partition minicircuit wire references into concatenation groups.
static constexpr size_t NUM_PCS_TO_BE_SHIFTED
static constexpr size_t SHIFTED_WITNESSES_START
static constexpr size_t SORTED_STEPS_COUNT
static constexpr size_t NUM_UNSHIFTED_WITNESSES_WITHOUT_CONCATENATED
static constexpr size_t NUM_SUBRELATIONS
static void complete_full_circuit_evaluations(AllEntities< FFType > &evals, const std::array< FFType, NUM_FULL_CIRCUIT_EVALUATIONS > &full_circuit, std::span< const FFType > challenge)
Verifier: complete full-circuit evaluations from received array and challenge.
static constexpr size_t NUM_WIRES_NON_SHIFTED
static constexpr size_t BATCHED_RELATION_PARTIAL_LENGTH
static constexpr size_t num_frs_fr
static std::array< FF, NUM_MINICIRCUIT_EVALUATIONS > get_minicircuit_evaluations(PolyContainer &polys)
Prover: read the 154 minicircuit wire evaluations from partially-evaluated polynomials.
static constexpr size_t NUM_COMPUTABLE_PRECOMPUTED
static constexpr size_t NUM_MINICIRCUIT_WIRES
static constexpr size_t VIRTUAL_LOG_N
Representation of the Grumpkin Verifier Commitment Key inside a bn254 circuit.
typename Group::element Element
typename Group::affine_element AffineElement
static constexpr uint32_t LIBRA_UNIVARIATES_LENGTH
group class. Represents an elliptic curve group element. Group is parametrised by Fq and Fr
Base class templates shared across Honk flavors.
#define DEFINE_FLAVOR_MEMBERS(DataType,...)
Define the body of a flavor class, included each member and a pointer view with which to iterate the ...
#define DEFINE_COMPOUND_GET_ALL(...)
constexpr T get_msb(const T in)
Entry point for Barretenberg command-line interface.
RefArray< T,(Ns+...)> constexpr concatenate(const RefArray< T, Ns > &... ref_arrays)
Concatenates multiple RefArray objects into a single RefArray.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Stores the fixed Translator VK commitment that depends only on the circuit size constant CONST_TRANSL...
static TranslatorSelectorEvaluations compute(std::span< const FF > u)
Compute evaluations of all 10 structured selectors at the sumcheck challenge.
void populate(Entities &target) const
Write all 10 computed evaluations into any entity struct with matching named fields.