pub mod contract;
pub mod finite_field;
pub mod padic;
pub mod precision;
pub mod structure;
pub mod valued;
pub use contract::{Claim, Condition, Contract, ContractId, ContractSet, Evidence, Scope};
pub use finite_field::{FiniteFieldDomain, FiniteFieldElement};
pub use padic::{
DynamicPadic, DynamicPadicDomain, DynamicPadicMatrix, DynamicPadicMeta, Padic,
PadicCertifiedMatmulReport, PadicDomain, PadicErrorModel, PadicMatrix, PadicMatrixMetadata,
PadicMeta, PadicOutputCertificate, PadicRepresentation, ValuationSkipReport,
};
pub use precision::PrecisionModel;
pub use structure::{AlgebraicStructure, DomainKind, Exactness};
pub use valued::{NonArchimedeanDomain, ValuationBound, ValuedDomain};
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct DomainId(pub String);
impl DomainId {
pub fn new(value: impl Into<String>) -> Self {
Self(value.into())
}
}
pub trait Domain {
type Element;
fn id(&self) -> DomainId;
fn structure(&self) -> AlgebraicStructure;
fn precision_model(&self) -> PrecisionModel;
fn contracts(&self) -> ContractSet {
ContractSet::default()
}
}