Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
acir_components_check Namespace Reference

Validates that ACIR witness connectivity (from the Noir circuit) matches circuit variable connectivity after create_circuit. More...

Classes

class  AcirGraph
 Undirected graph on ACIR witness indices; connected components = "ACIR components". More...
 
class  ComponentsChecker_
 Structural comparison between ACIR-level and circuit-level connected components. More...
 
struct  Error
 

Typedefs

using ComponentsChecker = ComponentsChecker_< bb::UltraCircuitBuilder >
 Default alias for callers that work with UltraCircuitBuilder.
 
using UltraComponentsChecker = ComponentsChecker_< bb::UltraCircuitBuilder >
 
using MegaComponentsChecker = ComponentsChecker_< bb::MegaCircuitBuilder >
 

Detailed Description

Validates that ACIR witness connectivity (from the Noir circuit) matches circuit variable connectivity after create_circuit.

Pipeline:

  • ACIR sideAcirGraph connects witnesses that appear together in the same opcode (assert-zero, black-box calls, memory block), then takes connected components ("ACIR components").
  • Circuit sidecdg::StaticAnalyzer_<bb::fr, Builder> finds connected components on the built circuit. Witness indices are mapped through real_variable_index to real variables.
  • ClassificationWitnesses not in a multi-variable CC may still be valid if they are constants, range-list-only, or singleton variables (gates but degree-0 in the CC graph); those get synthetic "virtual" component ids to avoid spurious SPLIT. Otherwise NO_CIRCUIT_CC.
  • Compare — For each ACIR component, all witnesses must share one (real or virtual) circuit component id, and none may be NO_CIRCUIT_CC.

Typedef Documentation

◆ ComponentsChecker

Default alias for callers that work with UltraCircuitBuilder.

Definition at line 126 of file components_check.hpp.

◆ MegaComponentsChecker

◆ UltraComponentsChecker