isomatch
Classes | Typedefs | Functions
groupEquality Namespace Reference

Classes

class  Permutation
 
class  TooManyPermutations
 

Typedefs

typedef std::vector< std::vector< CircuitTree * > > SigSplit
 
typedef std::unordered_map< sign_t, std::set< CircuitTree * > > SigSplitMapped
 

Functions

int factorial (int k)
 Computes k! More...
 
sign_t wireSignature (WireId *wire, int accuracy=-1)
 Computes the signature of a wire with given accuracy. More...
 
void splitOnSig (const vector< CircuitTree *> circuits, SigSplit &splitted, std::vector< sign_t > &signatures, int maxPermutations, int accuracy)
 
bool equalSizes (const SigSplit &fst, const SigSplit &snd)
 
bool equalWithPermutation (const SigSplit &leftSplit, const SigSplit &rightSplit, const Permutation &perm)
 
bool equal (CircuitGroup *left, CircuitGroup *right)
 
void splitOnSig (const std::vector< CircuitTree *> circuits, SigSplit &splitted, std::vector< sign_t > &signatures, int maxPermutations=-1, int accuracy=-1)
 

Detailed Description

Contains a few useful functions to check whether a group is equal to another group (formally). Included for CircuitGroup.

Typedef Documentation

◆ SigSplit

typedef std::vector<std::vector<CircuitTree*> > groupEquality::SigSplit

◆ SigSplitMapped

typedef std::unordered_map<sign_t, std::set<CircuitTree*> > groupEquality::SigSplitMapped

Function Documentation

◆ equal()

bool groupEquality::equal ( CircuitGroup left,
CircuitGroup right 
)

◆ equalSizes()

bool groupEquality::equalSizes ( const SigSplit fst,
const SigSplit snd 
)

Checks that both fst and snd have the same keys, and sets of equal sizes for each key.

◆ equalWithPermutation()

bool groupEquality::equalWithPermutation ( const SigSplit leftSplit,
const SigSplit rightSplit,
const Permutation perm 
)

◆ factorial()

int groupEquality::factorial ( int  k)

Computes k!

◆ splitOnSig() [1/2]

void groupEquality::splitOnSig ( const std::vector< CircuitTree *>  circuits,
SigSplit splitted,
std::vector< sign_t > &  signatures,
int  maxPermutations = -1,
int  accuracy = -1 
)

Splits a set of circuits into sets of circuits with the same signatures

Parameters
circuitsThe wires to consider
splittedA reference to the vector that will be filled
signaturesWill be filled with the list of signatures of each chunk from splitted
maxPermutationsStop if the number of permutations exceeds this parameter, and raise TooManyPermutations
accuracyLevel of accuracy of the signature function, or -1 for the default value

◆ splitOnSig() [2/2]

void groupEquality::splitOnSig ( const vector< CircuitTree *>  circuits,
SigSplit splitted,
std::vector< sign_t > &  signatures,
int  maxPermutations,
int  accuracy 
)

◆ wireSignature()

sign_t groupEquality::wireSignature ( WireId wire,
int  accuracy 
)

Computes the signature of a wire with given accuracy.