6#include <unordered_map>
61 const std::string&
tag =
"",
65 STerm operator[](
const uint32_t& idx) {
return this->symbolic_vars[this->real_variable_index[idx]]; };
Base class for symbolic circuits.
CircuitBase & operator=(const CircuitBase &other)=default
std::vector< uint32_t > real_variable_index
STerm operator[](const uint32_t &idx)
std::unordered_set< uint32_t > public_inps
virtual bool simulate_circuit_eval(std::vector< bb::fr > &witness) const =0
size_t get_num_real_vars() const
CircuitBase(const CircuitBase &other)=default
virtual ~CircuitBase()=default
std::vector< uint32_t > real_variable_tags
bool enable_optimizations
std::unordered_map< uint32_t, bool > optimized
std::vector< bb::fr > variables
size_t get_num_vars() const
CircuitBase & operator=(CircuitBase &&other) noexcept=default
STerm operator[](const std::string &name)
Returns a previously named symbolic variable.
std::unordered_map< uint32_t, std::string > variable_names
CircuitBase(CircuitBase &&other) noexcept=default
std::unordered_map< uint32_t, std::vector< bb::fr > > post_process
std::unordered_map< std::string, uint32_t > variable_names_inverse
std::unordered_map< uint32_t, STerm > symbolic_vars
Symbolic term element class.
TermType
Allows to define three types of symbolic terms STerm - Symbolic Variables acting like a Finte Field e...
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept