purify
C++ Purify implementation with native circuit and BPP support
Loading...
Searching...
No Matches
expr.hpp File Reference

Symbolic expression and transcript machinery used to derive Purify circuits. More...

#include <cstdint>
#include <map>
#include <optional>
#include <set>
#include <string>
#include <type_traits>
#include <utility>
#include <vector>
#include "purify/numeric.hpp"

Go to the source code of this file.

Data Structures

struct  purify::Symbol
 Compact symbolic variable identifier used inside expressions and transcripts. More...
 
struct  purify::SymbolLess
 
class  purify::Expr
 Symbolic affine expression over indexed variables and field coefficients. More...
 
struct  purify::ExprLess
 
struct  purify::ExprPairLess
 
class  purify::ExprBuilder
 Small runtime builder that flattens affine combinations into one expression. More...
 
class  purify::Transcript
 Mutable transcript used to record symbolic multiplication, division, and boolean constraints. More...
 
struct  purify::Transcript::MulConstraint
 One multiplicative relation emitted by the symbolic transcript. More...
 

Namespaces

namespace  purify
 

Typedefs

using purify::WitnessAssignments = std::vector< std::optional< FieldElement > >
 Partial witness assignment vector indexed by transcript witness id.
 

Enumerations

enum class  purify::SymbolKind : std::uint8_t {
  purify::Witness = 0 , purify::Left = 1 , purify::Right = 2 , purify::Output = 3 ,
  purify::Commitment = 4
}
 Symbol classes used while deriving witness and Bulletproof wire relations. More...
 

Functions

bool purify::operator< (const Symbol &lhs, const Symbol &rhs) noexcept
 
std::ostream & purify::operator<< (std::ostream &out, const Expr &expr)
 Streams the human-readable expression form to an output stream.
 
Expr purify::operator+ (const Expr &lhs, const Expr &rhs)
 
Expr purify::operator+ (const Expr &lhs, std::int64_t rhs)
 
Expr purify::operator+ (std::int64_t lhs, const Expr &rhs)
 
Expr purify::operator- (const Expr &lhs, const Expr &rhs)
 
Expr purify::operator- (const Expr &lhs, std::int64_t rhs)
 
Expr purify::operator- (std::int64_t lhs, const Expr &rhs)
 
Expr purify::operator- (const Expr &value)
 
Expr purify::operator* (const Expr &expr, const FieldElement &scalar)
 
Expr purify::operator* (const FieldElement &scalar, const Expr &expr)
 
Expr purify::operator* (const Expr &expr, std::int64_t scalar)
 
Expr purify::operator* (std::int64_t scalar, const Expr &expr)
 
bool purify::operator== (const Expr &lhs, const Expr &rhs)
 
bool purify::operator< (const Expr &lhs, const Expr &rhs)