Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::MultilinearBatchingAccumulatorRelationImpl< FF_ > Class Template Reference

Multilinear batching relations for HyperNova claim batching. More...

#include <multilinear_batching_relation.hpp>

Public Types

using FF = FF_
 

Static Public Member Functions

template<typename AllEntities >
static bool skip (const AllEntities &in)
 Returns true if the contribution from all subrelations for the provided inputs is identically zero.
 
template<typename ContainerOverSubrelations , typename AllEntities >
static void accumulate (ContainerOverSubrelations &evals, const AllEntities &in, const RelationParameters< FF > &relation_parameters={}, const FF &scaling_factor={})
 Accumulate the accumulator's contribution to the batching sumcheck.
 

Static Public Attributes

static constexpr std::array< size_t, 2 > SUBRELATION_PARTIAL_LENGTHS
 
static constexpr std::array< bool, 2 > SUBRELATION_LINEARLY_INDEPENDENT = { false, false }
 

Detailed Description

template<typename FF_>
class bb::MultilinearBatchingAccumulatorRelationImpl< FF_ >

Multilinear batching relations for HyperNova claim batching.

See: chonk/README.md#batching-claims-into-accumulator

Relation for accumulator contribution to the multilinear batching sumcheck.

In HyperNova, we batch polynomial evaluation claims from the accumulator and instance into a new combined claim. This is done via a sumcheck that verifies:

target_sum = acc_non_shifted

  • α · acc_shifted
  • α² · Σᵢ(ρᵢ · inst_unshifted_evalᵢ)
  • α³ · Σᵢ(σᵢ · inst_shifted_evalᵢ)

where ρᵢ and σᵢ are per-polynomial batching challenges, and each evaluation is weighted by eq(r, u) to "select" the correct evaluation point.

This relation contributes the accumulator terms:

  • Subrelation 0: batched_unshifted_accumulator * eq_accumulator (non-shifted contribution)
  • Subrelation 1: batched_shifted_accumulator * eq_accumulator (shifted contribution)

The eq_accumulator polynomial encodes eq(u, r_acc) which "selects" the accumulator's evaluation point. The verifier checks this polynomial matches the expected eq evaluation.

Definition at line 36 of file multilinear_batching_relation.hpp.

Member Typedef Documentation

◆ FF

template<typename FF_ >
using bb::MultilinearBatchingAccumulatorRelationImpl< FF_ >::FF = FF_

Definition at line 38 of file multilinear_batching_relation.hpp.

Member Function Documentation

◆ accumulate()

template<typename FF_ >
template<typename ContainerOverSubrelations , typename AllEntities >
static void bb::MultilinearBatchingAccumulatorRelationImpl< FF_ >::accumulate ( ContainerOverSubrelations &  evals,
const AllEntities &  in,
const RelationParameters< FF > &  relation_parameters = {},
const FF scaling_factor = {} 
)
inlinestatic

Accumulate the accumulator's contribution to the batching sumcheck.

Computes: batched_unshifted * eq + batched_shifted * eq

Definition at line 61 of file multilinear_batching_relation.hpp.

◆ skip()

template<typename FF_ >
template<typename AllEntities >
static bool bb::MultilinearBatchingAccumulatorRelationImpl< FF_ >::skip ( const AllEntities &  in)
inlinestatic

Returns true if the contribution from all subrelations for the provided inputs is identically zero.

Definition at line 50 of file multilinear_batching_relation.hpp.

Member Data Documentation

◆ SUBRELATION_LINEARLY_INDEPENDENT

template<typename FF_ >
constexpr std::array<bool, 2> bb::MultilinearBatchingAccumulatorRelationImpl< FF_ >::SUBRELATION_LINEARLY_INDEPENDENT = { false, false }
staticconstexpr

Definition at line 45 of file multilinear_batching_relation.hpp.

◆ SUBRELATION_PARTIAL_LENGTHS

template<typename FF_ >
constexpr std::array<size_t, 2> bb::MultilinearBatchingAccumulatorRelationImpl< FF_ >::SUBRELATION_PARTIAL_LENGTHS
staticconstexpr
Initial value:
{
3,
3,
}

Definition at line 40 of file multilinear_batching_relation.hpp.


The documentation for this class was generated from the following file: