Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
cycle_group.test.cpp File Reference

Go to the source code of this file.

Classes

class  CycleGroupTest< Builder >
 

Macros

#define STDLIB_TYPE_ALIASES
 

Typedefs

using CircuitTypes = ::testing::Types< bb::UltraCircuitBuilder, bb::MegaCircuitBuilder >
 

Functions

 TYPED_TEST_SUITE (CycleGroupTest, CircuitTypes)
 
STANDARD_TESTING_TAGS TYPED_TEST (CycleGroupTest, TestBasicTagLogic)
 Check basic tag interactions.
 
 TYPED_TEST (CycleGroupTest, TestInfConstantWintnessRegression)
 Checks that a point at infinity passes the constant_witness initialization.
 
 TYPED_TEST (CycleGroupTest, TestWitnessSumRegression)
 Checks that the result of adding two witness values is not constant.
 
 TYPED_TEST (CycleGroupTest, TestOperatorNegRegression)
 Checks that adding operator-(value) to an existing value does not result into error.
 
 TYPED_TEST (CycleGroupTest, TestConstantWitnessMixupRegression)
 Checks the mixup bad behavior found by fuzzer.
 
 TYPED_TEST (CycleGroupTest, TestConditionalAssignRegression)
 Checks the bad behavior of conditional assign.
 
 TYPED_TEST (CycleGroupTest, TestConditionalAssignSuperMixupRegression)
 Checks the bad behavior of conditional assign.
 
 TYPED_TEST (CycleGroupTest, TestValidateOnCurveSucceed)
 Checks that a point on the curve passes the validate_on_curve check.
 
 TYPED_TEST (CycleGroupTest, TestValidateOnCurveInfinitySucceed)
 Checks that the point at infinity passes the validate_on_curve check.
 
 TYPED_TEST (CycleGroupTest, TestValidateOnCurveFail)
 Checks that a point that is not on the curve but not marked as the point at infinity fails the validate_on_curve check.
 
 TYPED_TEST (CycleGroupTest, TestValidateOnCurveFail2)
 Checks that a point that is not on the curve but not marked as the point at infinity fails the validate_on_curve check.
 
 TYPED_TEST (CycleGroupTest, TestStandardForm)
 
 TYPED_TEST (CycleGroupTest, TestDbl)
 
 TYPED_TEST (CycleGroupTest, TestDblNonConstantPoints)
 
 TYPED_TEST (CycleGroupTest, TestDblConstantPoints)
 
 TYPED_TEST (CycleGroupTest, TestDblMixedConstantWitness)
 
 TYPED_TEST (CycleGroupTest, TestUnconditionalAddNonConstantPoints)
 
 TYPED_TEST (CycleGroupTest, TestUnconditionalAddConstantPoints)
 
 TYPED_TEST (CycleGroupTest, TestUnconditionalSubtractNonConstantPoints)
 
 TYPED_TEST (CycleGroupTest, TestUnconditionalSubtractConstantPoints)
 
 TYPED_TEST (CycleGroupTest, TestUnconditionalAdd)
 
 TYPED_TEST (CycleGroupTest, TestConstrainedUnconditionalAddSucceed)
 
 TYPED_TEST (CycleGroupTest, TestConstrainedUnconditionalAddFail)
 
 TYPED_TEST (CycleGroupTest, TestAddRegular)
 
 TYPED_TEST (CycleGroupTest, TestAddLhsInfinity)
 
 TYPED_TEST (CycleGroupTest, TestAddRhsInfinity)
 
 TYPED_TEST (CycleGroupTest, TestAddBothInfinity)
 
 TYPED_TEST (CycleGroupTest, TestAddInversePoints)
 
 TYPED_TEST (CycleGroupTest, TestAddDoubling)
 
 TYPED_TEST (CycleGroupTest, TestAddConstantPoints)
 
 TYPED_TEST (CycleGroupTest, TestAddMixedConstantWitness)
 
 TYPED_TEST (CycleGroupTest, TestAddInfinityResultLogic)
 
 TYPED_TEST (CycleGroupTest, TestUnconditionalSubtract)
 
 TYPED_TEST (CycleGroupTest, TestConstrainedUnconditionalSubtractSucceed)
 
 TYPED_TEST (CycleGroupTest, TestConstrainedUnconditionalSubtractFail)
 
 TYPED_TEST (CycleGroupTest, TestSubtract)
 
 TYPED_TEST (CycleGroupTest, TestSubtractConstantPoints)
 
template<typename T1 , typename T2 >
auto assign_and_merge_tags (T1 &points, T2 &scalars)
 Assign different tags to all points and scalars and return the union of that tag.
 
 TYPED_TEST (CycleGroupTest, TestBatchMulGeneralMSM)
 
 TYPED_TEST (CycleGroupTest, TestBatchMulProducesInfinity)
 
 TYPED_TEST (CycleGroupTest, TestBatchMulMultiplyByZero)
 
 TYPED_TEST (CycleGroupTest, TestBatchMulInputsAreInfinity)
 
 TYPED_TEST (CycleGroupTest, TestBatchMulFixedBaseInLookupTable)
 
 TYPED_TEST (CycleGroupTest, TestBatchMulFixedBaseSomeInLookupTable)
 
 TYPED_TEST (CycleGroupTest, TestBatchMulFixedBaseZeroScalars)
 
 TYPED_TEST (CycleGroupTest, TestMul)
 
 TYPED_TEST (CycleGroupTest, TestOne)
 
 TYPED_TEST (CycleGroupTest, TestConversionFromBigfield)
 Ensures naive conversion from a bigfield representation of bb::fq (Grumpkin::ScalarField) to cycle_scalar preserves the same value until we implement a smarter function.
 
 TYPED_TEST (CycleGroupTest, TestBatchMulIsConsistent)
 
 TYPED_TEST (CycleGroupTest, TestFixedBaseBatchMul)
 Test fixed-base batch multiplication via the public batch_mul interface.
 
 TYPED_TEST (CycleGroupTest, TestInfinityChainedOperations)
 Test chained operations involving infinity.
 
 TYPED_TEST (CycleGroupTest, TestConditionalAssignWithInfinity)
 Test conditional_assign with infinity points.
 
 TYPED_TEST (CycleGroupTest, TestWitnessInfinityFromOperations)
 Test that witness infinity (created via operations like P - P) works correctly.
 
 TYPED_TEST (CycleGroupTest, TestBatchMulCompleteCancellation)
 Test batch_mul where all terms cancel to produce infinity.
 
 TYPED_TEST (CycleGroupTest, TestInfinityCanonicalRepresentation)
 Test that infinity is correctly identified after operations.
 
 TYPED_TEST (CycleGroupTest, TestInfinityAutoDetectionInConstructor)
 Test auto-detection of infinity in the 3-argument constructor.
 
 TYPED_TEST (CycleGroupTest, TestFixedBatchMul)
 Test fixed_batch_mul correctness with constant points and witness scalars.
 
 TYPED_TEST (CycleGroupTest, TestFixedBatchMulSinglePoint)
 Test fixed_batch_mul with a single constant point.
 
 TYPED_TEST (CycleGroupTest, TestFixedBatchMulZeroScalar)
 Test fixed_batch_mul with a zero scalar.
 

Macro Definition Documentation

◆ STDLIB_TYPE_ALIASES

#define STDLIB_TYPE_ALIASES
Value:
using Builder = TypeParam; \
using cycle_group_ct = stdlib::cycle_group<Builder>; \
using Element = typename Curve::Element; \
using AffineElement = typename Curve::AffineElement; \
using Group = typename Curve::Group; \
using bool_ct = stdlib::bool_t<Builder>; \
using cycle_scalar_ct = cycle_group_ct::cycle_scalar;
typename Group::element Element
Definition grumpkin.hpp:63
typename grumpkin::g1 Group
Definition grumpkin.hpp:62
typename Group::affine_element AffineElement
Definition grumpkin.hpp:64
Implements boolean logic in-circuit.
Definition bool.hpp:60
cycle_group represents a group Element of the proving system's embedded curve, i.e....
bb::curve::BN254::Element Element

Definition at line 17 of file cycle_group.test.cpp.

Typedef Documentation

◆ CircuitTypes

Definition at line 56 of file cycle_group.test.cpp.

Function Documentation

◆ assign_and_merge_tags()

template<typename T1 , typename T2 >
auto assign_and_merge_tags ( T1 &  points,
T2 &  scalars 
)

Assign different tags to all points and scalars and return the union of that tag.

We assign the tags with the same round index to a (point,scalar) pair, but the point is treated as submitted value, while scalar as a challenge. Merging these tags should not run into any edgecases

Definition at line 1372 of file cycle_group.test.cpp.

◆ TYPED_TEST() [1/58]

TYPED_TEST ( CycleGroupTest  ,
TestAddBothInfinity   
)

Definition at line 904 of file cycle_group.test.cpp.

◆ TYPED_TEST() [2/58]

TYPED_TEST ( CycleGroupTest  ,
TestAddConstantPoints   
)

Definition at line 977 of file cycle_group.test.cpp.

◆ TYPED_TEST() [3/58]

TYPED_TEST ( CycleGroupTest  ,
TestAddDoubling   
)

Definition at line 955 of file cycle_group.test.cpp.

◆ TYPED_TEST() [4/58]

TYPED_TEST ( CycleGroupTest  ,
TestAddInfinityResultLogic   
)

Definition at line 1064 of file cycle_group.test.cpp.

◆ TYPED_TEST() [5/58]

TYPED_TEST ( CycleGroupTest  ,
TestAddInversePoints   
)

Definition at line 932 of file cycle_group.test.cpp.

◆ TYPED_TEST() [6/58]

TYPED_TEST ( CycleGroupTest  ,
TestAddLhsInfinity   
)

Definition at line 851 of file cycle_group.test.cpp.

◆ TYPED_TEST() [7/58]

TYPED_TEST ( CycleGroupTest  ,
TestAddMixedConstantWitness   
)

Definition at line 1019 of file cycle_group.test.cpp.

◆ TYPED_TEST() [8/58]

TYPED_TEST ( CycleGroupTest  ,
TestAddRegular   
)

Definition at line 826 of file cycle_group.test.cpp.

◆ TYPED_TEST() [9/58]

TYPED_TEST ( CycleGroupTest  ,
TestAddRhsInfinity   
)

Definition at line 877 of file cycle_group.test.cpp.

◆ TYPED_TEST() [10/58]

STANDARD_TESTING_TAGS TYPED_TEST ( CycleGroupTest  ,
TestBasicTagLogic   
)

Check basic tag interactions.

Definition at line 67 of file cycle_group.test.cpp.

◆ TYPED_TEST() [11/58]

TYPED_TEST ( CycleGroupTest  ,
TestBatchMulCompleteCancellation   
)

Test batch_mul where all terms cancel to produce infinity.

Definition at line 1977 of file cycle_group.test.cpp.

◆ TYPED_TEST() [12/58]

TYPED_TEST ( CycleGroupTest  ,
TestBatchMulFixedBaseInLookupTable   
)

Definition at line 1532 of file cycle_group.test.cpp.

◆ TYPED_TEST() [13/58]

TYPED_TEST ( CycleGroupTest  ,
TestBatchMulFixedBaseSomeInLookupTable   
)

Definition at line 1570 of file cycle_group.test.cpp.

◆ TYPED_TEST() [14/58]

TYPED_TEST ( CycleGroupTest  ,
TestBatchMulFixedBaseZeroScalars   
)

Definition at line 1620 of file cycle_group.test.cpp.

◆ TYPED_TEST() [15/58]

TYPED_TEST ( CycleGroupTest  ,
TestBatchMulGeneralMSM   
)

Definition at line 1386 of file cycle_group.test.cpp.

◆ TYPED_TEST() [16/58]

TYPED_TEST ( CycleGroupTest  ,
TestBatchMulInputsAreInfinity   
)

Definition at line 1494 of file cycle_group.test.cpp.

◆ TYPED_TEST() [17/58]

TYPED_TEST ( CycleGroupTest  ,
TestBatchMulIsConsistent   
)

Definition at line 1748 of file cycle_group.test.cpp.

◆ TYPED_TEST() [18/58]

TYPED_TEST ( CycleGroupTest  ,
TestBatchMulMultiplyByZero   
)

Definition at line 1468 of file cycle_group.test.cpp.

◆ TYPED_TEST() [19/58]

TYPED_TEST ( CycleGroupTest  ,
TestBatchMulProducesInfinity   
)

Definition at line 1437 of file cycle_group.test.cpp.

◆ TYPED_TEST() [20/58]

TYPED_TEST ( CycleGroupTest  ,
TestConditionalAssignRegression   
)

Checks the bad behavior of conditional assign.

Definition at line 191 of file cycle_group.test.cpp.

◆ TYPED_TEST() [21/58]

TYPED_TEST ( CycleGroupTest  ,
TestConditionalAssignSuperMixupRegression   
)

Checks the bad behavior of conditional assign.

Definition at line 207 of file cycle_group.test.cpp.

◆ TYPED_TEST() [22/58]

TYPED_TEST ( CycleGroupTest  ,
TestConditionalAssignWithInfinity   
)

Test conditional_assign with infinity points.

Tests that cycle_group::conditional_assign correctly handles infinity points

Definition at line 1893 of file cycle_group.test.cpp.

◆ TYPED_TEST() [23/58]

TYPED_TEST ( CycleGroupTest  ,
TestConstantWitnessMixupRegression   
)

Checks the mixup bad behavior found by fuzzer.

Definition at line 168 of file cycle_group.test.cpp.

◆ TYPED_TEST() [24/58]

TYPED_TEST ( CycleGroupTest  ,
TestConstrainedUnconditionalAddFail   
)

Definition at line 806 of file cycle_group.test.cpp.

◆ TYPED_TEST() [25/58]

TYPED_TEST ( CycleGroupTest  ,
TestConstrainedUnconditionalAddSucceed   
)

Definition at line 787 of file cycle_group.test.cpp.

◆ TYPED_TEST() [26/58]

TYPED_TEST ( CycleGroupTest  ,
TestConstrainedUnconditionalSubtractFail   
)

Definition at line 1191 of file cycle_group.test.cpp.

◆ TYPED_TEST() [27/58]

TYPED_TEST ( CycleGroupTest  ,
TestConstrainedUnconditionalSubtractSucceed   
)

Definition at line 1172 of file cycle_group.test.cpp.

◆ TYPED_TEST() [28/58]

TYPED_TEST ( CycleGroupTest  ,
TestConversionFromBigfield   
)

Ensures naive conversion from a bigfield representation of bb::fq (Grumpkin::ScalarField) to cycle_scalar preserves the same value until we implement a smarter function.

Definition at line 1719 of file cycle_group.test.cpp.

◆ TYPED_TEST() [29/58]

TYPED_TEST ( CycleGroupTest  ,
TestDbl   
)

Definition at line 366 of file cycle_group.test.cpp.

◆ TYPED_TEST() [30/58]

TYPED_TEST ( CycleGroupTest  ,
TestDblConstantPoints   
)

Definition at line 453 of file cycle_group.test.cpp.

◆ TYPED_TEST() [31/58]

TYPED_TEST ( CycleGroupTest  ,
TestDblMixedConstantWitness   
)

Definition at line 526 of file cycle_group.test.cpp.

◆ TYPED_TEST() [32/58]

TYPED_TEST ( CycleGroupTest  ,
TestDblNonConstantPoints   
)

Definition at line 395 of file cycle_group.test.cpp.

◆ TYPED_TEST() [33/58]

TYPED_TEST ( CycleGroupTest  ,
TestFixedBaseBatchMul   
)

Test fixed-base batch multiplication via the public batch_mul interface.

Tests that the fixed-base MSM works correctly for the two supported Pedersen generators

Definition at line 1799 of file cycle_group.test.cpp.

◆ TYPED_TEST() [34/58]

TYPED_TEST ( CycleGroupTest  ,
TestFixedBatchMul   
)

Test fixed_batch_mul correctness with constant points and witness scalars.

Definition at line 2087 of file cycle_group.test.cpp.

◆ TYPED_TEST() [35/58]

TYPED_TEST ( CycleGroupTest  ,
TestFixedBatchMulSinglePoint   
)

Test fixed_batch_mul with a single constant point.

Definition at line 2116 of file cycle_group.test.cpp.

◆ TYPED_TEST() [36/58]

TYPED_TEST ( CycleGroupTest  ,
TestFixedBatchMulZeroScalar   
)

Test fixed_batch_mul with a zero scalar.

Definition at line 2139 of file cycle_group.test.cpp.

◆ TYPED_TEST() [37/58]

TYPED_TEST ( CycleGroupTest  ,
TestInfConstantWintnessRegression   
)

Checks that a point at infinity passes the constant_witness initialization.

Definition at line 113 of file cycle_group.test.cpp.

◆ TYPED_TEST() [38/58]

TYPED_TEST ( CycleGroupTest  ,
TestInfinityAutoDetectionInConstructor   
)

Test auto-detection of infinity in the 3-argument constructor.

When coordinates are (0, 0), the point should be auto-detected as infinity

Definition at line 2065 of file cycle_group.test.cpp.

◆ TYPED_TEST() [39/58]

TYPED_TEST ( CycleGroupTest  ,
TestInfinityCanonicalRepresentation   
)

Test that infinity is correctly identified after operations.

Definition at line 2015 of file cycle_group.test.cpp.

◆ TYPED_TEST() [40/58]

TYPED_TEST ( CycleGroupTest  ,
TestInfinityChainedOperations   
)

Test chained operations involving infinity.

Tests that operations like (a + infinity) - a = infinity work correctly

Definition at line 1835 of file cycle_group.test.cpp.

◆ TYPED_TEST() [41/58]

TYPED_TEST ( CycleGroupTest  ,
TestMul   
)

Definition at line 1650 of file cycle_group.test.cpp.

◆ TYPED_TEST() [42/58]

TYPED_TEST ( CycleGroupTest  ,
TestOne   
)

Definition at line 1703 of file cycle_group.test.cpp.

◆ TYPED_TEST() [43/58]

TYPED_TEST ( CycleGroupTest  ,
TestOperatorNegRegression   
)

Checks that adding operator-(value) to an existing value does not result into error.

Definition at line 148 of file cycle_group.test.cpp.

◆ TYPED_TEST() [44/58]

TYPED_TEST ( CycleGroupTest  ,
TestStandardForm   
)

Definition at line 301 of file cycle_group.test.cpp.

◆ TYPED_TEST() [45/58]

TYPED_TEST ( CycleGroupTest  ,
TestSubtract   
)

Definition at line 1209 of file cycle_group.test.cpp.

◆ TYPED_TEST() [46/58]

TYPED_TEST ( CycleGroupTest  ,
TestSubtractConstantPoints   
)

Definition at line 1307 of file cycle_group.test.cpp.

◆ TYPED_TEST() [47/58]

TYPED_TEST ( CycleGroupTest  ,
TestUnconditionalAdd   
)

Definition at line 759 of file cycle_group.test.cpp.

◆ TYPED_TEST() [48/58]

TYPED_TEST ( CycleGroupTest  ,
TestUnconditionalAddConstantPoints   
)

Definition at line 609 of file cycle_group.test.cpp.

◆ TYPED_TEST() [49/58]

TYPED_TEST ( CycleGroupTest  ,
TestUnconditionalAddNonConstantPoints   
)

Definition at line 548 of file cycle_group.test.cpp.

◆ TYPED_TEST() [50/58]

TYPED_TEST ( CycleGroupTest  ,
TestUnconditionalSubtract   
)

Definition at line 1143 of file cycle_group.test.cpp.

◆ TYPED_TEST() [51/58]

TYPED_TEST ( CycleGroupTest  ,
TestUnconditionalSubtractConstantPoints   
)

Definition at line 715 of file cycle_group.test.cpp.

◆ TYPED_TEST() [52/58]

TYPED_TEST ( CycleGroupTest  ,
TestUnconditionalSubtractNonConstantPoints   
)

Definition at line 653 of file cycle_group.test.cpp.

◆ TYPED_TEST() [53/58]

TYPED_TEST ( CycleGroupTest  ,
TestValidateOnCurveFail   
)

Checks that a point that is not on the curve but not marked as the point at infinity fails the validate_on_curve check.

(1, 1) is not on the either the Grumpkin curve or the BN254 curve.

Definition at line 263 of file cycle_group.test.cpp.

◆ TYPED_TEST() [54/58]

TYPED_TEST ( CycleGroupTest  ,
TestValidateOnCurveFail2   
)

Checks that a point that is not on the curve but not marked as the point at infinity fails the validate_on_curve check.

(1, 1) is not on the either the Grumpkin curve or the BN254 curve.

Definition at line 284 of file cycle_group.test.cpp.

◆ TYPED_TEST() [55/58]

TYPED_TEST ( CycleGroupTest  ,
TestValidateOnCurveInfinitySucceed   
)

Checks that the point at infinity passes the validate_on_curve check.

Definition at line 247 of file cycle_group.test.cpp.

◆ TYPED_TEST() [56/58]

TYPED_TEST ( CycleGroupTest  ,
TestValidateOnCurveSucceed   
)

Checks that a point on the curve passes the validate_on_curve check.

Definition at line 227 of file cycle_group.test.cpp.

◆ TYPED_TEST() [57/58]

TYPED_TEST ( CycleGroupTest  ,
TestWitnessInfinityFromOperations   
)

Test that witness infinity (created via operations like P - P) works correctly.

This is different from constant_infinity() - it's an infinity point that resulted from circuit operations where the prover computes it.

Definition at line 1944 of file cycle_group.test.cpp.

◆ TYPED_TEST() [58/58]

TYPED_TEST ( CycleGroupTest  ,
TestWitnessSumRegression   
)

Checks that the result of adding two witness values is not constant.

Definition at line 129 of file cycle_group.test.cpp.

◆ TYPED_TEST_SUITE()

TYPED_TEST_SUITE ( CycleGroupTest  ,
CircuitTypes   
)