Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::SumcheckProverRound< Flavor >::LazyExtendedEdges< Multivariates, Element > Class Template Reference

Lazy edge container for USE_SHORT_MONOMIALS flavors, generic over the lane element type. More...

#include <sumcheck_round.hpp>

Public Types

using EntityId = typename Flavor::template ProverUnivariates< 2 >::EntityId
 

Public Member Functions

 LazyExtendedEdges (const Multivariates &multivariates)
 
void set_current_edge (const size_t edge_idx)
 
const bb::Univariate< Element, 2 > & operator[] (const EntityId id) const
 

Private Types

using Cache = std::conditional_t< cache_on_heap, std::vector< bb::Univariate< Element, 2 > >, std::array< bb::Univariate< Element, 2 >, Flavor::NUM_ALL_ENTITIES > >
 

Private Attributes

const Multivariates & multivariates
 
Cache cache {}
 
size_t current_edge = 0
 
std::bitset< Flavor::NUM_ALL_ENTITIESmaterialized
 

Static Private Attributes

static constexpr bool cache_on_heap = IsVectorField<Element>
 

Detailed Description

template<typename Flavor>
template<typename Multivariates, typename Element = FF>
class bb::SumcheckProverRound< Flavor >::LazyExtendedEdges< Multivariates, Element >

Lazy edge container for USE_SHORT_MONOMIALS flavors, generic over the lane element type.

For short-monomial flavors the edge "extension" is the identity (relations consume the degree-1 edge \(\{P_j(\text{edge}), P_j(\text{edge}+1)\}\) directly), so the eager extend_edges copies all NUM_ALL_ENTITIES columns up front, including columns of relations that skip() on this row. This container instead materializes each entity's edge on first access for the current edge, so columns never read by an active relation are never touched. Values are cached in inline storage and returned by reference, so UnivariateView consumers (which alias their operand) stay valid. Relations index exclusively via operator[](EntityId) (verified across the relation set), so the named accessors / get_all of the materialized container are not needed here.

Element is FF (one trace row per edge) or VectorField (the SIMD path), where each entity's edge spans lane_count rows, lane j read from row edge + 2j.

Definition at line 254 of file sumcheck_round.hpp.

Member Typedef Documentation

◆ Cache

template<typename Flavor >
template<typename Multivariates , typename Element = FF>
using bb::SumcheckProverRound< Flavor >::LazyExtendedEdges< Multivariates, Element >::Cache = std::conditional_t<cache_on_heap, std::vector<bb::Univariate<Element, 2> >, std::array<bb::Univariate<Element, 2>, Flavor::NUM_ALL_ENTITIES> >
private

Definition at line 295 of file sumcheck_round.hpp.

◆ EntityId

template<typename Flavor >
template<typename Multivariates , typename Element = FF>
using bb::SumcheckProverRound< Flavor >::LazyExtendedEdges< Multivariates, Element >::EntityId = typename Flavor::template ProverUnivariates<2>::EntityId

Definition at line 256 of file sumcheck_round.hpp.

Constructor & Destructor Documentation

◆ LazyExtendedEdges()

template<typename Flavor >
template<typename Multivariates , typename Element = FF>
bb::SumcheckProverRound< Flavor >::LazyExtendedEdges< Multivariates, Element >::LazyExtendedEdges ( const Multivariates &  multivariates)
inlineexplicit

Definition at line 258 of file sumcheck_round.hpp.

Member Function Documentation

◆ operator[]()

template<typename Flavor >
template<typename Multivariates , typename Element = FF>
const bb::Univariate< Element, 2 > & bb::SumcheckProverRound< Flavor >::LazyExtendedEdges< Multivariates, Element >::operator[] ( const EntityId  id) const
inline

Definition at line 272 of file sumcheck_round.hpp.

◆ set_current_edge()

template<typename Flavor >
template<typename Multivariates , typename Element = FF>
void bb::SumcheckProverRound< Flavor >::LazyExtendedEdges< Multivariates, Element >::set_current_edge ( const size_t  edge_idx)
inline

Definition at line 266 of file sumcheck_round.hpp.

Member Data Documentation

◆ cache

template<typename Flavor >
template<typename Multivariates , typename Element = FF>
Cache bb::SumcheckProverRound< Flavor >::LazyExtendedEdges< Multivariates, Element >::cache {}
mutableprivate

Definition at line 298 of file sumcheck_round.hpp.

◆ cache_on_heap

template<typename Flavor >
template<typename Multivariates , typename Element = FF>
constexpr bool bb::SumcheckProverRound< Flavor >::LazyExtendedEdges< Multivariates, Element >::cache_on_heap = IsVectorField<Element>
staticconstexprprivate

Definition at line 294 of file sumcheck_round.hpp.

◆ current_edge

template<typename Flavor >
template<typename Multivariates , typename Element = FF>
size_t bb::SumcheckProverRound< Flavor >::LazyExtendedEdges< Multivariates, Element >::current_edge = 0
private

Definition at line 299 of file sumcheck_round.hpp.

◆ materialized

template<typename Flavor >
template<typename Multivariates , typename Element = FF>
std::bitset<Flavor::NUM_ALL_ENTITIES> bb::SumcheckProverRound< Flavor >::LazyExtendedEdges< Multivariates, Element >::materialized
mutableprivate

Definition at line 300 of file sumcheck_round.hpp.

◆ multivariates

template<typename Flavor >
template<typename Multivariates , typename Element = FF>
const Multivariates& bb::SumcheckProverRound< Flavor >::LazyExtendedEdges< Multivariates, Element >::multivariates
private

Definition at line 289 of file sumcheck_round.hpp.


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