19#include <unordered_map>
22static constexpr uint32_t DUMMY_TAG = 0;
89 std::unordered_map<uint32_t, uint32_t>
_tau;
137 const std::unordered_map<uint32_t, uint32_t>&
tau()
const {
return _tau; }
223 virtual void assert_equal(uint32_t a_idx, uint32_t b_idx, std::string
const& msg =
"assert_equal");
259 const std::string&
err()
const;
#define BB_ASSERT(expression,...)
#define BB_ASSERT_DEBUG(expression,...)
virtual size_t get_num_finalized_gates() const
bool is_write_vk_mode() const
void set_variable(const uint32_t index, const FF &value)
Set the value of the variable pointed to by a witness index.
const std::string & err() const
bool _public_inputs_finalized
virtual uint32_t add_variable(const FF &in)
Add a variable to variables.
std::unordered_map< uint32_t, uint32_t > _tau
The permutation on variable tags, as a constituent of the generalized permutation argument.
void failure(std::string msg)
PairingPointsTagging pairing_points_tagging
PairingPoints tagging tool, used to ensure that all pairing points created in this circuit are aggreg...
CircuitBuilderBase(const CircuitBuilderBase &other)=default
void initialize_public_inputs(const std::vector< uint32_t > &public_inputs)
Directly initialize the public inputs vector.
const std::unordered_map< uint32_t, uint32_t > & tau() const
std::vector< uint32_t > _public_inputs
CircuitBuilderBase & operator=(const CircuitBuilderBase &other)=default
virtual msgpack::sbuffer export_circuit()
Export the existing circuit as msgpack compatible buffer.
bool operator==(const CircuitBuilderBase &other) const =default
static constexpr uint32_t FIRST_VARIABLE_IN_CLASS
virtual uint32_t set_public_input(uint32_t witness_index)
Make a witness variable public.
uint32_t add_public_variable(const OT &in)=delete
const std::vector< uint32_t > & public_inputs() const
std::unordered_map< uint32_t, std::string > variable_names
void finalize_public_inputs()
Set the _public_inputs_finalized to true to prevent any new public inputs from being added.
std::vector< uint32_t > prev_var_index
void assert_valid_variables(const std::vector< uint32_t > &variable_indices)
Check whether each variable index points to a witness value in the variables array.
CircuitBuilderBase & operator=(CircuitBuilderBase &&other) noexcept=default
size_t num_public_inputs() const
const std::vector< FF > & get_variables() const
std::vector< uint32_t > next_var_index
std::vector< uint32_t > real_variable_tags
real_variable_tags is the tagging mechanism for the the multiset-equality check.
std::vector< FF > variables
virtual void assert_equal(uint32_t a_idx, uint32_t b_idx, std::string const &msg="assert_equal")
virtual size_t get_num_variables() const
uint32_t zero_idx() const
FF get_variable(const uint32_t index) const
Get the value of the variable v_{index}.
virtual ~CircuitBuilderBase()=default
virtual size_t get_num_constant_gates() const =0
uint32_t add_variable(const OT &in)=delete
virtual void set_variable_name(uint32_t index, const std::string &name)
Assign a name to a variable (equivalence class)
CircuitBuilderBase(CircuitBuilderBase &&other) noexcept=default
uint32_t get_first_variable_in_class(uint32_t index) const
Get the index of the first variable in class.
void update_real_variable_indices(uint32_t index, uint32_t new_real_index)
Update all variables from index in equivalence class to have real variable new_real_index.
void increment_num_gates(size_t count=1)
static constexpr uint32_t REAL_VARIABLE
std::vector< uint32_t > real_variable_index
Map from witness index to real variable index.
virtual uint32_t add_public_variable(const FF &in)
Add a public variable to variables.
void set_zero_idx(uint32_t value)
size_t get_circuit_subgroup_size(size_t num_gates) const
Class to manage pairing point tagging.
Entry point for Barretenberg command-line interface.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Serialized state of a circuit.
std::vector< std::vector< std::vector< FF > > > selectors
std::vector< uint32_t > real_variable_index
std::unordered_map< uint32_t, uint64_t > range_tags
std::unordered_map< uint32_t, std::string > vars_of_interest
std::vector< std::vector< uint32_t > > ram_states
std::vector< std::vector< std::array< uint32_t, 2 > > > rom_states
MSGPACK_FIELDS(modulus, public_inps, vars_of_interest, variables, selectors, wires, real_variable_index, lookup_tables, real_variable_tags, range_tags, rom_records, rom_states, ram_records, ram_states, circuit_finalized)
std::vector< std::vector< std::vector< uint32_t > > > ram_records
std::vector< std::vector< std::vector< uint32_t > > > rom_records
std::vector< std::vector< std::vector< FF > > > lookup_tables
std::vector< uint32_t > real_variable_tags
std::vector< uint32_t > public_inps
std::vector< FF > variables
std::vector< std::vector< std::vector< uint32_t > > > wires