uncertain_rs/lib.rs
1//! # uncertain-rs
2//!
3//! A Rust library for uncertainty-aware programming, implementing the approach from
4//! "Uncertain<T>: A First-Order Type for Uncertain Data" by Bornholt, Mytkowicz, and `McKinley`.
5//!
6//! ## Core Concept: Evidence-Based Conditionals
7//!
8//! Instead of treating uncertain data as exact values (which leads to bugs), this library
9//! uses evidence-based conditionals that account for uncertainty:
10//!
11//! ```rust
12//! use uncertain_rs::Uncertain;
13//!
14//! // Create uncertain values from probability distributions
15//! let speed = Uncertain::normal(55.2, 5.0); // GPS reading with ±5 mph error
16//!
17//! // Evidence-based conditional (returns Uncertain<bool>)
18//! let speeding_evidence = speed.gt(60.0);
19//!
20//! // Convert evidence to decision with confidence level
21//! if speeding_evidence.probability_exceeds(0.95) {
22//! // Only act if 95% confident
23//! println!("Issue speeding ticket");
24//! }
25//! ```
26//!
27//! ## Features
28//!
29//! - **Evidence-based conditionals**: Comparisons return evidence, not boolean facts
30//! - **Uncertainty propagation**: Arithmetic operations preserve uncertainty
31//! - **Lazy evaluation**: Computation graphs built lazily for efficiency
32//! - **SPRT hypothesis testing**: Sequential Probability Ratio Test for optimal sampling
33//! - **Rich distributions**: Normal, uniform, exponential, binomial, categorical, etc.
34//! - **Statistical analysis**: Mean, std dev, confidence intervals, CDF, etc.
35
36pub mod cache;
37pub mod computation;
38pub mod distributions;
39pub mod hypothesis;
40pub mod operations;
41pub mod statistics;
42pub mod traits;
43pub mod uncertain;
44
45pub use hypothesis::HypothesisResult;
46pub use traits::Shareable;
47pub use uncertain::Uncertain;
48
49// Re-export operation traits for advanced use cases
50// For most users, prefer the method-based API on Uncertain<T>
51pub use operations::{Arithmetic, LogicalOps};
52// Comparison trait available but not re-exported to encourage method-based API