Files
el/engram/crates/engram-reasoning/src/lib.rs
T

51 lines
1.8 KiB
Rust

/// Engram Reasoning Engine — graph-native inference separated from language generation.
///
/// # What this crate is
///
/// This is NOT an LLM wrapper. It is a reasoning system that traverses the Engram
/// knowledge graph to reach conclusions through evidence chains.
///
/// LLMs: input tokens → transformer → output tokens. Reasoning and generation are
/// the same process. You cannot separate them.
///
/// This engine: hypothesis → graph traversal → evidence chains → confidence-weighted
/// conclusion. Generation happens separately (a codec converts the conclusion to
/// language). The reasoning IS the traversal.
///
/// # Quick Start
///
/// ```rust,no_run
/// use engram_core::{EngramDb, Node, Edge, NodeType, MemoryTier, RelationType};
/// use engram_reasoning::{ReasoningEngine, Hypothesis, HypothesisType, ReasoningConfig};
/// use std::path::Path;
/// use std::sync::{Arc, Mutex};
///
/// let db = Arc::new(Mutex::new(EngramDb::open(Path::new("/tmp/engram-reason-test")).unwrap()));
/// let config = ReasoningConfig::default();
/// let mut engine = ReasoningEngine::new(db, config);
///
/// let hypothesis = Hypothesis::new(
/// "Spreading activation improves memory retrieval",
/// vec![0.9f32, 0.1, 0.3, 0.7],
/// HypothesisType::IsTrue,
/// );
///
/// let result = engine.reason(&hypothesis).unwrap();
/// println!("Verdict: {:?}", result.conclusion.verdict);
/// println!("Confidence: {:.2}", result.confidence);
/// ```
pub mod engine;
pub mod types;
#[cfg(test)]
mod tests;
// Re-export the primary public surface
pub use engine::ReasoningEngine;
pub use types::{
CausalDirection, ChainType, Conclusion, EvidenceChain, EvidenceNode, EvidenceType,
Hypothesis, HypothesisType, InferenceEdge, InferenceEdgeType, ReasoningConfig,
ReasoningResult, Verdict,
};