193 operator cvc5::Term()
const {
return term; };
199 return out << static_cast<std::string>(
term);
204 if (children.size() == 0) {
205 throw std::invalid_argument(
"Can't use batch_add on empty vector");
210 return { res, slv, children[0].type };
215 if (children.size() == 0) {
216 throw std::invalid_argument(
"Can't use batch_mul on empty vector");
221 return { res, slv, children[0].type };
cvc5::TermManager term_manager
std::string stringify_term(const cvc5::Term &term, bool parenthesis=false)
Symbolic term element class.
void operator<(const STerm &other) const
void operator<<=(const uint32_t &n)
operator cvc5::Term() const
void operator-=(const bb::fr &other)
STerm operator&(const bb::fr &other) const
void operator!=(const bb::fr &other) const
STerm operator*(const STerm &other) const
STerm rotl(const uint32_t &n) const
friend std::ostream & operator<<(std::ostream &out, const STerm &term)
STerm operator+(const bb::fr &other) const
STerm operator*(const bb::fr &other) const
void operator^=(const bb::fr &other)
void operator/=(const bb::fr &other)
STerm operator%(const STerm &other) const
void operator+=(const STerm &other)
void operator/=(const STerm &other)
void operator==(const STerm &other) const
STerm rotr(const uint32_t &n) const
void operator<=(const STerm &other) const
STerm operator/(const bb::fr &other) const
std::unordered_map< OpType, cvc5::Kind > operations
STerm operator/(const STerm &other) const
Division operation.
void operator&=(const bb::fr &other)
STerm & operator=(STerm &&right)=default
void operator==(const bb::fr &other) const
void operator>(const STerm &other) const
STerm(const STerm &other)=default
STerm(bb::fr value, Solver *s, TermType type=TermType::FFTerm)
void operator^=(const STerm &other)
static STerm Var(const std::string &name, Solver *slv, TermType type=TermType::FFTerm)
STerm operator^(const STerm &other) const
STerm operator-(const bb::fr &other) const
void operator*=(const STerm &other)
STerm mod() const
Reduce the term modulo circuit prime.
void operator<=(const bb::fr &other) const
STerm(const cvc5::Term &term, Solver *s, TermType type)
STerm normalize() const
Reduce the integer symbolic term modulo circuit prime if needed.
void operator|=(const bb::fr &other)
void operator&=(const STerm &other)
STerm & operator=(const STerm &right)=default
void operator>>=(const uint32_t &n)
STerm operator|(const bb::fr &other) const
void operator+=(const bb::fr &other)
void operator>=(const bb::fr &other) const
STerm operator&(const STerm &other) const
void operator!=(const STerm &other) const
STerm operator|(const STerm &other) const
void operator*=(const bb::fr &other)
void operator<(const bb::fr &other) const
void operator>=(const STerm &other) const
STerm(STerm &&other)=default
void operator|=(const STerm &other)
STerm operator>>(const uint32_t &n) const
STerm operator%(const bb::fr &other) const
static STerm Const(const std::string &val, Solver *slv, uint32_t base=16, TermType type=TermType::FFTerm)
STerm operator^(const bb::fr &other) const
void operator-=(const STerm &other)
void operator>(const bb::fr &other) const
static STerm batch_add(const std::vector< STerm > &children)
STerm extract_bit(const uint32_t &bit_index)
Returns ith bit of variable.
STerm operator+(const STerm &other) const
static STerm batch_mul(const std::vector< STerm > &children)
STerm truncate(const uint32_t &to_size)
Returns last to_size bits of variable.
STerm IVar(const std::string &name, Solver *slv)
STerm operator+(const bb::fr &lhs, const STerm &rhs)
STerm FFVar(const std::string &name, Solver *slv)
STerm IConst(const std::string &val, Solver *slv, uint32_t base)
STerm BVVar(const std::string &name, Solver *slv)
STerm operator&(const bb::fr &lhs, const STerm &rhs)
STerm FFConst(const std::string &val, Solver *slv, uint32_t base)
const std::unordered_map< TermType, std::unordered_map< OpType, cvc5::Kind > > typed_operations
precomputed map that contains allowed operations for each of three symbolic types
STerm operator|(const bb::fr &lhs, const STerm &rhs)
void operator!=(const bb::fr &lhs, const STerm &rhs)
STerm operator*(const bb::fr &lhs, const STerm &rhs)
STerm FFIVar(const std::string &name, Solver *slv)
STerm operator^(const bb::fr &lhs, const STerm &rhs)
STerm BVConst(const std::string &val, Solver *slv, uint32_t base)
TermType
Allows to define three types of symbolic terms STerm - Symbolic Variables acting like a Finte Field e...
STerm operator/(const bb::fr &lhs, const STerm &rhs)
STerm operator-(const bb::fr &lhs, const STerm &rhs)
STerm FFIConst(const std::string &val, Solver *slv, uint32_t base)
std::ostream & operator<<(std::ostream &os, const TermType type)
void operator==(const bb::fr &lhs, const STerm &rhs)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
constexpr field invert() const noexcept