Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
smt_circuit::CircuitBase Class Referenceabstract

Base class for symbolic circuits. More...

#include <circuit_base.hpp>

Inheritance diagram for smt_circuit::CircuitBase:
smt_circuit::UltraCircuit

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
 
CircuitBaseoperator= (const CircuitBase &other)=default
 
CircuitBaseoperator= (CircuitBase &&other) noexcept=default
 
virtual ~CircuitBase ()=default
 

Public Attributes

std::vector< bb::frvariables
 
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, STermsymbolic_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
 
Solversolver
 
TermType type
 
std::string tag
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ CircuitBase() [1/3]

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.

◆ CircuitBase() [2/3]

smt_circuit::CircuitBase::CircuitBase ( const CircuitBase other)
default

◆ CircuitBase() [3/3]

smt_circuit::CircuitBase::CircuitBase ( CircuitBase &&  other)
defaultnoexcept

◆ ~CircuitBase()

virtual smt_circuit::CircuitBase::~CircuitBase ( )
virtualdefault

Member Function Documentation

◆ get_num_real_vars()

size_t smt_circuit::CircuitBase::get_num_real_vars ( ) const
inline

Definition at line 66 of file circuit_base.hpp.

◆ get_num_vars()

size_t smt_circuit::CircuitBase::get_num_vars ( ) const
inline

Definition at line 67 of file circuit_base.hpp.

◆ init()

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.

◆ operator=() [1/2]

CircuitBase & smt_circuit::CircuitBase::operator= ( CircuitBase &&  other)
defaultnoexcept

◆ operator=() [2/2]

CircuitBase & smt_circuit::CircuitBase::operator= ( const CircuitBase other)
default

◆ operator[]() [1/2]

STerm smt_circuit::CircuitBase::operator[] ( const std::string &  name)

Returns a previously named symbolic variable.

Parameters
name
Returns
STerm

Definition at line 70 of file circuit_base.cpp.

◆ operator[]() [2/2]

STerm smt_circuit::CircuitBase::operator[] ( const uint32_t &  idx)
inline

Definition at line 65 of file circuit_base.hpp.

◆ simulate_circuit_eval()

virtual bool smt_circuit::CircuitBase::simulate_circuit_eval ( std::vector< bb::fr > &  witness) const
pure virtual

Implemented in smt_circuit::UltraCircuit.

Member Data Documentation

◆ enable_optimizations

bool smt_circuit::CircuitBase::enable_optimizations

Definition at line 39 of file circuit_base.hpp.

◆ optimized

std::unordered_map<uint32_t, bool> smt_circuit::CircuitBase::optimized

Definition at line 37 of file circuit_base.hpp.

◆ post_process

std::unordered_map<uint32_t, std::vector<bb::fr> > smt_circuit::CircuitBase::post_process

Definition at line 41 of file circuit_base.hpp.

◆ public_inps

std::unordered_set<uint32_t> smt_circuit::CircuitBase::public_inps

Definition at line 31 of file circuit_base.hpp.

◆ real_variable_index

std::vector<uint32_t> smt_circuit::CircuitBase::real_variable_index

Definition at line 35 of file circuit_base.hpp.

◆ real_variable_tags

std::vector<uint32_t> smt_circuit::CircuitBase::real_variable_tags

Definition at line 36 of file circuit_base.hpp.

◆ solver

Solver* smt_circuit::CircuitBase::solver

Definition at line 47 of file circuit_base.hpp.

◆ symbolic_vars

std::unordered_map<uint32_t, STerm> smt_circuit::CircuitBase::symbolic_vars

Definition at line 34 of file circuit_base.hpp.

◆ tag

std::string smt_circuit::CircuitBase::tag

Definition at line 50 of file circuit_base.hpp.

◆ type

TermType smt_circuit::CircuitBase::type

Definition at line 48 of file circuit_base.hpp.

◆ variable_names

std::unordered_map<uint32_t, std::string> smt_circuit::CircuitBase::variable_names

Definition at line 32 of file circuit_base.hpp.

◆ variable_names_inverse

std::unordered_map<std::string, uint32_t> smt_circuit::CircuitBase::variable_names_inverse

Definition at line 33 of file circuit_base.hpp.

◆ variables

std::vector<bb::fr> smt_circuit::CircuitBase::variables

Definition at line 30 of file circuit_base.hpp.


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