Clearmatics Libsnark
0.1
C++ library for zkSNARK proofs
|
#include <protoboard.hpp>
|
size_t | numVars () const |
|
size_t | numInputs () const |
|
ParamsCPtr | params () const |
|
FElem & | val (const Variable &var) |
|
FElem | val (const LinearCombination &lc) const |
|
void | setValuesAsBitArray (const VariableArray &varArray, const size_t srcValue) |
|
void | setDualWordValue (const DualWord &dualWord, const size_t srcValue) |
|
void | setMultipackedWordValue (const MultiPackedWord &multipackedWord, const size_t srcValue) |
|
void | addRank1Constraint (const LinearCombination &a, const LinearCombination &b, const LinearCombination &c, const ::std::string &name) |
|
void | addGeneralConstraint (const Polynomial &a, const Polynomial &b, const ::std::string &name) |
|
void | addUnaryConstraint (const LinearCombination &a, const ::std::string &name) |
| adds a constraint of the form (a == 0) More...
|
|
bool | isSatisfied (const PrintOptions &printOnFail=PrintOptions::NO_DBG_PRINT) |
|
bool | flagIsSet (const FlagVariable &flag) const |
|
void | setFlag (const FlagVariable &flag, bool newFlagState=true) |
|
void | clearFlag (const FlagVariable &flag) |
|
void | flipFlag (const FlagVariable &flag) |
|
void | enforceBooleanity (const Variable &var) |
|
::std::string | annotation () const |
|
ConstraintSystem | constraintSystem () const |
|
VariableAssignment | assignment () const |
|
bool | dualWordAssignmentEqualsValue (const DualWord &dualWord, const size_t expectedValue, const PrintOptions &printOption=PrintOptions::NO_DBG_PRINT) const |
|
bool | multipackedWordAssignmentEqualsValue (const MultiPackedWord &multipackedWord, const size_t expectedValue, const PrintOptions &printOption=PrintOptions::NO_DBG_PRINT) const |
|
bool | unpackedWordAssignmentEqualsValue (const UnpackedWord &unpackedWord, const size_t expectedValue, const PrintOptions &printOption=PrintOptions::NO_DBG_PRINT) const |
|
Definition at line 38 of file protoboard.hpp.
◆ Protoboard()
◆ addGeneralConstraint()
void gadgetlib2::Protoboard::addGeneralConstraint |
( |
const Polynomial & |
a, |
|
|
const Polynomial & |
b, |
|
|
const ::std::string & |
name |
|
) |
| |
◆ addRank1Constraint()
◆ addUnaryConstraint()
void gadgetlib2::Protoboard::addUnaryConstraint |
( |
const LinearCombination & |
a, |
|
|
const ::std::string & |
name |
|
) |
| |
adds a constraint of the form (a == 0)
Definition at line 110 of file protoboard.cpp.
◆ annotation()
string gadgetlib2::Protoboard::annotation |
( |
| ) |
const |
Definition at line 135 of file protoboard.cpp.
139 retVal +=
"Variable Assignments:\n";
141 const string varName = assignmentPair.first.name();
142 const string varAssignedValue = assignmentPair.second.asString();
143 retVal += varName +
": " + varAssignedValue +
"\n";
◆ assignment()
◆ clearFlag()
void gadgetlib2::Protoboard::clearFlag |
( |
const FlagVariable & |
flag | ) |
|
|
inline |
◆ constraintSystem()
◆ create()
◆ dualWordAssignmentEqualsValue()
Definition at line 174 of file protoboard.cpp.
180 dualWord.multipacked(), expectedValue, printOption);
182 dualWord.unpacked(), expectedValue, printOption);
184 multipackedEqualsValue, unpackedEqualsValue)) {
186 multipackedEqualsValue, unpackedEqualsValue);
188 return multipackedEqualsValue && unpackedEqualsValue;
◆ enforceBooleanity()
void gadgetlib2::Protoboard::enforceBooleanity |
( |
const Variable & |
var | ) |
|
◆ flagIsSet()
bool gadgetlib2::Protoboard::flagIsSet |
( |
const FlagVariable & |
flag | ) |
const |
|
inline |
◆ flipFlag()
void gadgetlib2::Protoboard::flipFlag |
( |
const FlagVariable & |
flag | ) |
|
|
inline |
◆ isSatisfied()
◆ multipackedWordAssignmentEqualsValue()
Definition at line 200 of file protoboard.cpp.
208 multipackedWord.size() == 1,
"R1P multipacked size mismatch");
209 if (
val(multipackedWord[0]) == expectedValue) {
215 cout <<
"Expected value for multipacked word \""
216 << multipackedWord.name() <<
"\" is: " << expectedValue
218 cout <<
"Actual value is: " <<
val(multipackedWord[0]) << endl;
222 "Unknown field type in "
223 "Protoboard::multipackedWordAssignmentEqualsValue(...)");
◆ numInputs()
size_t gadgetlib2::Protoboard::numInputs |
( |
| ) |
const |
|
inline |
◆ numVars()
size_t gadgetlib2::Protoboard::numVars |
( |
| ) |
const |
|
inline |
◆ params()
ParamsCPtr gadgetlib2::Protoboard::params |
( |
| ) |
const |
|
inline |
◆ setDualWordValue()
void gadgetlib2::Protoboard::setDualWordValue |
( |
const DualWord & |
dualWord, |
|
|
const size_t |
srcValue |
|
) |
| |
◆ setFlag()
void gadgetlib2::Protoboard::setFlag |
( |
const FlagVariable & |
flag, |
|
|
bool |
newFlagState = true |
|
) |
| |
◆ setMultipackedWordValue()
void gadgetlib2::Protoboard::setMultipackedWordValue |
( |
const MultiPackedWord & |
multipackedWord, |
|
|
const size_t |
srcValue |
|
) |
| |
Definition at line 78 of file protoboard.cpp.
83 multipackedWord.size() == 1,
84 "Multipacked word size mismatch in R1P");
85 val(multipackedWord[0]) = srcValue;
88 "Unknown protoboard type in Protoboard::setMultipackedWordValue");
◆ setValuesAsBitArray()
void gadgetlib2::Protoboard::setValuesAsBitArray |
( |
const VariableArray & |
varArray, |
|
|
const size_t |
srcValue |
|
) |
| |
Definition at line 50 of file protoboard.cpp.
54 varArray.size() >=
Log2ceil(srcValue),
56 "Variable array of size %u too small to hold value %u. Array must "
63 for (i = 0; i <
Log2ceil(srcValue); ++i) {
64 val(varArray[i]) = srcValue & (1u << i) ? 1 : 0;
66 for (; i < varArray.size(); ++i) {
◆ unpackedWordAssignmentEqualsValue()
Definition at line 228 of file protoboard.cpp.
234 size_t expectedValueCopy = expectedValue;
235 for (
size_t i = 0; i < unpackedWord.size(); ++i) {
236 if (
val(unpackedWord[i]) != (expectedValueCopy & 1u)) {
240 expectedValueCopy >>= 1;
242 if (expectedValueCopy != 0) {
246 cout <<
"Expected value for unpacked word \"" << unpackedWord.name()
247 <<
"\" is: " << expectedValue << endl;
248 cout <<
"Actual values are: " << endl;
249 for (
size_t i = 0; i < unpackedWord.size(); ++i) {
250 cout <<
"bit " << i <<
": " <<
val(unpackedWord[i]) << endl;
◆ val() [1/2]
◆ val() [2/2]
Definition at line 34 of file protoboard.cpp.
40 "Assigned field element of incorrect field type in Variable \"%s\"",
◆ assignment_
◆ constraintSystem_
◆ fieldType_
const FieldType gadgetlib2::Protoboard::fieldType_ |
◆ numInputs_
size_t gadgetlib2::Protoboard::numInputs_ |
|
protected |
◆ pParams_
The documentation for this class was generated from the following files:
- /home/runner/work/libsnark/libsnark/libsnark/gadgetlib2/protoboard.hpp
- /home/runner/work/libsnark/libsnark/libsnark/gadgetlib2/protoboard.cpp
void addConstraint(const Rank1Constraint &c)
void setValuesAsBitArray(const VariableArray &varArray, const size_t srcValue)
bool expectedToPrintValues(const bool boolValue, const PrintOptions &printOption)
::std::string GADGETLIB2_FMT(const char *format,...)
const FieldType fieldType_
VariableAssignment assignment_
void setMultipackedWordValue(const MultiPackedWord &multipackedWord, const size_t srcValue)
FElem & val(const Variable &var)
void printInformativeNoticeMessage(const bool multipackedEqualsValue, const bool unpackedEqualsValue)
unsigned int Log2ceil(uint64_t i)
bool multipackedAndUnpackedValuesDisagree(const bool multipackedEqualsValue, const bool unpackedEqualsValue)
::std::string annotation() const
#define GADGETLIB_FATAL(msg)
ConstraintSystem constraintSystem_
bool multipackedWordAssignmentEqualsValue(const MultiPackedWord &multipackedWord, const size_t expectedValue, const PrintOptions &printOption=PrintOptions::NO_DBG_PRINT) const
void addRank1Constraint(const LinearCombination &a, const LinearCombination &b, const LinearCombination &c, const ::std::string &name)
#define GADGETLIB_ASSERT(predicate, msg)
::std::shared_ptr< Protoboard > ProtoboardPtr
bool isSatisfied(const VariableAssignment &assignment, const PrintOptions &printOnFail=PrintOptions::NO_DBG_PRINT) const
Protoboard(const FieldType &fieldType, ParamsCPtr pParams)
bool unpackedWordAssignmentEqualsValue(const UnpackedWord &unpackedWord, const size_t expectedValue, const PrintOptions &printOption=PrintOptions::NO_DBG_PRINT) const