Barretenberg
The ZK-SNARK library at the core of Aztec
|
Base class for symbolic circuits. More...
#include <circuit_base.hpp>
Public Member Functions | |
CircuitBase (std::unordered_map< uint32_t, std::string > &variable_names, std::vector< bb::fr > &variables, std::vector< uint32_t > &public_inps, std::vector< uint32_t > &real_variable_index, std::vector< uint32_t > &real_variable_tags, Solver *solver, TermType type, const std::string &tag="", bool enable_optimizations=true) | |
STerm | operator[] (const std::string &name) |
Returns a previously named symbolic variable. | |
STerm | operator[] (const uint32_t &idx) |
size_t | get_num_real_vars () const |
size_t | get_num_vars () const |
void | init () |
virtual bool | simulate_circuit_eval (std::vector< bb::fr > &witness) const =0 |
CircuitBase (const CircuitBase &other)=default | |
CircuitBase (CircuitBase &&other) noexcept=default | |
CircuitBase & | operator= (const CircuitBase &other)=default |
CircuitBase & | operator= (CircuitBase &&other) noexcept=default |
virtual | ~CircuitBase ()=default |
Public Attributes | |
std::vector< bb::fr > | variables |
std::unordered_set< uint32_t > | public_inps |
std::unordered_map< uint32_t, std::string > | variable_names |
std::unordered_map< std::string, uint32_t > | variable_names_inverse |
std::unordered_map< uint32_t, STerm > | symbolic_vars |
std::vector< uint32_t > | real_variable_index |
std::vector< uint32_t > | real_variable_tags |
std::unordered_map< uint32_t, bool > | optimized |
bool | enable_optimizations |
std::unordered_map< uint32_t, std::vector< bb::fr > > | post_process |
Solver * | solver |
TermType | type |
std::string | tag |
Base class for symbolic circuits.
Contains all the information about the circuit: gates, variables, symbolic variables, specified names, global solver and optimiztaions.
Definition at line 28 of file circuit_base.hpp.
smt_circuit::CircuitBase::CircuitBase | ( | std::unordered_map< uint32_t, std::string > & | variable_names, |
std::vector< bb::fr > & | variables, | ||
std::vector< uint32_t > & | public_inps, | ||
std::vector< uint32_t > & | real_variable_index, | ||
std::vector< uint32_t > & | real_variable_tags, | ||
Solver * | solver, | ||
TermType | type, | ||
const std::string & | tag = "" , |
||
bool | enable_optimizations = true |
||
) |
Definition at line 5 of file circuit_base.cpp.
|
default |
|
defaultnoexcept |
|
virtualdefault |
|
inline |
Definition at line 66 of file circuit_base.hpp.
|
inline |
Definition at line 67 of file circuit_base.hpp.
void smt_circuit::CircuitBase::init | ( | ) |
Creates all the needed symbolic variables and constants which are used in circuit.
Definition at line 44 of file circuit_base.cpp.
|
defaultnoexcept |
|
default |
STerm smt_circuit::CircuitBase::operator[] | ( | const std::string & | name | ) |
Returns a previously named symbolic variable.
name |
Definition at line 70 of file circuit_base.cpp.
|
inline |
Definition at line 65 of file circuit_base.hpp.
|
pure virtual |
Implemented in smt_circuit::UltraCircuit.
bool smt_circuit::CircuitBase::enable_optimizations |
Definition at line 39 of file circuit_base.hpp.
std::unordered_map<uint32_t, bool> smt_circuit::CircuitBase::optimized |
Definition at line 37 of file circuit_base.hpp.
std::unordered_map<uint32_t, std::vector<bb::fr> > smt_circuit::CircuitBase::post_process |
Definition at line 41 of file circuit_base.hpp.
std::unordered_set<uint32_t> smt_circuit::CircuitBase::public_inps |
Definition at line 31 of file circuit_base.hpp.
std::vector<uint32_t> smt_circuit::CircuitBase::real_variable_index |
Definition at line 35 of file circuit_base.hpp.
std::vector<uint32_t> smt_circuit::CircuitBase::real_variable_tags |
Definition at line 36 of file circuit_base.hpp.
Solver* smt_circuit::CircuitBase::solver |
Definition at line 47 of file circuit_base.hpp.
std::unordered_map<uint32_t, STerm> smt_circuit::CircuitBase::symbolic_vars |
Definition at line 34 of file circuit_base.hpp.
std::string smt_circuit::CircuitBase::tag |
Definition at line 50 of file circuit_base.hpp.
TermType smt_circuit::CircuitBase::type |
Definition at line 48 of file circuit_base.hpp.
std::unordered_map<uint32_t, std::string> smt_circuit::CircuitBase::variable_names |
Definition at line 32 of file circuit_base.hpp.
std::unordered_map<std::string, uint32_t> smt_circuit::CircuitBase::variable_names_inverse |
Definition at line 33 of file circuit_base.hpp.
std::vector<bb::fr> smt_circuit::CircuitBase::variables |
Definition at line 30 of file circuit_base.hpp.