Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
Public Member Functions | Static Public Member Functions | Friends | List of all members
gadgetlib2::R1P_Comparison_Gadget Class Reference

#include <gadget.hpp>

Inheritance diagram for gadgetlib2::R1P_Comparison_Gadget:
Inheritance graph
[legend]
Collaboration diagram for gadgetlib2::R1P_Comparison_Gadget:
Collaboration graph
[legend]

Public Member Functions

void generateConstraints ()
 
void generateWitness ()
 
- Public Member Functions inherited from gadgetlib2::R1P_Gadget
 R1P_Gadget (ProtoboardPtr pb)
 
virtual ~R1P_Gadget ()=0
 
virtual void addRank1Constraint (const LinearCombination &a, const LinearCombination &b, const LinearCombination &c, const ::std::string &name)
 
- Public Member Functions inherited from gadgetlib2::Gadget
 Gadget (ProtoboardPtr pb)
 
void addUnaryConstraint (const LinearCombination &a, const ::std::string &name)
 
void addRank1Constraint (const LinearCombination &a, const LinearCombination &b, const LinearCombination &c, const ::std::string &name)
 
void enforceBooleanity (const Variable &var)
 
FElemval (const Variable &var)
 
FElem val (const LinearCombination &lc)
 
FieldType fieldType () const
 
bool flagIsSet (const FlagVariable &flag) const
 

Static Public Member Functions

static GadgetPtr create (ProtoboardPtr pb, const size_t &wordBitSize, const PackedWord &lhs, const PackedWord &rhs, const FlagVariable &less, const FlagVariable &lessOrEqual)
 

Friends

class Comparison_Gadget
 

Additional Inherited Members

- Protected Attributes inherited from gadgetlib2::Gadget
ProtoboardPtr pb_
 

Detailed Description

Definition at line 811 of file gadget.hpp.

Member Function Documentation

◆ create()

static GadgetPtr gadgetlib2::R1P_Comparison_Gadget::create ( ProtoboardPtr  pb,
const size_t &  wordBitSize,
const PackedWord lhs,
const PackedWord rhs,
const FlagVariable less,
const FlagVariable lessOrEqual 
)
static

◆ generateConstraints()

void gadgetlib2::R1P_Comparison_Gadget::generateConstraints ( )
virtual

Implements gadgetlib2::Gadget.

Definition at line 1157 of file gadget.cpp.

1158 {
1159  enforceBooleanity(notAllZeroes_);
1160  const FElem two_n = long(POW2(wordBitSize_));
1162  1, alpha_p_, two_n + rhs_ - lhs_, "packed(alpha) = 2^n + B - A");
1163  alphaDualVariablePacker_->generateConstraints();
1164  allZeroesTest_->generateConstraints();
1166  1, alpha_u_[wordBitSize_], lessOrEqual_, "alpha[n] = lessOrEqual");
1168  alpha_u_[wordBitSize_],
1169  notAllZeroes_,
1170  less_,
1171  "alpha[n] * notAllZeroes = less");
1172 }
Here is the call graph for this function:

◆ generateWitness()

void gadgetlib2::R1P_Comparison_Gadget::generateWitness ( )
virtual

Reimplemented from gadgetlib2::Gadget.

Definition at line 1174 of file gadget.cpp.

1175 {
1176  const FElem two_n = long(POW2(wordBitSize_));
1177  val(alpha_p_) = two_n + val(rhs_) - val(lhs_);
1178  alphaDualVariablePacker_->generateWitness();
1179  allZeroesTest_->generateWitness();
1180  val(lessOrEqual_) = val(alpha_u_[wordBitSize_]);
1181  val(less_) = val(lessOrEqual_) * val(notAllZeroes_);
1182 }
Here is the call graph for this function:

Friends And Related Function Documentation

◆ Comparison_Gadget

friend class Comparison_Gadget
friend

Definition at line 847 of file gadget.hpp.


The documentation for this class was generated from the following files:
gadgetlib2::POW2
int64_t POW2(int exponent)
Definition: infrastructure.hpp:118
gadgetlib2::R1P_Gadget::addRank1Constraint
virtual void addRank1Constraint(const LinearCombination &a, const LinearCombination &b, const LinearCombination &c, const ::std::string &name)
Definition: gadget.cpp:72
gadgetlib2::Gadget::val
FElem & val(const Variable &var)
Definition: gadget.hpp:109
gadgetlib2::Gadget::enforceBooleanity
void enforceBooleanity(const Variable &var)
Definition: gadget.hpp:108