17#include <unordered_map>
20static constexpr uint32_t DUMMY_TAG = 0;
57 std::map<uint32_t, uint32_t>
tau;
228 virtual void assert_equal(uint32_t a_idx, uint32_t b_idx, std::string
const& msg =
"assert_equal");
244 const std::string&
err()
const;
#define BB_ASSERT_GT(left, right,...)
std::vector< uint32_t > public_inputs_
virtual size_t get_num_finalized_gates() const
uint32_t get_public_input_index(const uint32_t witness_index) 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
virtual uint32_t add_variable(const FF &in)
void failure(std::string msg)
virtual void create_add_gate(const add_triple_< FF > &in)=0
bool public_inputs_finalized_
virtual void create_mul_gate(const mul_triple_< FF > &in)=0
CircuitBuilderBase(const CircuitBuilderBase &other)=default
void set_err(std::string msg)
void initialize_public_inputs(const std::vector< uint32_t > &public_inputs)
Directly initialize the public inputs vector.
CircuitBuilderBase & operator=(const CircuitBuilderBase &other)=default
virtual msgpack::sbuffer export_circuit()
bool operator==(const CircuitBuilderBase &other) const =default
static constexpr uint32_t FIRST_VARIABLE_IN_CLASS
virtual void create_poly_gate(const poly_triple_< FF > &in)=0
virtual uint32_t set_public_input(uint32_t witness_index)
Make a witness variable public.
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::conditional_t< std::same_as< FF, bb::g1::Fq >, curve::BN254, curve::Grumpkin > EmbeddedCurve
std::vector< uint32_t > prev_var_index
virtual size_t get_estimated_num_finalized_gates() const
void assert_valid_variables(const std::vector< uint32_t > &variable_indices)
bool is_recursive_circuit
CircuitBuilderBase & operator=(CircuitBuilderBase &&other) noexcept=default
size_t num_public_inputs() const
FF get_public_input(const uint32_t index) const
const std::vector< FF > & get_variables() const
std::vector< uint32_t > next_var_index
std::vector< uint32_t > real_variable_tags
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
FF get_variable(const uint32_t index) const
Get the value of the variable v_{index}.
virtual ~CircuitBuilderBase()=default
virtual void print_num_estimated_finalized_gates() const
virtual size_t get_num_constant_gates() const =0
virtual void create_bool_gate(const uint32_t a)=0
virtual void set_variable_name(uint32_t index, const std::string &name)
CircuitBuilderBase(CircuitBuilderBase &&other) noexcept=default
uint32_t get_first_variable_in_class(uint32_t index) const
void update_real_variable_indices(uint32_t index, uint32_t new_real_index)
const FF & get_variable_reference(const uint32_t index) const
virtual void update_variable_names(uint32_t index)
static constexpr uint32_t REAL_VARIABLE
std::map< uint32_t, uint32_t > tau
std::vector< uint32_t > real_variable_index
virtual uint32_t add_public_variable(const FF &in)
size_t get_circuit_subgroup_size(size_t num_gates) const
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