Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
bd18592
stuff for tests
DanielKotov Apr 24, 2025
56807f0
fix merge conflicts with graph constructors
DanielKotov May 4, 2025
7fb47b0
another boring routine
DanielKotov May 14, 2025
87693de
test redesign after rebase
DanielKotov May 14, 2025
dd2ab3e
small fixes to remove unnecessary gates
DanielKotov May 19, 2025
aeb4e54
quick and dirty fixes
iakovenkos May 19, 2025
de4a514
removing false-cases for finalizing method
DanielKotov May 20, 2025
db126fb
only one constructor for Ultra with possibility to turn of graph crea…
DanielKotov May 26, 2025
1d6d452
remove all things for timing
DanielKotov May 26, 2025
cd0df43
last commit before PR
DanielKotov May 29, 2025
c6ececc
remover Kesha's remarks
DanielKotov Jun 2, 2025
4cc1591
merge conflict fixes in ultra_recursive_verifier test
DanielKotov Jun 2, 2025
84cc838
sync gobling and boomerang base of the tests
DanielKotov Jun 11, 2025
67aa6f3
merge conflicts fixes after rebase
DanielKotov Jun 12, 2025
e16daa7
vks weren't changed finally
DanielKotov Jun 12, 2025
cd30a4b
vk fix again
DanielKotov Jun 13, 2025
c2609b8
better naming
DanielKotov Jun 16, 2025
c804499
remove mega builder for translator + add comment about accumulated_re…
DanielKotov Jun 17, 2025
f04958c
test redesign for goblin + fix for translator tests
DanielKotov Jun 17, 2025
f92c6d1
add TODO for myself
DanielKotov Jun 18, 2025
95e10b2
change VKs again
DanielKotov Jun 18, 2025
6358b04
changed a number of gates ultra recursive verifier tests
DanielKotov Jun 19, 2025
4bc77a4
I didn't see HEAD in the recursive flavor, but ok, let's update it again
DanielKotov Jun 19, 2025
71f5b89
now variables in one gate size = 0
DanielKotov Jun 19, 2025
f72f11b
new VKS
DanielKotov Jun 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ cd ..
# - Generate a hash for versioning: sha256sum bb-civc-inputs.tar.gz
# - Upload the compressed results: aws s3 cp bb-civc-inputs.tar.gz s3://aztec-ci-artifacts/protocol/bb-civc-inputs-[hash(0:8)].tar.gz
# Note: In case of the "Test suite failed to run ... Unexpected token 'with' " error, need to run: docker pull aztecprotocol/build:3.0
pinned_civc_inputs_url="https://aztec-ci-artifacts.s3.us-east-2.amazonaws.com/protocol/bb-civc-inputs-e0c3365e.tar.gz"
pinned_civc_inputs_url="https://aztec-ci-artifacts.s3.us-east-2.amazonaws.com/protocol/bb-civc-inputs-8775f2ab.tar.gz"

# For easily rerunning the inputs generation
if [[ "${1:-}" == "--update-inputs" ]]; then
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
barretenberg_module(boomerang_value_detection stdlib_circuit_builders circuit_checker stdlib_primitives numeric stdlib_aes128 stdlib_sha256 stdlib_blake2s stdlib_blake3s stdlib_poseidon2 stdlib_honk_verifier)
barretenberg_module(boomerang_value_detection stdlib_circuit_builders circuit_checker stdlib_primitives numeric stdlib_aes128 stdlib_sha256 stdlib_blake2s stdlib_blake3s stdlib_poseidon2 stdlib_goblin_verifier)
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
dc8cda19d2 forget to remove constructor
deae720e8a useless constructor for standard circuit builder
a582c39457 remove useless includes from ecc_lookup_relation
3e2624be40 preparings to PR for ECCVM
37baac11e4 eccvm lookup optimization
809d2b15ad removing false-cases for finalizing method
1002a144db quick and dirty fixes
410d798175 small fixes to remove unnecessary gates
7877a7d3bb test redesign after rebase
5aeb0d685f another boring routine
076cd60d41 some experiments with graph acceleration
444794b7ac stuff for tests
274 changes: 168 additions & 106 deletions barretenberg/cpp/src/barretenberg/boomerang_value_detection/graph.cpp

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,14 @@ struct KeyEquals {
* variable wasn't constrained properly. If the number of connected components > 1, it means that there were some missed
* connections between variables.
*/
template <typename FF> class Graph_ {
template <typename FF> class StaticAnalyzer_ {
public:
Graph_() = default;
Graph_(const Graph_& other) = delete;
Graph_(Graph_&& other) = delete;
Graph_& operator=(const Graph_& other) = delete;
Graph_&& operator=(Graph_&& other) = delete;
Graph_(bb::UltraCircuitBuilder& ultra_circuit_constructor);
StaticAnalyzer_() = default;
StaticAnalyzer_(const StaticAnalyzer_& other) = delete;
StaticAnalyzer_(StaticAnalyzer_&& other) = delete;
StaticAnalyzer_& operator=(const StaticAnalyzer_& other) = delete;
StaticAnalyzer_&& operator=(StaticAnalyzer_&& other) = delete;
StaticAnalyzer_(bb::UltraCircuitBuilder& ultra_circuit_constructor, bool connect_variables = true);

/**
* @brief Convert a vector of variable indices to their real indices
Expand All @@ -88,10 +88,7 @@ template <typename FF> class Graph_ {
return ultra_circuit_constructor.real_variable_index[variable_index];
};
size_t find_block_index(bb::UltraCircuitBuilder& ultra_builder, const UltraBlock& block);
void process_gate_variables(bb::UltraCircuitBuilder& ultra_circuit_constructor,
std::vector<uint32_t>& gate_variables,
size_t gate_index,
size_t blk_idx);
void process_gate_variables(std::vector<uint32_t>& gate_variables, size_t gate_index, size_t blk_idx);
std::unordered_map<uint32_t, size_t> get_variables_gate_counts() { return this->variables_gate_counts; };

std::vector<std::vector<uint32_t>> get_arithmetic_gate_connected_component(
Expand Down Expand Up @@ -180,7 +177,7 @@ template <typename FF> class Graph_ {
void print_variables_gate_counts();
void print_variables_edge_counts();
void print_variable_in_one_gate(bb::UltraCircuitBuilder& ultra_builder, const uint32_t real_idx);
~Graph_() = default;
~StaticAnalyzer_() = default;

private:
std::unordered_map<uint32_t, std::vector<uint32_t>>
Expand All @@ -197,6 +194,6 @@ template <typename FF> class Graph_ {
std::unordered_set<uint32_t> fixed_variables;
};

using Graph = Graph_<bb::fr>;
using StaticAnalyzer = StaticAnalyzer_<bb::fr>;

} // namespace cdg
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ TEST(boomerang_ultra_circuit_constructor, test_graph_for_arithmetic_gates)
}
}

Graph graph = Graph(circuit_constructor);
StaticAnalyzer graph = StaticAnalyzer(circuit_constructor);
auto connected_components = graph.find_connected_components();
auto variables_in_one_gate = graph.show_variables_in_one_gate(circuit_constructor);
EXPECT_EQ(variables_in_one_gate.size(), 1024);
Expand Down Expand Up @@ -71,7 +71,7 @@ TEST(boomerang_ultra_circuit_constructor, test_graph_for_arithmetic_gates_with_s
}
}

Graph graph = Graph(circuit_constructor);
StaticAnalyzer graph = StaticAnalyzer(circuit_constructor);
auto connected_components = graph.find_connected_components();
auto num_connected_components = connected_components.size();
bool result = num_connected_components == 1;
Expand All @@ -96,7 +96,7 @@ TEST(boomerang_ultra_circuit_constructor, test_graph_for_boolean_gates)
circuit_constructor.create_bool_gate(a_idx);
}

Graph graph = Graph(circuit_constructor);
StaticAnalyzer graph = StaticAnalyzer(circuit_constructor);
auto connected_components = graph.find_connected_components();
auto num_connected_components = connected_components.size();
auto variables_in_one_gate = graph.show_variables_in_one_gate(circuit_constructor);
Expand Down Expand Up @@ -133,7 +133,7 @@ TEST(boomerang_ultra_circuit_constructor, test_graph_for_elliptic_add_gate)

circuit_constructor.create_ecc_add_gate({ x1, y1, x2, y2, x3, y3, 1 });

Graph graph = Graph(circuit_constructor);
StaticAnalyzer graph = StaticAnalyzer(circuit_constructor);
auto connected_components = graph.find_connected_components();
auto num_connected_components = connected_components.size();
bool result = num_connected_components == 1;
Expand Down Expand Up @@ -164,7 +164,7 @@ TEST(boomerang_ultra_circuit_constructor, test_graph_for_elliptic_double_gate)

circuit_constructor.create_ecc_dbl_gate({ x1, y1, x3, y3 });

Graph graph = Graph(circuit_constructor);
StaticAnalyzer graph = StaticAnalyzer(circuit_constructor);
auto connected_components = graph.find_connected_components();
auto num_connected_components = connected_components.size();
bool result = num_connected_components == 1;
Expand Down Expand Up @@ -221,7 +221,7 @@ TEST(boomerang_ultra_circuit_constructor, test_graph_for_elliptic_together)
uint32_t y8 = circuit_constructor.add_variable(p8.y);
circuit_constructor.create_ecc_dbl_gate({ x7, y7, x8, y8 });

Graph graph = Graph(circuit_constructor);
StaticAnalyzer graph = StaticAnalyzer(circuit_constructor);
auto connected_components = graph.find_connected_components();
auto num_connected_components = connected_components.size();
bool result = num_connected_components == 2;
Expand Down Expand Up @@ -261,7 +261,7 @@ TEST(boomerang_ultra_circuit_constructor, test_graph_for_sort_constraints)
auto h_idx = circuit_constructor.add_variable(h);
circuit_constructor.create_sort_constraint({ e_idx, f_idx, g_idx, h_idx });

Graph graph = Graph(circuit_constructor);
StaticAnalyzer graph = StaticAnalyzer(circuit_constructor);
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components[0].size(), 4);
EXPECT_EQ(connected_components[1].size(), 4);
Expand Down Expand Up @@ -320,7 +320,7 @@ TEST(boomerang_ultra_circuit_constructor, test_graph_for_sort_constraints_with_e

circuit_constructor.create_sort_constraint_with_edges(
{ a1_idx, b1_idx, c1_idx, d1_idx, e1_idx, f1_idx, g1_idx, h1_idx }, a1, h1);
Graph graph = Graph(circuit_constructor);
StaticAnalyzer graph = StaticAnalyzer(circuit_constructor);
auto connected_components = graph.find_connected_components();
auto num_connected_components = connected_components.size();
bool result = num_connected_components == 2;
Expand Down Expand Up @@ -351,7 +351,7 @@ TEST(boomerang_ultra_circuit_constructor, test_graph_with_plookup_accumulators)

EXPECT_EQ(num_lookups, lookup_witnesses[plookup::ColumnIdx::C1].size());

Graph graph = Graph(circuit_builder);
StaticAnalyzer graph = StaticAnalyzer(circuit_builder);
auto connected_components = graph.find_connected_components();
auto num_connected_components = connected_components.size();
bool result = num_connected_components == 1;
Expand Down Expand Up @@ -384,7 +384,7 @@ TEST(boomerang_ultra_circuit_constructor, test_variables_gates_counts_for_arithm
}
}

Graph graph = Graph(circuit_constructor);
StaticAnalyzer graph = StaticAnalyzer(circuit_constructor);
auto variables_gate_counts = graph.get_variables_gate_counts();
bool result = true;
for (const auto pair : variables_gate_counts) {
Expand Down Expand Up @@ -420,7 +420,7 @@ TEST(boomerang_ultra_circuit_constructor, test_variables_gates_counts_for_arithm
}
}

Graph graph = Graph(circuit_constructor);
StaticAnalyzer graph = StaticAnalyzer(circuit_constructor);
bool result = true;
auto variables_gate_counts = graph.get_variables_gate_counts();
for (const auto& pair : variables_gate_counts) {
Expand Down Expand Up @@ -450,7 +450,7 @@ TEST(boomerang_ultra_circuit_constructor, test_variables_gates_counts_for_boolea
circuit_constructor.create_bool_gate(a_idx);
}

Graph graph = Graph(circuit_constructor);
StaticAnalyzer graph = StaticAnalyzer(circuit_constructor);
auto variables_gate_counts = graph.get_variables_gate_counts();
bool result = true;
for (const auto& part : variables_gate_counts) {
Expand Down Expand Up @@ -490,7 +490,7 @@ TEST(boomerang_ultra_circuit_constructor, test_variables_gates_counts_for_sorted
auto h_idx = circuit_constructor.add_variable(h);
circuit_constructor.create_sort_constraint({ e_idx, f_idx, g_idx, h_idx });

Graph graph = Graph(circuit_constructor);
StaticAnalyzer graph = StaticAnalyzer(circuit_constructor);
auto variables_gate_counts = graph.get_variables_gate_counts();
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components.size(), 2);
Expand Down Expand Up @@ -555,7 +555,7 @@ TEST(boomerang_ultra_circuit_constructor, test_variables_gates_counts_for_sorted

circuit_constructor.create_sort_constraint_with_edges(
{ a1_idx, b1_idx, c1_idx, d1_idx, e1_idx, f1_idx, g1_idx, h1_idx }, a1, h1);
Graph graph = Graph(circuit_constructor);
StaticAnalyzer graph = StaticAnalyzer(circuit_constructor);
auto connected_components = graph.find_connected_components();
auto variables_gate_counts = graph.get_variables_gate_counts();
bool result = true;
Expand Down Expand Up @@ -597,7 +597,7 @@ TEST(boomerang_ultra_circuit_constructor, test_variables_gates_counts_for_ecc_ad

circuit_constructor.create_ecc_add_gate({ x1, y1, x2, y2, x3, y3, 1 });

Graph graph = Graph(circuit_constructor);
StaticAnalyzer graph = StaticAnalyzer(circuit_constructor);
auto variables_gate_counts = graph.get_variables_gate_counts();
auto connected_components = graph.find_connected_components();
bool result = (variables_gate_counts[connected_components[0][0]] == 1) &&
Expand Down Expand Up @@ -634,7 +634,7 @@ TEST(boomerang_ultra_circuit_constructor, test_variables_gates_counts_for_ecc_db

circuit_constructor.create_ecc_dbl_gate({ x1, y1, x3, y3 });

Graph graph = Graph(circuit_constructor);
StaticAnalyzer graph = StaticAnalyzer(circuit_constructor);
auto variables_gate_counts = graph.get_variables_gate_counts();
auto connected_components = graph.find_connected_components();

Expand Down Expand Up @@ -671,7 +671,7 @@ TEST(boomerang_ultra_circuit_constructor, test_graph_for_range_constraints)
circuit_constructor.create_new_range_constraint(indices[i], 5);
}
circuit_constructor.create_sort_constraint(indices);
Graph graph = Graph(circuit_constructor);
StaticAnalyzer graph = StaticAnalyzer(circuit_constructor);
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components.size(), 1);
}
Expand All @@ -694,7 +694,7 @@ TEST(boomerang_ultra_circuit_constructor, composed_range_constraint)
{ a_idx, circuit_constructor.zero_idx, circuit_constructor.zero_idx, 1, 0, 0, -fr(e) });
circuit_constructor.decompose_into_default_range(a_idx, 134);

Graph graph = Graph(circuit_constructor);
StaticAnalyzer graph = StaticAnalyzer(circuit_constructor);
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components.size(), 1);
}
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ TEST(boomerang_stdlib_aes, test_graph_for_aes_64_bytes)
auto result = stdlib::aes128::encrypt_buffer_cbc(in_field, iv_field, key_field);
fix_vector_witness(result);

Graph graph = Graph(builder);
StaticAnalyzer graph = StaticAnalyzer(builder);
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components.size(), 1);
auto variables_in_one_gate = graph.show_variables_in_one_gate(builder);
Expand Down Expand Up @@ -132,7 +132,7 @@ TEST(boomerang_stdlib_aes, test_variable_gates_count_for_aes128cbc)
auto result = stdlib::aes128::encrypt_buffer_cbc(in_field, iv_field, key_field);
fix_vector_witness(result);

Graph graph = Graph(builder);
StaticAnalyzer graph = StaticAnalyzer(builder);
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components.size(), 1);
std::unordered_set<uint32_t> variables_in_one_gate = graph.show_variables_in_one_gate(builder);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ TEST(boomerang_bigfield, test_graph_description_bigfield_constructors)
[[maybe_unused]] fq_ct mixed = fq_ct(1).add_to_lower_limb(small_var, 1);
[[maybe_unused]] fq_ct r;

auto graph = Graph(builder);
auto graph = StaticAnalyzer(builder);
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components.size(), 1);
auto variables_in_one_gate = graph.show_variables_in_one_gate(builder);
Expand Down Expand Up @@ -98,7 +98,7 @@ TEST(boomerang_bigfield, test_graph_description_bigfield_addition)
r2 = r + var;
fix_bigfield_element(r2);

auto graph = Graph(builder);
auto graph = StaticAnalyzer(builder);
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components.size(), 1);
auto variables_in_one_gate = graph.show_variables_in_one_gate(builder);
Expand Down Expand Up @@ -130,7 +130,7 @@ TEST(boomerang_bigfield, test_graph_description_bigfield_substraction)
r = var - mixed;
fix_bigfield_element(r);

auto graph = Graph(builder);
auto graph = StaticAnalyzer(builder);
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components.size(), 1);
auto variables_in_one_gate = graph.show_variables_in_one_gate(builder);
Expand Down Expand Up @@ -161,7 +161,7 @@ TEST(boomerang_bigfield, test_graph_description_bigfield_multiplication)
r = mixed * var;
r = mixed * constant;
r = mixed * mixed;
auto graph = Graph(builder);
auto graph = StaticAnalyzer(builder);
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components.size(), 1);
auto variables_in_one_gate = graph.show_variables_in_one_gate(builder);
Expand Down Expand Up @@ -195,7 +195,7 @@ TEST(boomerang_bigfield, test_graph_description_bigfield_division)
fix_bigfield_element(r);

CircuitChecker::check(builder);
auto graph = Graph(builder);
auto graph = StaticAnalyzer(builder);
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components.size(), 1);
auto variables_in_one_gate = graph.show_variables_in_one_gate(builder);
Expand Down Expand Up @@ -248,7 +248,7 @@ TEST(boomerang_bigfield, test_graph_description_bigfield_mix_operations)
fix_bigfield_element(r);
r = mixed * constant;
fix_bigfield_element(r);
auto graph = Graph(builder);
auto graph = StaticAnalyzer(builder);
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components.size(), 1);
auto variables_in_one_gate = graph.show_variables_in_one_gate(builder);
Expand Down Expand Up @@ -276,7 +276,7 @@ TEST(boomerang_bigfield, test_graph_description_constructor_high_low_bits_and_op
witness_ct(&builder, fr(uint256_t(d).slice(fq_ct::NUM_LIMB_BITS * 2, fq_ct::NUM_LIMB_BITS * 4))));
c = c + d1;
fix_bigfield_element(c);
auto graph = Graph(builder);
auto graph = StaticAnalyzer(builder);
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components.size(), 1);
auto variables_in_one_gate = graph.show_variables_in_one_gate(builder);
Expand All @@ -300,7 +300,7 @@ TEST(boomerang_bigfield, test_graph_description_mul_function)
witness_ct(&builder, fr(uint256_t(inputs[1]).slice(fq_ct::NUM_LIMB_BITS * 2, fq_ct::NUM_LIMB_BITS * 4))));
fq_ct c = a * b;
fix_bigfield_element(c);
auto graph = Graph(builder);
auto graph = StaticAnalyzer(builder);
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components.size(), 1);
auto variables_in_one_gate = graph.show_variables_in_one_gate(builder);
Expand All @@ -322,7 +322,7 @@ TEST(boomerang_bigfield, test_graph_description_sqr_function)
witness_ct(&builder, fr(uint256_t(input).slice(fq_ct::NUM_LIMB_BITS * 2, fq_ct::NUM_LIMB_BITS * 4))));
fq_ct c = a.sqr();
fix_bigfield_element(c);
auto graph = Graph(builder);
auto graph = StaticAnalyzer(builder);
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components.size(), 1);
auto variables_in_one_gate = graph.show_variables_in_one_gate(builder);
Expand All @@ -348,7 +348,7 @@ TEST(boomerang_bigfield, test_graph_description_madd_function)
witness_ct(&builder, fr(uint256_t(inputs[2]).slice(fq_ct::NUM_LIMB_BITS * 2, fq_ct::NUM_LIMB_BITS * 4))));
fq_ct d = a.madd(b, { c });
fix_bigfield_element(d);
auto graph = Graph(builder);
auto graph = StaticAnalyzer(builder);
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components.size(), 1);
auto variables_in_one_gate = graph.show_variables_in_one_gate(builder);
Expand Down Expand Up @@ -388,7 +388,7 @@ TEST(boomerang_bigfield, test_graph_description_mult_madd_function)
fq_ct f = fq_ct::mult_madd(mul_left, mul_right, to_add);
fix_bigfield_element(f);
builder.finalize_circuit(false);
auto graph = Graph(builder);
auto graph = StaticAnalyzer(builder);
auto variables_in_one_gate = graph.show_variables_in_one_gate(builder);
EXPECT_EQ(variables_in_one_gate.size(), 0);
}
Expand All @@ -413,7 +413,7 @@ TEST(boomerang_bigfield, test_graph_description_constructor_high_low_bits)
fq_ct product = mul_left * mul_right;
fix_bigfield_element(product);
builder.finalize_circuit(false);
auto graph = Graph(builder);
auto graph = StaticAnalyzer(builder);
auto connected_components = graph.find_connected_components();
auto variables_in_one_gate = graph.show_variables_in_one_gate(builder);
EXPECT_EQ(variables_in_one_gate.size(), 0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ TEST(boomerang_stdlib_blake2s, graph_description_single_block_plookup)
byte_array_ct input_arr(&builder, input_v);
byte_array_ct output = stdlib::blake2s<Builder>(input_arr);

Graph graph = Graph(builder);
StaticAnalyzer graph = StaticAnalyzer(builder);
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components.size(), 1);
auto variables_in_one_gate = graph.show_variables_in_one_gate(builder);
Expand Down Expand Up @@ -63,7 +63,7 @@ TEST(boomerang_stdlib_blake2s, graph_description_double_block_plookup)

EXPECT_EQ(output.get_value(), std::vector<uint8_t>(expected.begin(), expected.end()));

Graph graph = Graph(builder);
StaticAnalyzer graph = StaticAnalyzer(builder);
auto connected_components = graph.find_connected_components();
EXPECT_EQ(connected_components.size(), 1);
auto variables_in_one_gate = graph.show_variables_in_one_gate(builder);
Expand Down
Loading
Loading