barretenberg
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
arithmetization::Standard< FF_ > Class Template Reference

Specify the structure of a CircuitBuilder. More...

#include <arithmetization.hpp>

Public Types

using FF = FF_
 
using SelectorType = std::vector< FF, barretenberg::ContainerSlabAllocator< FF > >
 

Public Member Functions

SelectorType & q_m ()
 
SelectorType & q_1 ()
 
SelectorType & q_2 ()
 
SelectorType & q_3 ()
 
SelectorType & q_c ()
 
const SelectorType & q_m () const
 
const SelectorType & q_1 () const
 
const SelectorType & q_2 () const
 
const SelectorType & q_3 () const
 
const SelectorType & q_c () const
 
const auto & get () const
 
void reserve (size_t size_hint)
 

Public Attributes

std::vector< SelectorType > selectors
 

Static Public Attributes

static constexpr size_t NUM_WIRES = 3
 
static constexpr size_t NUM_SELECTORS = 5
 
static const std::vector< std::string > selector_names = { "q_m", "q_1", "q_2", "q_3", "q_c" }
 

Detailed Description

template<typename FF_>
class arithmetization::Standard< FF_ >

Specify the structure of a CircuitBuilder.

This is typically passed as a template argument specifying the structure of a circuit constructor. It should only ever contain circuit constructor data–it should not contain data that is particular to any proving system.

Remarks
It may make sense to say this is only partial arithmetization data, with the full data being contained in the circuit constructor. We could change the name of this class if it conflicts with common usage.
Note
For even greater modularity, in each instantiation we could specify a list of components here, where a component is a meaningful collection of functions for creating gates, as in:

struct Component { using Arithmetic = component::Arithmetic3Wires; using RangeConstraints = component::Base4Accumulators or component::GenPerm or... using LookupTables = component::Plookup4Wire or component::CQ8Wire or... ... };

We should only do this if it becomes necessary or convenient.


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