pub struct CompilationValidator { /* private fields */ }Expand description
Compilation validator
Implementations§
Source§impl CompilationValidator
impl CompilationValidator
pub const fn new(config: EnhancedCrossCompilationConfig) -> Self
pub fn validate_compilation( &self, source: &SourceCircuit, target_code: &TargetCode, platform: TargetPlatform, ) -> QuantRS2Result<ValidationResult>
Sourcepub fn validate_semantics(
&self,
source: &SourceCircuit,
target: &TargetCode,
) -> QuantRS2Result<bool>
pub fn validate_semantics( &self, source: &SourceCircuit, target: &TargetCode, ) -> QuantRS2Result<bool>
Structural semantic-equivalence check between the original source text and the generated target code.
SourceCircuit stores the original program as an opaque,
framework-specific source string (Qiskit/Cirq/PennyLane/OpenQASM
text, etc.) rather than a parsed representation, so a true
unitary/statevector equivalence check is not available at this
layer. Instead this compares the gate-name histograms found in
both texts (a format-agnostic structural heuristic: real quantum
gate mnemonics like h, cx, rz, … appear as identifiers in
essentially every textual quantum programming language/IR dump) and
accepts the compilation only when the two histograms are similar
enough (cosine similarity) to plausibly represent the same circuit.
Sourcepub fn validate_resources(
&self,
target: &TargetCode,
platform: TargetPlatform,
) -> QuantRS2Result<bool>
pub fn validate_resources( &self, target: &TargetCode, platform: TargetPlatform, ) -> QuantRS2Result<bool>
Real resource-capacity check: estimates the number of qubits
referenced by the generated target code (from bracketed qubit-index
syntax such as q[3], common to QASM/Quil-style output) and compares
it against the target platform’s known qubit capacity.
Sourcepub fn estimate_fidelity(
&self,
source: &SourceCircuit,
target: &TargetCode,
) -> QuantRS2Result<f64>
pub fn estimate_fidelity( &self, source: &SourceCircuit, target: &TargetCode, ) -> QuantRS2Result<f64>
Real fidelity estimate derived from the generated target code: the
per-gate-type counts extracted from target.code are combined with
typical single-/two-qubit gate fidelities published for the target
hardware platform (the same style of domain-derived error-rate data
used by crate::noise_models::NoiseModel) into a product-model
circuit fidelity, then scaled by the source/target structural
similarity used in Self::validate_semantics so that a compilation
which diverges structurally from its source is never scored as
perfectly faithful.
Auto Trait Implementations§
impl Freeze for CompilationValidator
impl RefUnwindSafe for CompilationValidator
impl Send for CompilationValidator
impl Sync for CompilationValidator
impl Unpin for CompilationValidator
impl UnsafeUnpin for CompilationValidator
impl UnwindSafe for CompilationValidator
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.