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

#include <gadget.hpp>

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

Public Member Functions

void generateConstraints ()
 
void generateWitness ()
 
- 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 LinearCombination &condition, const FlagVariable &flag)
 

Additional Inherited Members

- Protected Attributes inherited from gadgetlib2::Gadget
ProtoboardPtr pb_
 

Detailed Description

A gadget for the following semantics: condition == 1 --> flag = 1 Uses 1 constraint

Definition at line 772 of file gadget.hpp.

Member Function Documentation

◆ create()

GadgetPtr gadgetlib2::LogicImplication_Gadget::create ( ProtoboardPtr  pb,
const LinearCombination condition,
const FlagVariable flag 
)
static

Definition at line 1069 of file gadget.cpp.

1073 {
1074  GadgetPtr pGadget(new LogicImplication_Gadget(pb, condition, flag));
1075  pGadget->init();
1076  return pGadget;
1077 }

◆ generateConstraints()

void gadgetlib2::LogicImplication_Gadget::generateConstraints ( )
virtual

Implements gadgetlib2::Gadget.

Definition at line 1079 of file gadget.cpp.

1080 {
1081  pb_->addRank1Constraint(
1082  condition_, negate(flag_), 0, "condition * not(flag) = 0");
1083 }
Here is the call graph for this function:

◆ generateWitness()

void gadgetlib2::LogicImplication_Gadget::generateWitness ( )
virtual

Reimplemented from gadgetlib2::Gadget.

Definition at line 1085 of file gadget.cpp.

1086 {
1087  if (val(condition_) == 1) {
1088  val(flag_) = 1;
1089  }
1090 }
Here is the call graph for this function:

The documentation for this class was generated from the following files:
gadgetlib2::negate
LinearCombination negate(const LinearCombination &lc)
Definition: variable.cpp:625
gadgetlib2::Gadget::val
FElem & val(const Variable &var)
Definition: gadget.hpp:109
gadgetlib2::GadgetPtr
::std::shared_ptr< Gadget > GadgetPtr
Definition: gadget.hpp:119
gadgetlib2::Gadget::pb_
ProtoboardPtr pb_
Definition: gadget.hpp:87