Skip to main content

amari/
lib.rs

1//! Amari: Advanced Mathematical Algebra for Robust Intelligence
2//!
3//! A comprehensive mathematical computing library combining:
4//! - Geometric algebra (Clifford algebras)
5//! - Tropical algebra (max-plus semiring)
6//! - Dual number automatic differentiation
7//! - Geometric network analysis
8//! - Information geometry
9//! - Fusion systems for neural network optimization
10//! - Measure theory and Lebesgue integration (opt-in via `measure` feature)
11//! - Differential calculus on geometric algebra (opt-in via `calculus` feature)
12//! - Holographic memory / Vector Symbolic Architectures (opt-in via `holographic` feature)
13//! - Probability theory on geometric algebra (opt-in via `probabilistic` feature)
14//! - Probabilistic contracts and verification (opt-in via `flynn` feature)
15//! - Deterministic physics for networked applications (opt-in via `deterministic` feature)
16//! - Functional analysis on multivector spaces (opt-in via `functional` feature)
17//! - Algebraic topology: homology, persistent homology, Morse theory (opt-in via `topology` feature)
18//! - Dynamical systems: ODE solvers, stability, bifurcations, chaos (opt-in via `dynamics` feature)
19//!
20//! Use `features = ["full"]` to enable all optional crates.
21
22pub use amari_automata as automata;
23pub use amari_core as core;
24pub use amari_dual as dual;
25pub use amari_enumerative as enumerative;
26pub use amari_fusion as fusion;
27pub use amari_info_geom as info_geom;
28pub use amari_network as network;
29pub use amari_relativistic as relativistic;
30pub use amari_tropical as tropical;
31
32#[cfg(feature = "measure")]
33pub use amari_measure as measure;
34
35#[cfg(feature = "calculus")]
36pub use amari_calculus as calculus;
37
38#[cfg(feature = "holographic")]
39pub use amari_holographic as holographic;
40
41#[cfg(feature = "probabilistic")]
42pub use amari_probabilistic as probabilistic;
43
44#[cfg(feature = "functional")]
45pub use amari_functional as functional;
46
47#[cfg(feature = "topology")]
48pub use amari_topology as topology;
49
50#[cfg(feature = "dynamics")]
51pub use amari_dynamics as dynamics;
52
53#[cfg(feature = "flynn")]
54pub use amari_flynn as flynn;
55
56#[cfg(feature = "gpu")]
57pub use amari_gpu as gpu;
58
59#[cfg(feature = "optimization")]
60pub use amari_optimization as optimization;
61
62// Deterministic computation module (opt-in via feature flag)
63#[cfg(feature = "deterministic")]
64pub mod deterministic;
65
66use thiserror::Error;
67
68/// Unified error type for the Amari library
69#[derive(Error, Debug)]
70pub enum AmariError {
71    /// Core geometric algebra error
72    #[error(transparent)]
73    Core(#[from] amari_core::CoreError),
74
75    /// Automata error
76    #[error("{0}")]
77    Automata(amari_automata::AutomataError),
78
79    /// Enumerative geometry error
80    #[error(transparent)]
81    Enumerative(#[from] amari_enumerative::EnumerativeError),
82
83    /// GPU computation error
84    #[cfg(feature = "gpu")]
85    #[error(transparent)]
86    Gpu(#[from] amari_gpu::GpuError),
87
88    /// Information geometry error
89    #[error(transparent)]
90    InfoGeom(#[from] amari_info_geom::InfoGeomError),
91
92    /// Network analysis error
93    #[error(transparent)]
94    Network(#[from] amari_network::NetworkError),
95
96    /// Fusion system error
97    #[error(transparent)]
98    Fusion(#[from] amari_fusion::EvaluationError),
99
100    /// Tropical algebra error
101    #[error(transparent)]
102    Tropical(#[from] amari_tropical::TropicalError),
103
104    /// Dual number error
105    #[error(transparent)]
106    Dual(#[from] amari_dual::DualError),
107
108    /// Calculus error
109    #[cfg(feature = "calculus")]
110    #[error(transparent)]
111    Calculus(#[from] amari_calculus::CalculusError),
112
113    /// Holographic memory error
114    #[cfg(feature = "holographic")]
115    #[error(transparent)]
116    Holographic(#[from] amari_holographic::HolographicError),
117
118    /// Probabilistic error
119    #[cfg(feature = "probabilistic")]
120    #[error(transparent)]
121    Probabilistic(#[from] amari_probabilistic::ProbabilisticError),
122
123    /// Functional analysis error
124    #[cfg(feature = "functional")]
125    #[error(transparent)]
126    Functional(#[from] amari_functional::FunctionalError),
127
128    /// Topology error
129    #[cfg(feature = "topology")]
130    #[error(transparent)]
131    Topology(#[from] amari_topology::TopologyError),
132
133    /// Dynamics error
134    #[cfg(feature = "dynamics")]
135    #[error(transparent)]
136    Dynamics(#[from] amari_dynamics::DynamicsError),
137}
138
139/// Result type for Amari operations
140pub type AmariResult<T> = Result<T, AmariError>;
141
142// Manual implementation for AutomataError since it doesn't use thiserror
143impl From<amari_automata::AutomataError> for AmariError {
144    fn from(err: amari_automata::AutomataError) -> Self {
145        AmariError::Automata(err)
146    }
147}
148
149// Re-export common types
150pub use amari_core::{Bivector, Multivector, Scalar, Vector};
151pub use amari_dual::{DualMultivector, DualNumber};
152pub use amari_fusion::TropicalDualClifford;
153pub use amari_info_geom::{DuallyFlatManifold, FisherInformationMatrix, SimpleAlphaConnection};
154pub use amari_network::{
155    Community, GeometricEdge, GeometricNetwork, NodeMetadata, PropagationAnalysis,
156};
157pub use amari_tropical::{TropicalMatrix, TropicalMultivector, TropicalNumber};