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

#include <adapters.hpp>

Public Types

typedef unsigned long variable_index_t
 
typedef gadgetlib2::Fp Fp_elem_t
 
typedef ::std::pair< variable_index_t, Fp_elem_tlinear_term_t
 
typedef ::std::vector< linear_term_tsparse_vec_t
 
typedef ::std::pair< sparse_vec_t, Fp_elem_tlinear_combination_t
 
typedef ::std::tuple< linear_combination_t, linear_combination_t, linear_combination_tconstraint_t
 
typedef ::std::vector< constraint_tconstraint_sys_t
 
typedef ::std::map< variable_index_t, Fp_elem_tassignment_t
 
typedef ::std::pair< constraint_sys_t, assignment_tprotoboard_t
 

Public Member Functions

 GadgetLibAdapter ()
 
linear_term_t convert (const LinearTerm &lt) const
 
linear_combination_t convert (const LinearCombination &lc) const
 
constraint_t convert (const Constraint &constraint) const
 
constraint_sys_t convert (const ConstraintSystem &constraint_sys) const
 
assignment_t convert (const VariableAssignment &assignment) const
 
protoboard_t convert (const Protoboard &pb) const
 
Fp_elem_t convert (FElem fElem) const
 

Static Public Member Functions

static void resetVariableIndex ()
 
static size_t getNextFreeIndex ()
 
static size_t getVariableIndex (const Variable &v)
 

Detailed Description

This class is a temporary hack for quick integration of Fp constraints with ppsnark. It is the IDDQD of classes and has "god mode" friend access to many of the gadgetlib classes. This will be refactored out in the future. –Shaul

Definition at line 37 of file adapters.hpp.

Member Typedef Documentation

◆ assignment_t

Definition at line 49 of file adapters.hpp.

◆ constraint_sys_t

Definition at line 48 of file adapters.hpp.

◆ constraint_t

Definition at line 47 of file adapters.hpp.

◆ Fp_elem_t

Definition at line 41 of file adapters.hpp.

◆ linear_combination_t

Definition at line 44 of file adapters.hpp.

◆ linear_term_t

Definition at line 42 of file adapters.hpp.

◆ protoboard_t

Definition at line 50 of file adapters.hpp.

◆ sparse_vec_t

Definition at line 43 of file adapters.hpp.

◆ variable_index_t

Definition at line 40 of file adapters.hpp.

Constructor & Destructor Documentation

◆ GadgetLibAdapter()

gadgetlib2::GadgetLibAdapter::GadgetLibAdapter ( )
inline

Definition at line 52 of file adapters.hpp.

52 {};

Member Function Documentation

◆ convert() [1/7]

GLA::constraint_t gadgetlib2::GLA::convert ( const Constraint constraint) const

Definition at line 38 of file adapters.cpp.

39 {
40  const auto rank1_constraint =
41  dynamic_cast<const Rank1Constraint &>(constraint);
42  return constraint_t(
43  convert(rank1_constraint.a()),
44  convert(rank1_constraint.b()),
45  convert(rank1_constraint.c()));
46 }
Here is the call graph for this function:

◆ convert() [2/7]

GLA::constraint_sys_t gadgetlib2::GLA::convert ( const ConstraintSystem constraint_sys) const

Definition at line 48 of file adapters.cpp.

49 {
50  constraint_sys_t retval;
51  retval.reserve(constraint_sys.constraintsPtrs_.size());
52  for (auto constraintPtr : constraint_sys.constraintsPtrs_) {
53  retval.emplace_back(convert(*constraintPtr));
54  }
55  return retval;
56 }
Here is the call graph for this function:

◆ convert() [3/7]

GLA::linear_combination_t gadgetlib2::GLA::convert ( const LinearCombination lc) const

Definition at line 27 of file adapters.cpp.

28 {
29  sparse_vec_t sparse_vec;
30  sparse_vec.reserve(lc.linearTerms_.size());
31  for (auto lt : lc.linearTerms_) {
32  sparse_vec.emplace_back(convert(lt));
33  }
34  const Fp_elem_t offset = convert(lc.constant_);
35  return {sparse_vec, offset};
36 }
Here is the call graph for this function:

◆ convert() [4/7]

GLA::linear_term_t gadgetlib2::GLA::convert ( const LinearTerm lt) const

Definition at line 20 of file adapters.cpp.

21 {
22  const variable_index_t var = lt.variable_.index_;
23  const Fp_elem_t coeff = convert(lt.coeff_);
24  return {var, coeff};
25 }
Here is the caller graph for this function:

◆ convert() [5/7]

GLA::protoboard_t gadgetlib2::GLA::convert ( const Protoboard pb) const

Definition at line 88 of file adapters.cpp.

89 {
90  // GADGETLIB_ASSERT(pb.numVars()==getNextFreeIndex(), "Some Variables were
91  // created and not used, or, more than one protoboard was used.");
92  return protoboard_t(
94 }
Here is the call graph for this function:

◆ convert() [6/7]

GLA::assignment_t gadgetlib2::GLA::convert ( const VariableAssignment assignment) const

Definition at line 58 of file adapters.cpp.

59 {
60  assignment_t retval;
61  for (const auto &assignmentPair : assignment) {
62  const variable_index_t var = assignmentPair.first.index_;
63  const Fp_elem_t elem = convert(assignmentPair.second);
64  retval[var] = elem;
65  }
66  return retval;
67 }
Here is the call graph for this function:

◆ convert() [7/7]

GLA::Fp_elem_t gadgetlib2::GLA::convert ( FElem  fElem) const

Definition at line 96 of file adapters.cpp.

97 {
99  fElem.promoteToFieldType(
100  gadgetlib2::R1P); // convert fElem from FConst to R1P_Elem
101  const R1P_Elem *pR1P = dynamic_cast<R1P_Elem *>(fElem.elem_.get());
102  return pR1P->elem_;
103 }
Here is the call graph for this function:

◆ getNextFreeIndex()

static size_t gadgetlib2::GadgetLibAdapter::getNextFreeIndex ( )
inlinestatic

Definition at line 63 of file adapters.hpp.

63 { return Variable::nextFreeIndex_; }

◆ getVariableIndex()

static size_t gadgetlib2::GadgetLibAdapter::getVariableIndex ( const Variable v)
inlinestatic

Definition at line 66 of file adapters.hpp.

66 { return v.index_; }

◆ resetVariableIndex()

void gadgetlib2::GLA::resetVariableIndex ( )
static

Resets variable index to 0 to make variable indices deterministic.

Definition at line 69 of file adapters.cpp.

70 { // This is a hack, used for testing
71  Variable::nextFreeIndex_ = 0;
72 }
Here is the caller graph for this function:

The documentation for this class was generated from the following files:
gadgetlib2::FElem::promoteToFieldType
void promoteToFieldType(FieldType type)
Definition: variable.cpp:86
gadgetlib2::GadgetLibAdapter::constraint_t
::std::tuple< linear_combination_t, linear_combination_t, linear_combination_t > constraint_t
Definition: adapters.hpp:47
gadgetlib2::GadgetLibAdapter::convert
linear_term_t convert(const LinearTerm &lt) const
Definition: adapters.cpp:20
gadgetlib2::ConstraintSystem::constraintsPtrs_
::std::vector< ConstraintPtr > constraintsPtrs_
Definition: constraint.hpp:157
gadgetlib2::GadgetLibAdapter::constraint_sys_t
::std::vector< constraint_t > constraint_sys_t
Definition: adapters.hpp:48
gadgetlib2::Protoboard::constraintSystem
ConstraintSystem constraintSystem() const
Definition: protoboard.hpp:101
gadgetlib2::GadgetLibAdapter::sparse_vec_t
::std::vector< linear_term_t > sparse_vec_t
Definition: adapters.hpp:43
gadgetlib2::GadgetLibAdapter::Fp_elem_t
gadgetlib2::Fp Fp_elem_t
Definition: adapters.hpp:41
gadgetlib2::LinearCombination::constant_
FElem constant_
Definition: variable.hpp:507
gadgetlib2::GadgetLibAdapter::variable_index_t
unsigned long variable_index_t
Definition: adapters.hpp:40
gadgetlib2::GadgetLibAdapter::assignment_t
::std::map< variable_index_t, Fp_elem_t > assignment_t
Definition: adapters.hpp:49
gadgetlib2::Protoboard::assignment
VariableAssignment assignment() const
Definition: protoboard.hpp:102
gadgetlib2::Rank1Constraint
Definition: constraint.hpp:83
gadgetlib2::LinearCombination::linearTerms_
::std::vector< LinearTerm > linearTerms_
Definition: variable.hpp:506
gadgetlib2::GadgetLibAdapter::protoboard_t
::std::pair< constraint_sys_t, assignment_t > protoboard_t
Definition: adapters.hpp:50
gadgetlib2::R1P
@ R1P
Definition: variable.hpp:37
gadgetlib2::R1P_Elem
Definition: variable.hpp:245