Clearmatics Libsnark
0.1
C++ library for zkSNARK proofs
|
Go to the documentation of this file.
22 using ::std::shared_ptr;
83 if (ares * bres != cres) {
87 "Constraint named \"%s\" not satisfied. Constraint is:",
91 cerr <<
"Variable assignments are:" << endl;
94 cerr << var.name() <<
": " << assignment.at(var).asString()
97 cerr <<
"a: " << ares.
asString() << endl;
98 cerr <<
"b: " << bres.
asString() << endl;
99 cerr <<
"a*b: " << (ares * bres).asString() << endl;
100 cerr <<
"c: " << cres.
asString() << endl;
103 libff::UNUSED(printOnFail);
123 retSet.insert(aSet.begin(), aSet.end());
125 retSet.insert(bSet.begin(), bSet.end());
127 retSet.insert(cSet.begin(), cSet.end());
155 if (aEval != bEval) {
159 "Constraint named \"%s\" not satisfied. Constraint is:",
163 cerr <<
"Expecting: " << aEval <<
" == " << bEval << endl;
164 cerr <<
"Variable assignments are:" << endl;
166 for (
const Variable &var : varSet) {
167 cerr << var.name() <<
": " << assignment.at(var).asString()
172 libff::UNUSED(printOnFail);
192 retSet.insert(aSet.begin(), aSet.end());
194 retSet.insert(bSet.begin(), bSet.end());
229 retVal += (*i)->annotation() +
'\n';
238 const Variable::set curSet = pConstraint->getUsedVariables();
239 retSet.insert(curSet.begin(), curSet.end());
FElem eval(const VariableAssignment &assignment) const
::std::string name() const
Constraint(const ::std::string &name)
::std::string asString() const
::std::string annotation() const
FElem eval(const VariableAssignment &assignment) const
void addConstraint(const Rank1Constraint &c)
LinearCombination c() const
::std::string GADGETLIB2_FMT(const char *format,...)
::std::vector< ConstraintPtr > constraintsPtrs_
@ DBG_PRINT_IF_NOT_SATISFIED
Variable::set getUsedVariables() const
::std::map< Variable, FElem, Variable::VariableStrictOrder > VariableAssignment
virtual bool isSatisfied(const VariableAssignment &assignment, const PrintOptions &printOnFail=PrintOptions::NO_DBG_PRINT) const
::std::string annotation() const
virtual ::std::string annotation() const
::std::set< Variable, VariableStrictOrder > set
A set of Variables should be declared as follows: Variable::set s1;.
const Variable::set getUsedVariables() const
Rank1Constraint(const LinearCombination &a, const LinearCombination &b, const LinearCombination &c, const ::std::string &name)
bool isSatisfied(const VariableAssignment &assignment, const PrintOptions &printOnFail=PrintOptions::NO_DBG_PRINT) const
virtual const Variable::set getUsedVariables() const
A formal variable, field agnostic.
LinearCombination b() const
virtual const Variable::set getUsedVariables() const
const Variable::set getUsedVariables() const
LinearCombination a() const
bool isSatisfied(const VariableAssignment &assignment, const PrintOptions &printOnFail=PrintOptions::NO_DBG_PRINT) const
::std::string asString() const
PolynomialConstraint(const Polynomial &a, const Polynomial &b, const ::std::string &name)
::std::string asString() const