1mod dsl;
2pub mod inference;
3pub mod inputs;
4mod linspace;
5mod math;
6pub mod ops;
7pub mod outputs;
8pub mod rules;
9pub mod terms;
10pub mod variable;
11
12pub mod prelude {
13 pub use crate::inference::DecompInference;
14 pub use crate::ops::{AndOp, CompositionOp, DefuzzificationOp, ImplicationOp, OrOp, ProductionLink};
15 pub use crate::outputs::Outputs;
16 pub use crate::rules::Rules;
17 pub use crate::terms::Terms;
18 pub use crate::variable::{Variable, VariableKey};
19}
20
21#[derive(Clone, Copy, PartialEq, PartialOrd)]
23struct Probability(f64);
24
25impl TryFrom<f64> for Probability {
26 type Error = ();
27
28 fn try_from(value: f64) -> Result<Self, Self::Error> {
29 if (0.0..=1.).contains(&value) {
30 Ok(Probability(value))
31 } else {
32 Err(())
33 }
34 }
35}
36
37enum Fact {
38 Crisp(f64),
39 Fuzzy(Vec<(f64, Probability)>),
40}