use crate::enums::ProofStrategy;
use crate::enums::WittLevel;
use crate::Primitives;
pub trait Certificate<P: Primitives> {
fn method(&self) -> ProofStrategy;
fn verified(&self) -> P::Boolean;
fn witt_length(&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 GroundingCertificate<P: Primitives>: Certificate<P> {
type GroundedContext: crate::user::state::GroundedContext<P>;
fn certified_grounding(&self) -> &Self::GroundedContext;
type GroundingWitness: crate::user::state::GroundingWitness<P>;
fn grounding_witness(&self) -> &Self::GroundingWitness;
}
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) -> WittLevel;
fn source_level(&self) -> WittLevel;
}
pub trait ChainAuditTrail<P: Primitives> {
fn chain_step_count(&self) -> P::NonNegativeInteger;
}