diff --git a/cpp/src/barretenberg/dsl/acir_format/block_constraint.test.cpp b/cpp/src/barretenberg/dsl/acir_format/block_constraint.test.cpp index 4c443e7e35..2ab53b8121 100644 --- a/cpp/src/barretenberg/dsl/acir_format/block_constraint.test.cpp +++ b/cpp/src/barretenberg/dsl/acir_format/block_constraint.test.cpp @@ -13,7 +13,7 @@ size_t generate_block_constraint(acir_format::BlockConstraint& constraint, acir_ witness_len++; fr two = fr::one() + fr::one(); - poly_triple a0 = poly_triple{ + poly_triple a0 = { .a = 1, .b = 0, .c = 0, @@ -24,7 +24,7 @@ size_t generate_block_constraint(acir_format::BlockConstraint& constraint, acir_ .q_c = 0, }; fr three = fr::one() + two; - poly_triple a1 = poly_triple{ + poly_triple a1 = { .a = 0, .b = 0, .c = 0, @@ -34,7 +34,7 @@ size_t generate_block_constraint(acir_format::BlockConstraint& constraint, acir_ .q_o = 0, .q_c = three, }; - poly_triple r1 = poly_triple{ + poly_triple r1 = { .a = 1, .b = 0, .c = 0, @@ -44,7 +44,7 @@ size_t generate_block_constraint(acir_format::BlockConstraint& constraint, acir_ .q_o = 0, .q_c = fr::neg_one(), }; - poly_triple r2 = poly_triple{ + poly_triple r2 = { .a = 1, .b = 0, .c = 0, @@ -54,7 +54,7 @@ size_t generate_block_constraint(acir_format::BlockConstraint& constraint, acir_ .q_o = 0, .q_c = fr::neg_one(), }; - poly_triple y = poly_triple{ + poly_triple y = { .a = 2, .b = 0, .c = 0, @@ -66,7 +66,7 @@ size_t generate_block_constraint(acir_format::BlockConstraint& constraint, acir_ }; witness_values.emplace_back(2); witness_len++; - poly_triple z = poly_triple{ + poly_triple z = { .a = 3, .b = 0, .c = 0, diff --git a/cpp/src/barretenberg/ecc/curves/bn254/bn254.hpp b/cpp/src/barretenberg/ecc/curves/bn254/bn254.hpp index 5b9bf43ce4..2fbf3540f3 100644 --- a/cpp/src/barretenberg/ecc/curves/bn254/bn254.hpp +++ b/cpp/src/barretenberg/ecc/curves/bn254/bn254.hpp @@ -16,6 +16,6 @@ class BN254 { using AffineElement = typename Group::affine_element; using G2AffineElement = typename barretenberg::g2::affine_element; using G2BaseField = typename barretenberg::fq2; - using Fq12 = barretenberg::fq12; + using TargetField = barretenberg::fq12; }; } // namespace curve \ No newline at end of file diff --git a/cpp/src/barretenberg/proof_system/arithmetization/gate_data.hpp b/cpp/src/barretenberg/proof_system/arithmetization/gate_data.hpp index 67dbdd95da..d61dc128eb 100644 --- a/cpp/src/barretenberg/proof_system/arithmetization/gate_data.hpp +++ b/cpp/src/barretenberg/proof_system/arithmetization/gate_data.hpp @@ -3,6 +3,9 @@ #include "barretenberg/ecc/curves/bn254/fr.hpp" #include "barretenberg/common/serialize.hpp" +// TODO(#557): The field-specific aliases for dates should be removed and the type could be made explicit when this +// structures are used to avoid having foo_gate and foo_gate_grumpkin. Moreover, we need to ensure the read/write +// functions handle grumpkin gates as well. namespace proof_system { template struct add_triple_ { uint32_t a; @@ -67,7 +70,6 @@ template struct poly_triple_ { using poly_triple = poly_triple_; -// TODO: figure out what to do with this... template inline void read(B& buf, poly_triple& constraint) { using serialize::read; @@ -80,7 +82,6 @@ template inline void read(B& buf, poly_triple& constraint) read(buf, constraint.q_o); read(buf, constraint.q_c); } -// TODO: and this.. template inline void write(B& buf, poly_triple const& constraint) { using serialize::write; diff --git a/cpp/src/barretenberg/proof_system/circuit_constructors/standard_circuit_constructor.cpp b/cpp/src/barretenberg/proof_system/circuit_constructors/standard_circuit_constructor.cpp index 50ea58f36f..215bea8282 100644 --- a/cpp/src/barretenberg/proof_system/circuit_constructors/standard_circuit_constructor.cpp +++ b/cpp/src/barretenberg/proof_system/circuit_constructors/standard_circuit_constructor.cpp @@ -46,9 +46,9 @@ template void StandardCircuitConstructor_::create_big_add_gate FF temp = t0 + t1; uint32_t temp_idx = this->add_variable(temp); - create_add_gate(add_triple_{ in.a, in.b, temp_idx, in.a_scaling, in.b_scaling, FF::neg_one(), FF::zero() }); + create_add_gate({ in.a, in.b, temp_idx, in.a_scaling, in.b_scaling, FF::neg_one(), FF::zero() }); - create_add_gate(add_triple_{ in.c, in.d, temp_idx, in.c_scaling, in.d_scaling, FF::one(), in.const_scaling }); + create_add_gate({ in.c, in.d, temp_idx, in.c_scaling, in.d_scaling, FF::one(), in.const_scaling }); } /** @@ -135,14 +135,14 @@ void StandardCircuitConstructor_::create_big_add_gate_with_bit_extraction(co uint32_t delta_idx = this->add_variable(delta); constexpr FF neg_four = -(FF(4)); - create_add_gate(add_triple_{ in.c, in.d, delta_idx, FF::one(), neg_four, FF::neg_one(), FF::zero() }); + create_add_gate({ in.c, in.d, delta_idx, FF::one(), neg_four, FF::neg_one(), FF::zero() }); constexpr FF two = FF(2); constexpr FF seven = FF(7); constexpr FF nine = FF(9); const FF r_0 = (delta * nine) - ((delta.sqr() * two) + seven); uint32_t r_0_idx = this->add_variable(r_0); - create_poly_gate(poly_triple_{ delta_idx, delta_idx, r_0_idx, -two, nine, FF::zero(), FF::neg_one(), -seven }); + create_poly_gate({ delta_idx, delta_idx, r_0_idx, -two, nine, FF::zero(), FF::neg_one(), -seven }); FF r_1 = r_0 * delta; uint32_t r_1_idx = this->add_variable(r_1); @@ -159,7 +159,7 @@ void StandardCircuitConstructor_::create_big_add_gate_with_bit_extraction(co FF r_2 = (r_1 + (this->get_variable(in.d) * in.d_scaling)); uint32_t r_2_idx = this->add_variable(r_2); - create_add_gate(add_triple_{ in.d, r_1_idx, r_2_idx, in.d_scaling, FF::one(), FF::neg_one(), FF::zero() }); + create_add_gate({ in.d, r_1_idx, r_2_idx, in.d_scaling, FF::one(), FF::neg_one(), FF::zero() }); create_big_add_gate(add_quad_{ in.a, in.b, in.c, r_2_idx, in.a_scaling, in.b_scaling, in.c_scaling, FF::one(), in.const_scaling }); @@ -169,10 +169,9 @@ template void StandardCircuitConstructor_::create_big_mul_gate { FF temp = ((this->get_variable(in.c) * in.c_scaling) + (this->get_variable(in.d) * in.d_scaling)); uint32_t temp_idx = this->add_variable(temp); - create_add_gate(add_triple_{ in.c, in.d, temp_idx, in.c_scaling, in.d_scaling, FF::neg_one(), FF::zero() }); + create_add_gate({ in.c, in.d, temp_idx, in.c_scaling, in.d_scaling, FF::neg_one(), FF::zero() }); - create_poly_gate(poly_triple_{ - in.a, in.b, temp_idx, in.mul_scaling, in.a_scaling, in.b_scaling, FF::one(), in.const_scaling }); + create_poly_gate({ in.a, in.b, temp_idx, in.mul_scaling, in.a_scaling, in.b_scaling, FF::one(), in.const_scaling }); } /** @@ -277,8 +276,7 @@ std::vector StandardCircuitConstructor_::decompose_into_base4_accu uint64_t quad = (lo ? 1U : 0U) + (hi ? 2U : 0U); quad_idx = this->add_variable(FF{ quad, 0, 0, 0 }.to_montgomery_form()); - create_add_gate(add_triple_{ - lo_idx, hi_idx, quad_idx, FF::one(), FF::one() + FF::one(), FF::neg_one(), FF::zero() }); + create_add_gate({ lo_idx, hi_idx, quad_idx, FF::one(), FF::one() + FF::one(), FF::neg_one(), FF::zero() }); } if (i == num_quads - 1) { @@ -290,8 +288,8 @@ std::vector StandardCircuitConstructor_::decompose_into_base4_accu new_accumulator = new_accumulator + new_accumulator; new_accumulator = new_accumulator + this->get_variable(quad_idx); uint32_t new_accumulator_idx = this->add_variable(new_accumulator); - create_add_gate(add_triple_{ - accumulator_idx, quad_idx, new_accumulator_idx, four, FF::one(), FF::neg_one(), FF::zero() }); + create_add_gate( + { accumulator_idx, quad_idx, new_accumulator_idx, four, FF::one(), FF::neg_one(), FF::zero() }); accumulators.push_back(new_accumulator_idx); accumulator = new_accumulator; accumulator_idx = new_accumulator_idx; @@ -351,23 +349,23 @@ accumulator_triple StandardCircuitConstructor_::create_logic_constraint(cons // a & b = ab // a ^ b = a + b - 2ab - create_poly_gate(poly_triple_{ left_hi_idx, - right_hi_idx, - out_hi_idx, - is_xor_gate ? neg_two : FF::one(), - is_xor_gate ? FF::one() : FF::zero(), - is_xor_gate ? FF::one() : FF::zero(), - FF::neg_one(), - FF::zero() }); - - create_poly_gate(poly_triple_{ left_lo_idx, - right_lo_idx, - out_lo_idx, - is_xor_gate ? neg_two : FF::one(), - is_xor_gate ? FF::one() : FF::zero(), - is_xor_gate ? FF::one() : FF::zero(), - FF::neg_one(), - FF::zero() }); + create_poly_gate({ left_hi_idx, + right_hi_idx, + out_hi_idx, + is_xor_gate ? neg_two : FF::one(), + is_xor_gate ? FF::one() : FF::zero(), + is_xor_gate ? FF::one() : FF::zero(), + FF::neg_one(), + FF::zero() }); + + create_poly_gate({ left_lo_idx, + right_lo_idx, + out_lo_idx, + is_xor_gate ? neg_two : FF::one(), + is_xor_gate ? FF::one() : FF::zero(), + is_xor_gate ? FF::one() : FF::zero(), + FF::neg_one(), + FF::zero() }); FF left_quad = this->get_variable(left_lo_idx) + this->get_variable(left_hi_idx) + this->get_variable(left_hi_idx); @@ -384,34 +382,34 @@ accumulator_triple StandardCircuitConstructor_::create_logic_constraint(cons new_left_accumulator = new_left_accumulator + left_quad; uint32_t new_left_accumulator_idx = this->add_variable(new_left_accumulator); - create_add_gate(add_triple_{ left_accumulator_idx, - left_quad_idx, - new_left_accumulator_idx, - four, - FF::one(), - FF::neg_one(), - FF::zero() }); + create_add_gate({ left_accumulator_idx, + left_quad_idx, + new_left_accumulator_idx, + four, + FF::one(), + FF::neg_one(), + FF::zero() }); FF new_right_accumulator = right_accumulator + right_accumulator; new_right_accumulator = new_right_accumulator + new_right_accumulator; new_right_accumulator = new_right_accumulator + right_quad; uint32_t new_right_accumulator_idx = this->add_variable(new_right_accumulator); - create_add_gate(add_triple_{ right_accumulator_idx, - right_quad_idx, - new_right_accumulator_idx, - four, - FF::one(), - FF::neg_one(), - FF::zero() }); + create_add_gate({ right_accumulator_idx, + right_quad_idx, + new_right_accumulator_idx, + four, + FF::one(), + FF::neg_one(), + FF::zero() }); FF new_out_accumulator = out_accumulator + out_accumulator; new_out_accumulator = new_out_accumulator + new_out_accumulator; new_out_accumulator = new_out_accumulator + out_quad; uint32_t new_out_accumulator_idx = this->add_variable(new_out_accumulator); - create_add_gate(add_triple_{ - out_accumulator_idx, out_quad_idx, new_out_accumulator_idx, four, FF::one(), FF::neg_one(), FF::zero() }); + create_add_gate( + { out_accumulator_idx, out_quad_idx, new_out_accumulator_idx, four, FF::one(), FF::neg_one(), FF::zero() }); accumulators.left.emplace_back(new_left_accumulator_idx); accumulators.right.emplace_back(new_right_accumulator_idx); diff --git a/cpp/src/barretenberg/proof_system/circuit_constructors/turbo_circuit_constructor.test.cpp b/cpp/src/barretenberg/proof_system/circuit_constructors/turbo_circuit_constructor.test.cpp index 7152ae5c01..37c198c713 100644 --- a/cpp/src/barretenberg/proof_system/circuit_constructors/turbo_circuit_constructor.test.cpp +++ b/cpp/src/barretenberg/proof_system/circuit_constructors/turbo_circuit_constructor.test.cpp @@ -187,8 +187,8 @@ TEST(turbo_circuit_constructor, small_scalar_multipliers) bool skew = false; barretenberg::wnaf::fixed_wnaf(&scalar_multiplier_base.data[0], &wnaf_entries[0], skew, 0); - fr accumulator_ofrset = (fr::one() + fr::one()).pow(static_cast(initial_exponent)).invert(); - fr origin_accumulators[2]{ fr::one(), accumulator_ofrset + fr::one() }; + fr accumulator_offset = (fr::one() + fr::one()).pow(static_cast(initial_exponent)).invert(); + fr origin_accumulators[2]{ fr::one(), accumulator_offset + fr::one() }; grumpkin::g1::element* multiplication_transcript = static_cast(aligned_alloc(64, sizeof(grumpkin::g1::element) * (num_quads + 1))); @@ -228,7 +228,7 @@ TEST(turbo_circuit_constructor, small_scalar_multipliers) TurboCircuitConstructor circuit_constructor = TurboCircuitConstructor(); - fr x_alpha = accumulator_ofrset; + fr x_alpha = accumulator_offset; for (size_t i = 0; i < num_quads; ++i) { fixed_group_add_quad round_quad; round_quad.d = circuit_constructor.add_variable(accumulator_transcript[i]); @@ -311,8 +311,8 @@ TEST(turbo_circuit_constructor, large_scalar_multipliers) bool skew = false; barretenberg::wnaf::fixed_wnaf(&scalar_multiplier_base.data[0], &wnaf_entries[0], skew, 0); - fr accumulator_ofrset = (fr::one() + fr::one()).pow(static_cast(initial_exponent)).invert(); - fr origin_accumulators[2]{ fr::one(), accumulator_ofrset + fr::one() }; + fr accumulator_offset = (fr::one() + fr::one()).pow(static_cast(initial_exponent)).invert(); + fr origin_accumulators[2]{ fr::one(), accumulator_offset + fr::one() }; grumpkin::g1::element* multiplication_transcript = static_cast(aligned_alloc(64, sizeof(grumpkin::g1::element) * (num_quads + 1))); @@ -352,7 +352,7 @@ TEST(turbo_circuit_constructor, large_scalar_multipliers) TurboCircuitConstructor circuit_constructor = TurboCircuitConstructor(); - fr x_alpha = accumulator_ofrset; + fr x_alpha = accumulator_offset; for (size_t i = 0; i < num_quads; ++i) { fixed_group_add_quad round_quad; round_quad.d = circuit_constructor.add_variable(accumulator_transcript[i]); diff --git a/cpp/src/barretenberg/proof_system/circuit_constructors/ultra_circuit_constructor.cpp b/cpp/src/barretenberg/proof_system/circuit_constructors/ultra_circuit_constructor.cpp index 60fb16076d..9d48c56f7d 100644 --- a/cpp/src/barretenberg/proof_system/circuit_constructors/ultra_circuit_constructor.cpp +++ b/cpp/src/barretenberg/proof_system/circuit_constructors/ultra_circuit_constructor.cpp @@ -30,14 +30,14 @@ template void UltraCircuitConstructor_::finalize_circuit() * 1. ComposerBase::n => refers to the size of the witness of a given program, * 2. proving_key::n => the next power of two ≥ total witness size. * - * In this case, we have composer.this->num_gates = n_computation before we execute the following two functions. + * In this case, we have composer.num_gates = n_computation before we execute the following two functions. * After these functions are executed, the composer's `n` is incremented to include the ROM * and range list gates. Therefore we have: - * composer.this->num_gates = n_computation + n_rom + n_range. + * composer.num_gates = n_computation + n_rom + n_range. * - * Its this->necessary to this->include the this->(n_rom + n_range) gates at this point because if we already have a + * Its necessary to include the (n_rom + n_range) gates at this point because if we already have a * proving key, and we just return it without including these ROM and range list gates, the overall - * circuit size would not this->be correct (this->resulting in this->the code crashing while performing FFT + * circuit size would not be correct (resulting in the code crashing while performing FFT * operations). * * Therefore, we introduce a boolean flag `circuit_finalised` here. Once we add the rom and range gates, @@ -53,7 +53,7 @@ template void UltraCircuitConstructor_::finalize_circuit() } /** - * @brief Atemplate void zero-polynomials and ensure first coeff of wire polynomials is 0 + * @brief Avoid zero-polynomials and ensure first coeff of wire polynomials is 0 * * @param in Structure containing variables and witness selectors */ @@ -158,7 +158,7 @@ template void UltraCircuitConstructor_::create_add_gate(const } /** - * @brief Create a this->big addition this->gate, this->where in.a * in.a_scaling + in.b * in.b_scaling + in.c * + * @brief Create a big addition gate, where in.a * in.a_scaling + in.b * in.b_scaling + in.c * * in.c_scaling + in.d * in.d_scaling + in.const_scaling = 0. If include_next_gate_w_4 is enabled, then thes sum also * adds the value of the 4-th witness at the next index. * @@ -188,7 +188,7 @@ void UltraCircuitConstructor_::create_big_add_gate(const add_quad& in, const } /** - * @brief A legacy method this->that was this->used to this->extract a bit from c-4d by using gate selectors in the + * @brief A legacy method that was used to extract a bit from c-4d by using gate selectors in the * Turboplonk, but is simulated here for ultraplonk * * @param in Structure with variables and witness selector values @@ -279,7 +279,7 @@ template void UltraCircuitConstructor_::create_big_mul_gate(co } // Creates a width-4 addition gate, where the fourth witness must be a boolean. -// Can be used to this->normalize a this->32-bit this->addition +// Can be used to normalize a 32-bit addition template void UltraCircuitConstructor_::create_balanced_add_gate(const add_quad& in) { this->assert_valid_variables({ in.a, in.b, in.c, in.d }); @@ -303,7 +303,7 @@ template void UltraCircuitConstructor_::create_balanced_add_ga // Why 3? TODO: return to this // The purpose of this gate is to do enable lazy 32-bit addition. // Consider a + b = c mod 2^32 - // We want the this->4th wire this->to represent this->the quotient: + // We want the 4th wire to represent the quotient: // w1 + w2 = w4 * 2^32 + w3 // If we allow this overflow 'flag' to range from 0 to 3, instead of 0 to 1, // we can get away with chaining a few addition operations together with basic add gates, @@ -370,7 +370,7 @@ template void UltraCircuitConstructor_::create_bool_gate(const } /** - * @brief A plonk gate this->with disabled (this->set to this->zero) fourth wire. q_m * a * b + q_1 * a + q_2 * b + q_3 + * @brief A plonk gate with disabled (set to zero) fourth wire. q_m * a * b + q_1 * a + q_2 * b + q_3 * * c + q_const = 0 * * @param in Structure containing variables and witness selectors @@ -399,7 +399,7 @@ template void UltraCircuitConstructor_::create_poly_gate(const } /** - * @brief Create an this->elliptic curve this->addition gate + * @brief Create an elliptic curve this->addition gate * * @details x and y are defined over scalar field. Addition can handle applying the curve endomorphism to one of the * points being summed at the time of addition. @@ -473,7 +473,7 @@ template void UltraCircuitConstructor_::create_ecc_add_gate(co } /** - * @brief Add a this->gate equating this->a particular this->witness to a constant, fixing it the value + * @brief Add a gate equating a particular witness to a constant, fixing it the value * * @param witness_index The index of the witness we are fixing * @param witness_value The value we are fixing it to @@ -576,7 +576,7 @@ plookup::ReadData UltraCircuitConstructor_::create_gates_from_ploo } /** - * this->Generalized Permutation this->Methods + * Generalized Permutation Methods **/ template typename UltraCircuitConstructor_::RangeList UltraCircuitConstructor_::create_range_list( @@ -1041,9 +1041,8 @@ std::vector UltraCircuitConstructor_::decompose_into_default_range const uint256_t val = (uint256_t)(this->get_variable(variable_index)); // check witness value is indeed in range (commented out cause interferes with negative tests) - // ASSERT(val < ((uint256_t)1 << num_bits) - 1); // Q:ask Zac what happens with wrapping when converting FF to - // uint256 - // ASSERT(limb_num % 3 == 0); // TODO: write version of method that doesn't need this + // ASSERT(val < ((uint256_t)1 << num_bits) - 1); // Q:ask Zac what happens with wrapping when converting scalar + // field to uint256 ASSERT(limb_num % 3 == 0); // TODO: write version of method that doesn't need this std::vector val_limbs; std::vector val_slices; for (size_t i = 0; i < limb_num; i++) { @@ -1297,7 +1296,7 @@ void UltraCircuitConstructor_::range_constrain_two_limbs(const uint32_t lo_i const uint256_t limb = this->get_variable(limb_idx); // we can use constant 2^14 - 1 mask here. If the sublimb value exceeds the expected value then witness will // fail the range check below - // We also use this->zero_idx to substitute variables that should be zero + // We also use zero_idx to substitute variables that should be zero constexpr uint256_t MAX_SUBLIMB_MASK = (uint256_t(1) << 14) - 1; std::array sublimb_indices; sublimb_indices[0] = sublimb_masks[0] != 0 ? this->add_variable(limb & MAX_SUBLIMB_MASK) : this->zero_idx; @@ -1532,7 +1531,7 @@ std::array UltraCircuitConstructor_::evaluate_non_native_field_ /** * product gate 6 * - * hi_2 this->- hi_1 this->- lo_1 this->- q[2](p[1].2^b + p[0]) - q[3](p[0].2^b) = 0 + * hi_2 - hi_1 - lo_1 - q[2](p[1].2^b + p[0]) - q[3](p[0].2^b) = 0 * **/ create_big_add_gate( @@ -1624,7 +1623,7 @@ template void UltraCircuitConstructor_::process_non_native_fie } /** - * this->Compute the this->limb-multiplication this->part of a non native field mul + * Compute the limb-multiplication part of a non native field mul * * i.e. compute the low 204 and high 204 bit components of `a * b` where `a, b` are nnf elements composed of 4 * limbs with size DEFAULT_NON_NATIVE_FIELD_LIMB_BITS @@ -1923,7 +1922,8 @@ std::array UltraCircuitConstructor_::evaluate_non_native_field_ } /** - this->* @brief this->Gate that this->'reads' from a ROM table. + * @brief + * Gate that'reads' from a ROM table. * i.e. table index is a witness not precomputed * * @param record Stores details of this read operation. Mutated by this fn! @@ -1942,7 +1942,7 @@ template void UltraCircuitConstructor_::create_ROM_gate(RomRec } /** - * @brief this->Gate that this->performs consistency this->checks to validate that a claimed ROM read value is correct + * @brief Gate that performs consistency checks to validate that a claimed ROM read value is correct * * @details sorted ROM gates are generated sequentially, each ROM record is sorted by index * @@ -1961,7 +1961,7 @@ template void UltraCircuitConstructor_::create_sorted_ROM_gate } /** - * @brief this->Create a this->new read-this->only memory region + * @brief Create a new read-only memory region * * @details Creates a transcript object, where the inside memory state array is filled with "uninitialized memory" and @@ -2006,7 +2006,7 @@ template void UltraCircuitConstructor_::create_RAM_gate(RamRec } /** - * @brief this->Gate that this->performs consistency this->checks to validate that a claimed RAM read/write value is + * @brief Gate that performs consistency checks to validate that a claimed RAM read/write value is * correct * * @details sorted RAM gates are generated sequentially, each RAM record is sorted first by index then by timestamp @@ -2026,7 +2026,7 @@ template void UltraCircuitConstructor_::create_sorted_RAM_gate } /** - * @brief this->Performs consistency this->checks to this->validate that a claimed RAM read/write value is correct. + * @brief Performs consistency checks to validate that a claimed RAM read/write value is correct. * Used for the final gate in a list of sorted RAM records * * @param record Stores details of this read operation. Mutated by this fn! @@ -2394,7 +2394,7 @@ template void UltraCircuitConstructor_::process_ROM_array(cons }, false); // N.B. If the above check holds, we know the sorted list begins with an index value of 0, - // because the first cell is explicitly initialized using this->zero_idx as the index field. + // because the first cell is explicitly initialized using zero_idx as the index field. } /**