quantrs2_circuit/
lib.rs

1#![allow(dead_code)]
2#![allow(clippy::all)]
3#![allow(unused_imports)]
4#![allow(unused_variables)]
5#![allow(unused_mut)]
6#![allow(unused_assignments)]
7#![allow(unexpected_cfgs)]
8#![allow(deprecated)]
9
10//! Quantum circuit representation and DSL for the QuantRS2 framework.
11//!
12//! This crate provides types for constructing and manipulating
13//! quantum circuits with a fluent API.
14//!
15//! ## Recent Updates (v0.1.0-beta.2)
16//!
17//! - Refined SciRS2 v0.1.0-beta.3 integration with unified patterns
18//! - Enhanced graph-based circuit optimization algorithms
19//! - Improved hardware-aware compilation with SciRS2 graph algorithms
20//! - Comprehensive policy documentation for quantum circuit development
21pub mod buffer_manager;
22pub mod builder;
23pub mod circuit_cache;
24pub mod classical;
25pub mod commutation;
26pub mod crosstalk;
27pub mod dag;
28pub mod debugger;
29pub mod distributed;
30pub mod equivalence;
31pub mod fault_tolerant;
32pub mod formatter;
33pub mod graph_optimizer;
34pub mod linter;
35pub mod measurement;
36pub mod ml_optimization;
37pub mod noise_models;
38pub mod optimization;
39pub mod optimizer;
40pub mod photonic;
41pub mod profiler;
42pub mod pulse;
43pub mod qasm;
44pub mod qc_co_optimization;
45pub mod resource_estimator;
46pub mod routing;
47pub mod scirs2_benchmarking;
48pub mod scirs2_cross_compilation_enhanced;
49pub mod scirs2_integration;
50pub mod scirs2_ir_tools;
51pub mod scirs2_matrices;
52pub mod scirs2_optimization;
53pub mod scirs2_pulse_control_enhanced;
54pub mod scirs2_qasm_compiler_enhanced;
55pub mod scirs2_similarity;
56pub mod scirs2_transpiler_enhanced;
57pub mod simulator_interface;
58pub mod slicing;
59pub mod synthesis;
60pub mod tensor_network;
61pub mod topological;
62pub mod topology;
63pub mod transpiler;
64pub mod validation;
65pub mod verifier;
66pub mod vqe;
67pub mod zx_calculus;
68
69// Re-exports of commonly used types and traits
70pub mod prelude {
71    pub use crate::builder::{CircuitStats, *};
72    // Convenience re-export
73    pub use crate::circuit_cache::{
74        CacheConfig, CacheEntry, CacheManager, CacheStats, CircuitCache, CircuitSignature,
75        CompiledCircuitCache, EvictionPolicy, ExecutionResultCache, SignatureGenerator,
76        TranspilationCache,
77    };
78    pub use crate::classical::{
79        CircuitOp, ClassicalBit, ClassicalCircuit, ClassicalCircuitBuilder, ClassicalCondition,
80        ClassicalOp, ClassicalRegister, ClassicalValue, ComparisonOp, ConditionalGate, MeasureOp,
81    };
82    pub use crate::commutation::{
83        CommutationAnalyzer, CommutationOptimization, CommutationResult, CommutationRules, GateType,
84    };
85    pub use crate::crosstalk::{
86        CrosstalkAnalysis, CrosstalkAnalyzer, CrosstalkModel, CrosstalkSchedule,
87        CrosstalkScheduler, SchedulingStrategy, TimeSlice,
88    };
89    pub use crate::dag::{circuit_to_dag, CircuitDag, DagEdge, DagNode, EdgeType};
90    pub use crate::debugger::{
91        AnalysisDepth, BlochVector, BottleneckType as DebuggerBottleneckType, BreakpointAction,
92        BreakpointCondition, BreakpointManager, ConditionalBreakpoint, ConnectionType,
93        ConnectionVisualization, CorrelationType, DebugError, DebuggerConfig, Difficulty,
94        ErrorAnalysisResults, ErrorCorrelation, ErrorDetectionConfig, ErrorDetector, ErrorPattern,
95        ErrorSeverity, ErrorStatistics, ErrorType as DebuggerErrorType, ExecutionHistory,
96        ExecutionState, ExecutionStatus as DebuggerExecutionStatus, ExecutionSummary,
97        ExportFormat as DebuggerExportFormat, ExportOptions as DebuggerExportOptions,
98        ExpressionResult, ExpressionType, ExpressionValue, GateAttributes, GateExecutionMetrics,
99        GateExecutionResult, GateProperties as DebuggerGateProperties, GateSnapshot,
100        GateType as DebuggerGateType, GateVisualization, HistoryEntry, HistoryStatistics,
101        ImpactAssessment, MemorySnapshot, MemoryStatistics, MemoryUsage, MetricSnapshot,
102        OptimizationSuggestion as DebuggerOptimizationSuggestion, PatternType, PerformanceAnalysis,
103        PerformanceBottleneck, PerformanceProfiler, PerformanceSample, PredictionResult,
104        Priority as DebuggerPriority, ProfilerConfig, ProfilingStatistics, QuantumDebugger,
105        RenderingQuality, RenderingStatistics, RootCause, Solution, StateBreakpoint, StatePattern,
106        StateSnapshot, StepResult, SuggestionType as DebuggerSuggestionType, TimingInfo,
107        TimingStatistics, TrendAnalysis, TrendDirection, Visualization, VisualizationConfig,
108        VisualizationData, VisualizationEngine, VisualizationMetadata, VisualizationSnapshot,
109        VisualizationType, WatchConfig, WatchExpression, WatchManager, WatchedGate, WatchedMetric,
110        WatchedState,
111    };
112    pub use crate::distributed::{
113        BackendType, DistributedExecutor, DistributedJob, DistributedResult, ExecutionBackend,
114        ExecutionParameters, ExecutionStatus, LoadBalancingStrategy, Priority, SystemHealthStatus,
115    };
116    pub use crate::equivalence::{
117        circuits_equivalent, circuits_structurally_equal, EquivalenceChecker, EquivalenceOptions,
118        EquivalenceResult, EquivalenceType,
119    };
120    pub use crate::fault_tolerant::{
121        FaultTolerantCircuit, FaultTolerantCompiler, LogicalQubit, MagicState, QECCode,
122        ResourceOverhead, SyndromeMeasurement, SyndromeType,
123    };
124    pub use crate::formatter::{
125        AlignedElement, AlignmentColumn, AlignmentConfig, AppliedStyleRule, AutoCorrectionConfig,
126        ChangeType, CircuitDefinition, CodeSection, CodeStructure, ColumnType, CommentAlignment,
127        CommentConfig, ComplianceLevel as FormatterComplianceLevel, ConsistencyMetrics,
128        CustomStyleRule, DataFlowEdge, DependencyAnalysisResults, DependencyType, DetectedPattern,
129        FormattedCircuit, FormatterConfig, FormattingChange, FormattingMetadata, FormattingResult,
130        FormattingStatistics, FormattingWarning, FunctionDefinition, GateDependency, GateOperation,
131        GraphAnalysisResults, GroupingStrategy, ImportStatement, ImportType, IndentationConfig,
132        IndentationStyle, InputStatistics, LayoutInformation, LayoutOptimization, LayoutSuggestion,
133        MeasurementOperation, OptimizationConfig as FormatterOptimizationConfig,
134        OptimizationLevel as FormatterOptimizationLevel, OptimizationResults, OrderingConstraint,
135        OrganizationConfig, ParallelizationOpportunity, Parameter as FormatterParameter,
136        PatternAnalysisResults, PatternFormattingSuggestion, PerformanceOptimization,
137        QuantumFormatter, ReadabilityImprovement, RulePriority, SciRS2AnalysisConfig,
138        SciRS2FormattingAnalysis, SciRS2OptimizationSuggestion, SectionType, SpacingConfig,
139        SpacingStyle, StyleCompliance, StyleEnforcementConfig, StyleInformation,
140        StyleStrictness as FormatterStyleStrictness, StyleViolationFix, VariableDeclaration,
141        WarningSeverity, WarningType as FormatterWarningType, WrappingPoint, WrappingType,
142    };
143    pub use crate::graph_optimizer::{CircuitDAG, GraphGate, GraphOptimizer, OptimizationStats};
144    pub use crate::linter::{
145        AnalysisScope, AntiPatternDetectionResult, AntiPatternDetector, AutoFix, AutoFixType,
146        BarrierUsageStyle, BestPracticeResult, BestPracticeRule, BestPracticeViolation,
147        BestPracticesChecker, BestPracticesCompliance, CircuitLocation, ComplexityAnalysisResult,
148        ComplexityAnalyzer, ComplexityClassification, ComplexityMetric,
149        ComplexityMetrics as LinterComplexityMetrics, ComplexityTrend, ComplianceLevel,
150        ConnectivityPattern, ConstraintType as LinterConstraintType, CustomGuideline,
151        Difficulty as LinterDifficulty, GateGroupingStyle, Importance,
152        IndentationStyle as LinterIndentationStyle, InteractionType, IssueType, LintIssue,
153        LinterConfig, LintingMetadata, LintingResult, LintingStatistics, MeasurementPlacementStyle,
154        NamingConvention, OptimizationAnalysisResult, OptimizationAnalyzer,
155        OptimizationImprovement as LinterOptimizationImprovement, OptimizationRule,
156        OptimizationSuggestion as LinterOptimizationSuggestion, OptimizationType,
157        ParameterConstraint, PatternAnalysisResult, PatternDetectionResult, PatternDetector,
158        PatternFlexibility, PatternInteraction, PatternMatcher, PatternPerformanceProfile,
159        PatternStatistics, PerformanceImpact, PerformanceMetrics as LinterPerformanceMetrics,
160        PerformanceProjection, PracticeGuidelines, QuantumAntiPattern, QuantumLinter,
161        QuantumPattern, QubitOrderingStyle, Risk, SafetyLevel,
162        ScalingBehavior as LinterScalingBehavior, Severity, SimplificationSuggestion,
163        SimplificationType, StyleAnalysisResult, StyleCheckResult, StyleChecker, StyleConfig,
164        StyleRule, StyleStrictness, StyleViolation, TrendDirection as LinterTrendDirection,
165    };
166    pub use crate::measurement::{
167        CircuitOp as MeasurementCircuitOp, FeedForward, Measurement, MeasurementCircuit,
168        MeasurementCircuitBuilder, MeasurementDependencies,
169    };
170    pub use crate::ml_optimization::{
171        AcquisitionFunction, FeatureExtractor, ImprovementMetrics, MLCircuitOptimizer,
172        MLCircuitRepresentation, MLOptimizationResult, MLStrategy, TrainingExample,
173    };
174    pub use crate::noise_models::{
175        DecoherenceParams, ErrorSource, LeakageError, NoiseAnalysisResult, NoiseAnalyzer,
176        ReadoutError, SingleQubitError, ThermalNoise, TwoQubitError,
177    };
178    pub use crate::optimization::{
179        AbstractCostModel, CircuitAnalyzer, CircuitOptimizer2, CircuitRewriting,
180        CoherenceOptimization, CommutationTable, CostBasedOptimization, CostModel,
181        DecompositionOptimization, DecouplingSequence, DynamicalDecoupling, GateCancellation,
182        GateCommutation, GateCost, GateError, GateMerging, GateProperties, HardwareCostModel,
183        NoiseAwareCostModel, NoiseAwareMapping, NoiseAwareOptimizer, NoiseModel, OptimizationLevel,
184        OptimizationPass, OptimizationReport, PassConfig, PassManager, RotationMerging,
185        TemplateMatching, TwoQubitOptimization,
186    };
187    pub use crate::optimizer::{
188        CircuitOptimizer, HardwareOptimizer, OptimizationPassType, OptimizationResult,
189        RedundantGateElimination, SingleQubitGateFusion,
190    };
191    pub use crate::photonic::{
192        CVCircuit, CVGate, CVMeasurement, PhotonicCircuit, PhotonicCircuitBuilder,
193        PhotonicConverter, PhotonicGate, PhotonicMeasurement, PhotonicMode, Polarization,
194        PolarizationBasis,
195    };
196    pub use crate::profiler::{
197        AccuracyMeasurement, AccuracyTracking, AggregationFunction, AggregationRule, Alert,
198        AlertChannel, AlertChannelType, AlertCondition, AlertLevel, AlertRule, AlertSystem,
199        AllocationEvent, AllocationEventType, AllocationInfo, AllocationStatistics,
200        AllocationTracker, AllocationType, AnalysisConfig, AnalysisDepth as ProfilerAnalysisDepth,
201        AnalyticsConfig, AnomalyAlgorithmType, AnomalyDetectionAlgorithm, AnomalyDetectionConfig,
202        AnomalyDetector, AnomalyType, AnomySeverity, ArchivalPolicy, BackupConfig, BaselineManager,
203        BaselineUpdatePolicy, BaselineValidationResults,
204        BenchmarkConfig as ProfilerBenchmarkConfig, BenchmarkEngine, BenchmarkResult,
205        BenchmarkSuite, BenchmarkSuiteConfig, BenchmarkTest, BenchmarkTestType,
206        BottleneckAnalysis as ProfilerBottleneckAnalysis, BottleneckImpactAnalysis,
207        BottleneckSeverity, CacheMissRates, CascadingEffect, ChecksumAlgorithm, ComparisonOperator,
208        ComparisonResults, ComparisonSummary, CompressionAlgorithm, CompressionSettings,
209        ConnectionStatistics, CostBenefitAnalysis, CpuOptimization, CpuOptimizationType,
210        CpuProfilingData, CpuState, DataRetentionPolicy, DetailedAnalysis, EnvironmentInfo,
211        ErrorAnalysis, ErrorCharacteristics, ErrorDistribution,
212        ErrorPattern as ProfilerErrorPattern, ErrorSeverity as ProfilerErrorSeverity,
213        ExportFormat as ProfilerExportFormat, GateProfile, GateProfiler, GpuInfo, GpuOptimization,
214        GpuOptimizationType, GpuProfilingData, HardwareConfig, HistoricalPerformanceData,
215        InsightType, IntegrityChecks, IoOptimization, IoOptimizationType, IoProfilingData, IoState,
216        LatencyDistribution, LeakAnalysisResults, LeakDetector, LeakSeverity, LogicalOperator,
217        MemoryLeak, MemoryOptimization as ProfilerMemoryOptimization, MemoryOptimizationType,
218        MemoryPattern, MemoryProfiler, MemorySnapshot as ProfilerMemorySnapshot, MemoryState,
219        MemoryTransferTimes, MetricCategory, MetricStream, MetricsCollector,
220        MitigationStrategy as ProfilerMitigationStrategy, MitigationStrategyType, MlModel,
221        NetworkOptimization, NetworkOptimizationType, NetworkProfilingData, NetworkState,
222        PerformanceAnalyzer, PerformanceAnomaly, PerformanceBaseline,
223        PerformanceInsight as ProfilerPerformanceInsight, PerformanceMetric, PerformanceRegression,
224        PerformanceSnapshot, PerformanceSummary, PrecisionLevel, PredictionConfig,
225        PredictionEngine, PredictionModel as ProfilerPredictionModel, PredictionModelType,
226        PredictionResult as ProfilerPredictionResult, ProfilerConfig as ProfilerConfiguration,
227        ProfilingReport, ProfilingSession, QuantumProfiler, RealtimeMetrics, RecoveryStatistics,
228        RegressionAlgorithmType, RegressionAnalysisResults, RegressionDetectionAlgorithm,
229        RegressionDetectionConfig, RegressionDetector, RegressionSeverity, ResourceBottleneck,
230        ResourceBottleneckType, ResourceProfiler,
231        ResourceRequirements as ProfilerResourceRequirements, ResourceUtilization,
232        SerializationConfig, SerializationFormat, SessionAnalytics, SessionConfig, SessionData,
233        SessionManager, SessionStatistics, SessionStatus, SessionStorage, SessionTrendAnalysis,
234        SeverityLevel, StatisticalMethod, StorageBackend, StorageConfig, StorageInfo, StorageType,
235        StreamStatistics, SuppressionCondition, SuppressionRule, SystemState, TestResult,
236        ThroughputStatistics, TimingStatistics as ProfilerTimingStatistics, TrainingStatus,
237        TrendAnalysisResults, ValidationStatus,
238    };
239    pub use crate::pulse::{
240        Channel, DeviceConfig, PulseCalibration, PulseCompiler, PulseInstruction, PulseOptimizer,
241        PulseSchedule, Waveform,
242    };
243    pub use crate::qasm::exporter::ExportError;
244    pub use crate::qasm::{
245        export_qasm3, parse_qasm3, validate_qasm3, ExportOptions, ParseError, QasmExporter,
246        QasmGate, QasmParser, QasmProgram, QasmRegister, QasmStatement, ValidationError,
247    };
248    pub use crate::qc_co_optimization::{
249        ClassicalProcessingStep, ClassicalStepType, DataFlowGraph, DataType,
250        HybridOptimizationAlgorithm, HybridOptimizationProblem, HybridOptimizationResult,
251        HybridOptimizer, LearningRateSchedule, ObjectiveFunction as HybridObjectiveFunction,
252        ObjectiveFunctionType, ParameterizedQuantumComponent, RegularizationType,
253    };
254    pub use crate::resource_estimator::{
255        AlgorithmClass, CircuitMetrics as ResourceCircuitMetrics, ComplexityAnalysis,
256        ComplexityClass, ExecutionTimeEstimate, HardwareRequirements, MemoryRequirements,
257        OptimizationSuggestion as ResourceOptimizationSuggestion, PlatformRecommendation,
258        ResourceEstimate, ScalabilityAnalysis, ScalingBehavior, ScalingFunction,
259    };
260    pub use crate::routing::{
261        CircuitRouter, CouplingMap, Distance, LookaheadConfig, LookaheadRouter, RoutedCircuit,
262        RoutingPassType, RoutingResult, RoutingStatistics, RoutingStrategy, SabreConfig,
263        SabreRouter, SwapLayer, SwapNetwork,
264    };
265    pub use crate::scirs2_benchmarking::{
266        BaselineComparison, BenchmarkConfig, BenchmarkReport, BenchmarkRun, CircuitBenchmark,
267        CircuitMetrics as BenchmarkCircuitMetrics, DescriptiveStats, Distribution, DistributionFit,
268        HypothesisTestResult, InsightCategory, OutlierAnalysis, OutlierDetectionMethod,
269        PerformanceInsight, PracticalSignificance, RegressionAnalysis, StatisticalAnalyzer,
270        StatisticalTest,
271    };
272    pub use crate::scirs2_cross_compilation_enhanced::{
273        AppliedOptimization, BatchCompilationReport, BatchCompilationResult, BatchPerformanceStats,
274        CircuitMetrics, CircuitSize, CircuitVisualization, ClassicalOpType, ClassicalOperation,
275        CodeFormat, ComparisonVisualization, CompilationComplexity, CompilationRecommendation,
276        CompilationReport, CompilationStage, CompilationStrategy, CompilationSummary,
277        CrossCompilationConfig, CrossCompilationResult, DataFlow, Difference, DifferenceType,
278        EnhancedCrossCompilationConfig, EnhancedCrossCompiler, FailedCompilation, FlowEdge,
279        FlowNode, GraphLayout, IRClassicalOp, IRClassicalOpType, IREdge, IRGate, IRGraph, IRNode,
280        IROperation, IROperationType, IRVisualization, NodeType, OperationType, OptimizationImpact,
281        OptimizationImprovement, OptimizationTimeline, OptimizationVisualization, ParsedCircuit,
282        QuantumFramework, QuantumIR, QuantumOperation,
283        RecommendationCategory as CompilationRecommendationCategory, ResourceUsage, SourceCircuit,
284        StageAnalysis, StageImpact, StagePerformance, TargetCode, TargetPlatform, TimelineEvent,
285        ValidationError as CrossValidationError, ValidationErrorType,
286        ValidationResult as CrossValidationResult, ValidationWarning as CrossValidationWarning,
287        ValidationWarningType, VisualCompilationFlow,
288    };
289    pub use crate::scirs2_integration::{
290        AnalysisResult, AnalyzerConfig, GraphMetrics, GraphMotif, OptimizationSuggestion,
291        SciRS2CircuitAnalyzer, SciRS2CircuitGraph, SciRS2Edge, SciRS2Node, SciRS2NodeType,
292    };
293    pub use crate::scirs2_matrices::{
294        CircuitToSparseMatrix, Complex64, SparseFormat, SparseGate, SparseGateLibrary,
295        SparseMatrix, SparseOptimizer,
296    };
297    pub use crate::scirs2_optimization::{
298        CircuitTemplate, EarlyStoppingCriteria, KernelType, ObjectiveFunction,
299        OptimizationAlgorithm, OptimizationConfig, OptimizationHistory, Parameter,
300        ParameterizedGate, QAOAObjective, QuantumCircuitOptimizer, VQEObjective,
301    };
302    pub use crate::scirs2_pulse_control_enhanced::{
303        AWGSpecifications, AmplitudeNoiseSpec, CalibrationAnalysis, CalibrationData,
304        CalibrationMeasurement, CalibrationParameters, CalibrationResult, ChannelPlot,
305        ControlRequirements, ControlType, CosinePulse, CustomPulseShape, DRAGPulse, DriftAnalysis,
306        EnhancedPulseConfig, EnhancedPulseController, EnvironmentalData, ErfPulse, ErrorMetrics,
307        FilterType, FrequencyPlot, GateAnalysis, GateType as PulseGateType, GaussianPulse,
308        HardwareConstraints, IQMixerSpecifications, MitigationStrategy, OptimizationFeedback,
309        ParameterUpdate, PerformanceTargets, PhaseNoiseSpec, PhasePlot, PulseChannel,
310        PulseConstraints, PulseControlConfig, PulseExportFormat, PulseLibrary, PulseMetadata,
311        PulseOptimizationModel, PulseOptimizationObjective, PulseSequence, PulseShape,
312        PulseVisualization, QualityMetrics, SechPulse, SignalProcessingConfig,
313        Waveform as EnhancedWaveform, WindowType,
314    };
315    pub use crate::scirs2_qasm_compiler_enhanced::{
316        ASTNode, ASTStatistics, AnalysisOptions, BinaryOp, CompilationResult,
317        CompilationStatistics, CompilationTarget, CompilationVisualizations, CompilationWarning,
318        EnhancedQASMCompiler, EnhancedQASMConfig, ErrorType, ExportFormat, Expression,
319        GateDefinition, GeneratedCode, Location, OptimizedQASM, ParsedQASM, QASMCompilerConfig,
320        QASMVersion, Token, TokenType, TypeCheckingLevel, UnaryOp, ValidationResult,
321        ValidationWarning, WarningType, AST,
322    };
323    pub use crate::scirs2_similarity::{
324        BatchSimilarityComputer, CircuitDistanceMetrics, CircuitFeatures,
325        CircuitSimilarityAnalyzer, CircuitSimilarityMetrics, EntanglementStructure,
326        GraphKernelType, GraphSimilarityAlgorithm, MLModelType, SciRS2Graph, SimilarityAlgorithm,
327        SimilarityConfig, SimilarityWeights,
328    };
329    pub use crate::scirs2_transpiler_enhanced::{
330        AdvancedHardwareFeatures, Bottleneck, BottleneckType, CircuitAnalysis,
331        CircuitFeatures as EnhancedCircuitFeatures, CompatibilityReport, DecomposedGate,
332        DecompositionResult, DecompositionStrategy, EnhancedTranspiler, EnhancedTranspilerConfig,
333        ErrorMitigationSupport, GateDecomposition, GateStatistics, HardwareBackend, ImpactLevel,
334        MitigationResult, NativeGateSet as EnhancedNativeGateSet, ParallelismAnalysis, PassResult,
335        PerformanceConstraints, PerformanceMetrics, PerformancePrediction, PredictionModel,
336        RoutingFeedback, RoutingModel, SuggestionType, SwapGate, TopologyAnalysis, TopologyType,
337        TranspilationPass, TranspilationResult as EnhancedTranspilationResult,
338        VisualRepresentation,
339    };
340    pub use crate::simulator_interface::{
341        CircuitCompiler, CompiledCircuit, ContractionStrategy, ExecutionResult, InstructionSet,
342        MemoryOptimization, OptimizationLevel as SimulatorOptimizationLevel, ResourceRequirements,
343        SimulatorBackend, SimulatorExecutor,
344    };
345    pub use crate::slicing::{CircuitSlice, CircuitSlicer, SlicingResult, SlicingStrategy};
346    pub use crate::synthesis::{
347        GateSet, MultiQubitSynthesizer, SingleQubitSynthesizer, SynthesisConfig,
348        TwoQubitSynthesizer, UnitaryOperation, UnitarySynthesizer,
349    };
350    pub use crate::tensor_network::{
351        CircuitToTensorNetwork, CompressedCircuit, CompressionMethod, MatrixProductState, Tensor,
352        TensorNetwork, TensorNetworkCompressor,
353    };
354    pub use crate::topological::{
355        Anyon, AnyonModel, AnyonType, BraidingOperation, BraidingOptimizer, OptimizationStrategy,
356        TopologicalCircuit, TopologicalCompiler, TopologicalGate,
357    };
358    pub use crate::topology::{TopologicalAnalysis, TopologicalAnalyzer, TopologicalStrategy};
359    pub use crate::transpiler::{
360        DeviceTranspiler, HardwareSpec, NativeGateSet, TranspilationOptions, TranspilationResult,
361        TranspilationStats, TranspilationStrategy,
362    };
363    pub use crate::validation::{
364        CircuitValidator, ClassicalConstraints, ConnectivityConstraints, DepthLimits,
365        GateRestrictions, MeasurementConstraints, ResourceLimits, ValidationRules, ValidationStats,
366        ValidationSuggestion,
367    };
368    pub use crate::verifier::{
369        BinaryOperator, CircuitInvariant, CircuitLocation as VerifierCircuitLocation,
370        ComplexityClass as VerifierComplexityClass, ConfidenceStatistics,
371        ConstraintSatisfactionResult, ConstraintType, CorrectnessChecker, CorrectnessCriterion,
372        CorrectnessResult, Counterexample, CustomInvariantChecker, CustomPredicate,
373        EntanglementType, ErrorBounds, ErrorModel, EvidenceType, ExecutionTrace, ExpectedOutput,
374        FormalProof, InvariantCheckResult, InvariantChecker, IssueSeverity,
375        IssueType as VerifierIssueType, ModelCheckResult, ModelChecker, NumericalEvidence,
376        ProofComplexityMetrics, ProofNode, ProofObligation, ProofStatus, ProofStep, ProofStrategy,
377        ProofTree, PropertyChecker, PropertyVerificationResult, QuantumProperty, QuantumState,
378        QuantumTheorem, QuantumVerifier, StateSpace, StateSpaceStatistics, StateTransition,
379        SuperpositionType, SymbolicConstraint, SymbolicExecutionConfig, SymbolicExecutionResult,
380        SymbolicExecutionStatus, SymbolicExecutor, SymbolicExpression, SymbolicState, SymbolicType,
381        SymbolicVariable, TemporalProperty, TestCase, TestOutcome, TheoremProver, TheoremResult,
382        UnaryOperator, VerificationIssue, VerificationMetadata, VerificationOutcome,
383        VerificationResult, VerificationStatistics, VerificationStatus, VerifierConfig,
384        VerifierTestResult, ViolationSeverity,
385    };
386    pub use crate::vqe::{
387        PauliOperator, VQEAnsatz, VQECircuit, VQEObservable, VQEOptimizer, VQEOptimizerType,
388        VQEResult,
389    };
390    pub use crate::zx_calculus::{
391        OptimizedZXResult, ZXDiagram, ZXEdge, ZXNode, ZXOptimizationResult, ZXOptimizer,
392    };
393    pub use quantrs2_core::qubit::QubitId as Qubit;
394}
395
396// The following should be proc macros, but we'll implement them later
397// for now they're just stubs
398
399/// Creates a qubit set for quantum operations
400///
401/// # Example
402///
403/// ```
404/// use quantrs2_circuit::qubits;
405/// let qs = qubits![0, 1, 2];
406/// ```
407#[macro_export]
408macro_rules! qubits {
409    ($($id:expr),* $(,)?) => {
410        {
411            use quantrs2_core::qubit::QubitSet;
412
413            let mut qs = QubitSet::new();
414            $(qs.add($id);)*
415            qs
416        }
417    };
418}
419
420/// Constructs a quantum circuit with a fixed number of qubits
421///
422/// # Example
423///
424/// ```
425/// use quantrs2_circuit::circuit;
426/// let circuit = circuit![4];
427/// ```
428#[macro_export]
429macro_rules! circuit {
430    ($n:expr) => {
431        quantrs2_circuit::builder::Circuit::<$n>::new()
432    };
433}
434
435/// Provides a DSL for constructing quantum circuits
436///
437/// # Example
438///
439/// ```
440/// use quantrs2_circuit::quantum;
441///
442/// let my_circuit = quantum! {
443///     let qc = circuit(4);  // 4 qubits
444///     qc.h(0);
445///     qc.cnot(0, 1);
446///     qc.measure_all();
447/// };
448/// ```
449#[macro_export]
450macro_rules! quantum {
451    (
452        let $var:ident = circuit($n:expr);
453        $( $stmt_var:ident . $method:ident ( $( $args:expr ),* $(,)? ) ; )*
454    ) => {
455        {
456            let mut $var = quantrs2_circuit::builder::Circuit::<$n>::new();
457            $(
458                $stmt_var.$method($($args),*).unwrap();
459            )*
460            $var
461        }
462    };
463}