use crate::enums::ProofStrategy;
use crate::enums::QuantumLevel;
use crate::Primitives;
pub trait Certificate<P: Primitives> {
fn method(&self) -> ProofStrategy;
fn verified(&self) -> P::Boolean;
fn quantum(&self) -> P::PositiveInteger;
fn timestamp(&self) -> &P::String;
fn certifies(&self) -> &P::String;
}
pub trait TransformCertificate<P: Primitives>: Certificate<P> {
type TermExpression: crate::kernel::schema::TermExpression<P>;
fn transform_type(&self) -> &Self::TermExpression;
}
pub trait IsometryCertificate<P: Primitives>: Certificate<P> {}
pub trait InvolutionCertificate<P: Primitives>: Certificate<P> {
type Operation: crate::kernel::op::Operation<P>;
fn operation(&self) -> &Self::Operation;
}
pub trait CompletenessCertificate<P: Primitives>: Certificate<P> {
type CompleteType: crate::user::type_::CompleteType<P>;
fn certified_type(&self) -> &Self::CompleteType;
type CompletenessAuditTrail: CompletenessAuditTrail<P>;
fn audit_trail(&self) -> &Self::CompletenessAuditTrail;
}
pub trait CompletenessAuditTrail<P: Primitives> {
fn witness_count(&self) -> P::NonNegativeInteger;
}
pub trait SaturationCertificate<P: Primitives>: Certificate<P> {
type SaturatedContext: crate::user::state::SaturatedContext<P>;
fn certified_saturation(&self) -> &Self::SaturatedContext;
type SaturationWitness: crate::user::state::SaturationWitness<P>;
fn saturation_witness(&self) -> &Self::SaturationWitness;
}
pub trait GeodesicCertificate<P: Primitives>: Certificate<P> {
type GeodesicTrace: crate::bridge::trace::GeodesicTrace<P>;
fn certified_geodesic(&self) -> &Self::GeodesicTrace;
fn geodesic_trace(&self) -> &Self::GeodesicTrace;
type GeodesicEvidenceBundle: GeodesicEvidenceBundle<P>;
fn evidence_bundle(&self) -> &Self::GeodesicEvidenceBundle;
}
pub trait MeasurementCertificate<P: Primitives>: Certificate<P> {
type MeasurementEvent: crate::bridge::trace::MeasurementEvent<P>;
fn certified_measurement(&self) -> &Self::MeasurementEvent;
fn von_neumann_entropy(&self) -> P::Decimal;
fn landauer_cost(&self) -> P::Decimal;
}
pub trait GeodesicEvidenceBundle<P: Primitives> {
fn is_ar1_ordered(&self) -> P::Boolean;
fn is_dc10_selected(&self) -> P::Boolean;
}
pub trait BornRuleVerification<P: Primitives>: Certificate<P> {
fn born_rule_verified(&self) -> P::Boolean;
}
pub trait LiftChainCertificate<P: Primitives>: Certificate<P> {
type LiftChain: crate::user::type_::LiftChain<P>;
fn certified_chain(&self) -> &Self::LiftChain;
type ChainAuditTrail: ChainAuditTrail<P>;
fn chain_audit_trail(&self) -> &Self::ChainAuditTrail;
fn target_level(&self) -> QuantumLevel;
fn source_level(&self) -> QuantumLevel;
}
pub trait ChainAuditTrail<P: Primitives> {
fn chain_step_count(&self) -> P::NonNegativeInteger;
}