Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
BigGroupBase< Builder, BigGroupType, _use_bigfield, BigfieldScalar >::Instruction Class Reference

#include <biggroup.fuzzer.hpp>

Classes

struct  ArgumentContents
 
struct  BatchMulArgs
 
struct  Element
 
struct  FourArgs
 
struct  MulArgs
 
struct  OneArg
 
struct  ThreeArgs
 
struct  TwoArgs
 

Public Types

enum  OPCODE {
  CONSTANT , WITNESS , CONSTANT_WITNESS , ASSERT_EQUAL ,
  COND_ASSIGN , SET , ADD , SUBTRACT ,
  NEG , DBL , MULTIPLY , BATCH_MUL ,
  VALIDATE_ON_CURVE , RANDOMSEED , _LAST
}
 

Static Public Member Functions

template<typename T >
requires SimpleRng<T>
static Instruction generateRandom (T &rng)
 Generates a random instruction.
 
template<typename FF >
static uint256_t to_uint256_montgomery (const FF &value, bool as_montgomery)
 Convert a scalar field element to uint256_t, optionally using Montgomery form.
 
template<typename FF >
static FF from_uint256_montgomery (const uint256_t &data, bool from_montgomery)
 Convert uint256_t back to scalar field element, optionally from Montgomery form.
 
template<typename T >
requires SimpleRng<T>
static Element mutateGroupElement (Element e, T &rng, HavocSettings &havoc_config)
 Mutate the value of a group element.
 
template<typename T >
requires SimpleRng<T>
static ScalarField mutateScalarElement (ScalarField e, T &rng, HavocSettings &havoc_config)
 Mutate the value of a scalar element.
 
template<typename T >
requires SimpleRng<T>
static Instruction mutateInstruction (Instruction instruction, T &rng, HavocSettings &havoc_config)
 Mutate a single instruction.
 

Public Attributes

OPCODE id
 
ArgumentContents arguments
 

Detailed Description

template<typename Builder, typename BigGroupType, bool _use_bigfield = false, typename BigfieldScalar = typename BigGroupType::ScalarField>
class BigGroupBase< Builder, BigGroupType, _use_bigfield, BigfieldScalar >::Instruction

Definition at line 242 of file biggroup.fuzzer.hpp.

Member Enumeration Documentation

◆ OPCODE

template<typename Builder , typename BigGroupType , bool _use_bigfield = false, typename BigfieldScalar = typename BigGroupType::ScalarField>
enum BigGroupBase::Instruction::OPCODE
Enumerator
CONSTANT 
WITNESS 
CONSTANT_WITNESS 
ASSERT_EQUAL 
COND_ASSIGN 
SET 
ADD 
SUBTRACT 
NEG 
DBL 
MULTIPLY 
BATCH_MUL 
VALIDATE_ON_CURVE 
RANDOMSEED 
_LAST 

Definition at line 244 of file biggroup.fuzzer.hpp.

Member Function Documentation

◆ from_uint256_montgomery()

template<typename Builder , typename BigGroupType , bool _use_bigfield = false, typename BigfieldScalar = typename BigGroupType::ScalarField>
template<typename FF >
static FF BigGroupBase< Builder, BigGroupType, _use_bigfield, BigfieldScalar >::Instruction::from_uint256_montgomery ( const uint256_t data,
bool  from_montgomery 
)
inlinestatic

Convert uint256_t back to scalar field element, optionally from Montgomery form.

Definition at line 434 of file biggroup.fuzzer.hpp.

◆ generateRandom()

template<typename Builder , typename BigGroupType , bool _use_bigfield = false, typename BigfieldScalar = typename BigGroupType::ScalarField>
template<typename T >
requires SimpleRng<T>
static Instruction BigGroupBase< Builder, BigGroupType, _use_bigfield, BigfieldScalar >::Instruction::generateRandom ( T &  rng)
inlinestatic

Generates a random instruction.

Template Parameters
TPRNG class type
Parameters
rngPRNG used
Returns
Instruction

Definition at line 336 of file biggroup.fuzzer.hpp.

◆ mutateGroupElement()

template<typename Builder , typename BigGroupType , bool _use_bigfield = false, typename BigfieldScalar = typename BigGroupType::ScalarField>
template<typename T >
requires SimpleRng<T>
static Element BigGroupBase< Builder, BigGroupType, _use_bigfield, BigfieldScalar >::Instruction::mutateGroupElement ( Element  e,
T &  rng,
HavocSettings havoc_config 
)
inlinestatic

Mutate the value of a group element.

Template Parameters
TPRNG class
Parameters
eInitial element value
rngPRNG
havoc_configMutation configuration
Returns
Mutated element

Definition at line 452 of file biggroup.fuzzer.hpp.

◆ mutateInstruction()

template<typename Builder , typename BigGroupType , bool _use_bigfield = false, typename BigfieldScalar = typename BigGroupType::ScalarField>
template<typename T >
requires SimpleRng<T>
static Instruction BigGroupBase< Builder, BigGroupType, _use_bigfield, BigfieldScalar >::Instruction::mutateInstruction ( Instruction  instruction,
T &  rng,
HavocSettings havoc_config 
)
inlinestatic

Mutate a single instruction.

Template Parameters
TPRNG class
Parameters
instructionThe instruction
rngPRNG
havoc_configMutation configuration
Returns
Mutated instruction

Definition at line 601 of file biggroup.fuzzer.hpp.

◆ mutateScalarElement()

template<typename Builder , typename BigGroupType , bool _use_bigfield = false, typename BigfieldScalar = typename BigGroupType::ScalarField>
template<typename T >
requires SimpleRng<T>
static ScalarField BigGroupBase< Builder, BigGroupType, _use_bigfield, BigfieldScalar >::Instruction::mutateScalarElement ( ScalarField  e,
T &  rng,
HavocSettings havoc_config 
)
inlinestatic

Mutate the value of a scalar element.

Template Parameters
TPRNG class
Parameters
eInitial scalar value
rngPRNG
havoc_configMutation configuration
Returns
Mutated element

Definition at line 533 of file biggroup.fuzzer.hpp.

◆ to_uint256_montgomery()

template<typename Builder , typename BigGroupType , bool _use_bigfield = false, typename BigfieldScalar = typename BigGroupType::ScalarField>
template<typename FF >
static uint256_t BigGroupBase< Builder, BigGroupType, _use_bigfield, BigfieldScalar >::Instruction::to_uint256_montgomery ( const FF value,
bool  as_montgomery 
)
inlinestatic

Convert a scalar field element to uint256_t, optionally using Montgomery form.

Definition at line 423 of file biggroup.fuzzer.hpp.

Member Data Documentation

◆ arguments

template<typename Builder , typename BigGroupType , bool _use_bigfield = false, typename BigfieldScalar = typename BigGroupType::ScalarField>
ArgumentContents BigGroupBase< Builder, BigGroupType, _use_bigfield, BigfieldScalar >::Instruction::arguments

Definition at line 326 of file biggroup.fuzzer.hpp.

◆ id

template<typename Builder , typename BigGroupType , bool _use_bigfield = false, typename BigfieldScalar = typename BigGroupType::ScalarField>
OPCODE BigGroupBase< Builder, BigGroupType, _use_bigfield, BigfieldScalar >::Instruction::id

Definition at line 323 of file biggroup.fuzzer.hpp.


The documentation for this class was generated from the following file: