deep_causality/
lib.rs

1/*
2 * SPDX-License-Identifier: MIT
3 * Copyright (c) 2023 - 2026. The DeepCausality Authors and Contributors. All Rights Reserved.
4 */
5
6//! DeepCausality is a hyper-geometric computational causality library
7//! that enables fast and deterministic context-aware causal reasoning over complex causality models.
8//!
9//! Why DeepCausality?
10//! * DeepCausality is written in Rust with production-grade safety, reliability, and performance in mind.
11//! * DeepCausality provides recursive causal data structures that concisely express arbitrary complex causal structures.
12//! * DeepCausality enables context awareness across data-like, time-like, space-like, spacetime-like entities stored within (multiple) context-hyper-graphs.
13//! * DeepCausality simplifies modeling of complex tempo-spatial patterns.
14//! * DeepCausality comes with Causal State Machine (CSM)
15//!
16mod alias;
17mod errors;
18mod extensions;
19mod traits;
20mod types;
21mod utils;
22pub mod utils_test;
23
24// Re-Export Core Types
25pub use deep_causality_core::{
26    CausalEffectPropagationProcess, CausalMonad, CausalityError, CausalityErrorEnum, EffectLog,
27    EffectValue, PropagatingEffect, PropagatingProcess,
28};
29
30pub use deep_causality_haft::{LogAddEntry, LogAppend, LogEffect, LogSize};
31
32//
33// Aliases
34//
35pub use crate::alias::*;
36//
37// Error types
38//
39pub use crate::errors::*;
40//
41// Traits
42//
43// Adjustable Traits
44pub use crate::traits::adjustable::{Adjustable, UncertainAdjustable};
45// Assumeable Traits
46pub use crate::traits::assumable::Assumable;
47pub use crate::traits::assumable::AssumableReasoning;
48// Causable Traits
49pub use crate::traits::causable::{Causable, MonadicCausable};
50// Causable Graph Traits
51pub use crate::traits::causable_graph::graph::CausableGraph;
52pub use crate::traits::causable_graph::graph_reasoning::MonadicCausableGraphReasoning;
53pub use crate::traits::causable_graph::*;
54pub use crate::traits::contextuable::coordinate::Coordinate;
55pub use crate::traits::contextuable::datable::Datable;
56pub use crate::traits::contextuable::datable_uncertain::UncertainDatable;
57pub use crate::traits::contextuable::metric::Metric;
58pub use crate::traits::contextuable::metric_coordinate::MetricCoordinate;
59pub use crate::traits::contextuable::metric_tensor::MetricTensor4D;
60pub use crate::traits::contextuable::space_temporal::SpaceTemporal;
61pub use crate::traits::contextuable::space_temporal::SpaceTemporalInterval;
62pub use crate::traits::contextuable::spatial::Spatial;
63pub use crate::traits::contextuable::symbolic::Symbolic;
64pub use crate::traits::contextuable::temporal::Temporal;
65// contextuable Traits
66pub use crate::traits::contextuable::Contextuable;
67// Contextuable Graph Traits
68pub use crate::traits::contextuable_graph::ContextuableGraph;
69pub use crate::traits::contextuable_graph::ExtendableContextuableGraph;
70// CSM traits
71pub use crate::traits::csm_evaluable::CsmEvaluable;
72// Identifiable Traits
73pub use crate::traits::identifiable::Identifiable;
74// Indexable Traits
75pub use crate::traits::indexable::data_index_current::CurrentDataIndex;
76pub use crate::traits::indexable::data_index_previous::PreviousDataIndex;
77pub use crate::traits::indexable::data_indexable::DataIndexable;
78pub use crate::traits::indexable::time_index_current::CurrentTimeIndex;
79pub use crate::traits::indexable::time_index_previous::PreviousTimeIndex;
80pub use crate::traits::indexable::time_indexable::TimeIndexable;
81// Inferable Traits
82pub use crate::traits::inferable::Inferable;
83pub use crate::traits::inferable::InferableReasoning;
84// Observable Traits
85pub use crate::traits::observable::Observable;
86pub use crate::traits::observable::ObservableReasoning;
87// Scalar traits
88pub use crate::traits::scalar::scalar_projector::ScalarProjector;
89pub use crate::traits::scalar::scalar_value::ScalarValue;
90// Transferable Trait
91pub use crate::traits::transferable::Transferable;
92//
93// Types
94//
95// Causal types
96pub use crate::types::causal_types::aggregate_logic::AggregateLogic;
97pub use crate::types::causal_types::causal_type::CausaloidType;
98pub use crate::types::causal_types::causaloid::Causaloid;
99pub use crate::types::causal_types::causaloid_graph::CausaloidGraph;
100pub use crate::types::causal_types::*;
101// Default context node types.
102pub use crate::types::context_node_types::data::Data;
103pub use crate::types::context_node_types::data_uncertain::data_uncertain_bool::UncertainBooleanData;
104pub use crate::types::context_node_types::data_uncertain::data_uncertain_f64::UncertainFloat64Data;
105pub use crate::types::context_node_types::root::Root;
106// Space context node types.
107pub use crate::types::context_node_types::space::ecef_space::EcefSpace;
108pub use crate::types::context_node_types::space::euclidean_space::EuclideanSpace;
109pub use crate::types::context_node_types::space::geo_space::GeoSpace;
110pub use crate::types::context_node_types::space::ned_space::NedSpace;
111pub use crate::types::context_node_types::space::quaternion_space::QuaternionSpace;
112pub use crate::types::context_node_types::space::space_kind::SpaceKind;
113// Space time context node types.
114pub use crate::types::context_node_types::space_time::euclidean_spacetime::EuclideanSpacetime;
115pub use crate::types::context_node_types::space_time::lorentzian_spacetime::LorentzianSpacetime;
116pub use crate::types::context_node_types::space_time::minkowski_spacetime::MinkowskiSpacetime;
117pub use crate::types::context_node_types::space_time::space_time_kind::SpaceTimeKind;
118pub use crate::types::context_node_types::space_time::tangent_spacetime::TangentSpacetime;
119// Symbolic context node types.
120pub use crate::types::context_node_types::symbol::base_symbol::BaseSymbol;
121pub use crate::types::context_node_types::symbol::symbol_kind::SymbolKind;
122// pub use crate::types::context_types::node_types::symbol::symbol_kind
123// Symbolic spacetime context node types.
124pub use crate::types::context_node_types::symbol_spacetime::causal_set_spacetime::CausalSetSpacetime;
125pub use crate::types::context_node_types::symbol_spacetime::conformal_spacetime::ConformalSpacetime;
126// Time context node types.
127pub use crate::types::context_node_types::time::discrete_time::DiscreteTime;
128pub use crate::types::context_node_types::time::entropic_time::EntropicTime;
129pub use crate::types::context_node_types::time::euclidean_time::EuclideanTime;
130pub use crate::types::context_node_types::time::lorentzian_time::LorentzianTime;
131pub use crate::types::context_node_types::time::symbolic_time::{SymbolicTime, SymbolicTimeUnit};
132pub use crate::types::context_node_types::time::time_kind::TimeKind;
133// Context types
134pub use crate::types::context_types::context_graph;
135pub use crate::types::context_types::context_graph::Context;
136pub use crate::types::context_types::contextoid::contextoid_type::*;
137pub use crate::types::context_types::contextoid::*;
138// Other context types
139pub use crate::types::context_types::relation_kind::*;
140pub use crate::types::context_types::time_scale::TimeScale;
141// CSM types
142pub use crate::types::csm_types::csm::CSM;
143pub use crate::types::csm_types::csm_action::CausalAction;
144pub use crate::types::csm_types::csm_parameter::action_parameter_value::ActionParameterValue;
145pub use crate::types::csm_types::csm_parameter::proposed_action::ProposedAction;
146pub use crate::types::csm_types::csm_parameter::uncertain_parameter::UncertainParameter;
147pub use crate::types::csm_types::csm_state::CausalState;
148// Generative types
149pub use crate::types::generative_types::effect_system::{
150    AuditableGraphGenerator, GraphGeneratableEffect, GraphGeneratableEffectSystem,
151    GraphGeneratableEffectWitness,
152};
153pub use crate::types::generative_types::interpreter::{CausalSystemState, Interpreter};
154pub use crate::types::generative_types::modification_log::{
155    ModificationLog, ModificationLogEntry, OpStatus,
156};
157pub use crate::types::generative_types::operation::{OpTree, Operation};
158// Model types
159pub use crate::types::model_types::assumption::Assumption;
160pub use crate::types::model_types::inference::Inference;
161pub use crate::types::model_types::model::Model;
162pub use crate::types::model_types::observation::Observation;
163
164//
165//Symbolic types
166pub use crate::types::symbolic_types::symbolic_representation::SymbolicRepresentation;
167pub use crate::types::symbolic_types::symbolic_result::SymbolicResult;
168//
169
170// Utils
171//
172pub use crate::utils::math_utils;
173pub use crate::utils::monadic_collection_utils;
174pub use crate::utils::time_utils;
175// Causable Collection Traits
176pub use traits::causable_collection::collection_accessor::CausableCollectionAccessor;
177pub use traits::causable_collection::collection_reasoning::monadic_collection::MonadicCausableCollection;
178
179// Uncertainty types
180pub use deep_causality_uncertain::Uncertain;