3#include <unordered_map>
4#include <unordered_set>
Undirected graph on ACIR witness indices; connected components = "ACIR components".
std::unordered_map< uint32_t, size_t > get_witness_component_map() const
Map each witness that appears in at least one edge to a component id.
std::vector< std::vector< uint32_t > > find_components() const
Iterative DFS over adjacency_lists_; each inner vector is one component's vertices.
void process_acir_circuit(const Acir::Circuit &circuit)
Walk circuit.opcodes, populate adjacency, then merge per-block memory witnesses.
void add_constraint(const std::vector< uint32_t > &witnesses)
Add a clique on the given witness indices (deduplicated). Empty or singleton → no edges.
std::unordered_map< uint32_t, std::unordered_set< uint32_t > > adjacency_lists_
Validates that ACIR witness connectivity (from the Noir circuit) matches circuit variable connectivit...
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept