ipfrs_tensorlogic/lib.rs
1//! IPFRS TensorLogic - Integration with TensorLogic IR
2//!
3//! This crate provides comprehensive integration between IPFRS and TensorLogic including:
4//!
5//! ## Core Features
6//!
7//! - **IR (Intermediate Representation)**: Serialization and storage of logic terms
8//! - **Term and Predicate Storage**: Content-addressed storage for logical statements
9//! - **Distributed Reasoning**: Query caching, goal decomposition, and proof assembly
10//! - **Zero-Copy Tensor Transport**: Apache Arrow integration for efficient data sharing
11//! - **Safetensors Support**: Read/write Safetensors format for ML models
12//! - **PyTorch Checkpoint Support**: Load/save PyTorch .pt/.pth model checkpoints
13//! - **Shared Memory**: Cross-process memory mapping for large tensors
14//! - **Gradient Management**: Compression, aggregation, and differential privacy
15//! - **Model Version Control**: Git-like versioning for ML models
16//! - **Provenance Tracking**: Complete lineage tracking for datasets and models
17//! - **Computation Graphs**: IPLD-based graph storage with optimization
18//! - **Device Management**: Heterogeneous device support with adaptive batch sizing
19//! - **FFI Profiling**: Overhead measurement and bottleneck identification
20//! - **Allocation Optimization**: Buffer pooling and zero-copy conversions
21//! - **GPU Support**: Stub implementation for future CUDA/OpenCL/Vulkan integration
22//!
23//! ## Performance Targets
24//!
25//! - FFI call overhead: < 1μs
26//! - Zero-copy tensor access: < 100ns
27//! - Query cache lookup: < 1μs
28//! - Term serialization: < 10μs for small terms
29//!
30//! # Examples
31//!
32//! ## Basic Term and Predicate Creation
33//!
34//! ```
35//! use ipfrs_tensorlogic::{Term, Predicate, Constant};
36//!
37//! // Create terms
38//! let alice = Term::Const(Constant::String("Alice".to_string()));
39//! let bob = Term::Const(Constant::String("Bob".to_string()));
40//! let x = Term::Var("X".to_string());
41//!
42//! // Create a predicate: parent(Alice, Bob)
43//! let pred = Predicate::new("parent".to_string(), vec![alice, bob]);
44//! assert!(pred.is_ground());
45//! ```
46//!
47//! ## Zero-Copy Tensor Operations
48//!
49//! ```
50//! use ipfrs_tensorlogic::{ArrowTensor, ArrowTensorStore};
51//!
52//! // Create a tensor from f32 data
53//! let data: Vec<f32> = vec![1.0, 2.0, 3.0, 4.0];
54//! let tensor = ArrowTensor::from_slice_f32("my_tensor", vec![4], &data);
55//!
56//! // Zero-copy access to the data
57//! let slice = tensor.as_slice_f32().expect("example: should succeed in docs");
58//! assert_eq!(slice[0], 1.0);
59//!
60//! // Create a tensor store
61//! let mut store = ArrowTensorStore::new();
62//! store.insert(tensor);
63//! assert_eq!(store.len(), 1);
64//! ```
65//!
66//! ## Query Caching
67//!
68//! ```
69//! use ipfrs_tensorlogic::{QueryCache, QueryKey};
70//!
71//! // Create a cache with capacity 100
72//! let cache = QueryCache::new(100);
73//!
74//! // Insert a query result
75//! let key = QueryKey {
76//! predicate_name: "parent".to_string(),
77//! ground_args: vec![],
78//! };
79//! cache.insert(key.clone(), vec![]);
80//!
81//! // Retrieve from cache
82//! let result = cache.get(&key);
83//! assert!(result.is_some());
84//! ```
85//!
86//! ## Gradient Compression
87//!
88//! ```
89//! use ipfrs_tensorlogic::GradientCompressor;
90//!
91//! let gradient = vec![0.1, 0.5, 0.01, 0.8, 0.02];
92//!
93//! // Top-k compression (keep largest 2 values)
94//! let sparse = GradientCompressor::top_k(&gradient, vec![5], 2).expect("example: should succeed in docs");
95//! assert_eq!(sparse.nnz(), 2); // Only 2 non-zero elements
96//!
97//! // Quantization to int8
98//! let quantized = GradientCompressor::quantize(&gradient, vec![5]);
99//! assert!(quantized.compression_ratio() > 1.0);
100//! ```
101//!
102//! ## Device-Aware Batch Sizing
103//!
104//! ```
105//! use ipfrs_tensorlogic::{DeviceCapabilities, AdaptiveBatchSizer};
106//! use std::sync::Arc;
107//!
108//! // Detect device capabilities
109//! let caps = DeviceCapabilities::detect().expect("example: should succeed in docs");
110//! println!("Device: {:?}, Memory: {} GB",
111//! caps.device_type,
112//! caps.memory.total_bytes / 1024 / 1024 / 1024);
113//!
114//! // Create adaptive batch sizer
115//! let sizer = AdaptiveBatchSizer::new(Arc::new(caps))
116//! .with_min_batch_size(1)
117//! .with_max_batch_size(256);
118//!
119//! // Calculate optimal batch size
120//! let model_size = 500 * 1024 * 1024; // 500MB model
121//! let item_size = 256 * 1024; // 256KB per item
122//! let batch_size = sizer.calculate(item_size, model_size);
123//! println!("Optimal batch size: {}", batch_size);
124//! ```
125//!
126//! ## FFI Profiling
127//!
128//! ```
129//! use ipfrs_tensorlogic::{FfiProfiler, global_profiler};
130//!
131//! let profiler = FfiProfiler::new();
132//!
133//! // Profile a function call
134//! {
135//! let _guard = profiler.start("my_ffi_function");
136//! // Your FFI code here
137//! }
138//!
139//! // Get statistics
140//! let stats = profiler.get_stats("my_ffi_function").expect("example: should succeed in docs");
141//! println!("Calls: {}, Avg: {:?}", stats.call_count, stats.avg_duration);
142//!
143//! // Use global profiler
144//! let global = global_profiler();
145//! let _guard = global.start("global_operation");
146//! ```
147//!
148//! ## Buffer Pooling
149//!
150//! ```
151//! use ipfrs_tensorlogic::BufferPool;
152//!
153//! let pool = BufferPool::new(4096, 10); // 4KB buffers, max 10 pooled
154//!
155//! // Acquire buffer from pool
156//! let mut buffer = pool.acquire();
157//! buffer.as_mut().extend_from_slice(&[1, 2, 3, 4]);
158//!
159//! // Buffer automatically returned to pool when dropped
160//! drop(buffer);
161//! assert!(pool.size() > 0); // Buffer available for reuse
162//! ```
163//!
164//! ## Zero-Copy Conversions
165//!
166//! ```
167//! use ipfrs_tensorlogic::ZeroCopyConverter;
168//!
169//! let floats: Vec<f32> = vec![1.0, 2.0, 3.0, 4.0];
170//!
171//! // Zero-copy conversion to bytes
172//! let bytes = ZeroCopyConverter::slice_to_bytes(&floats);
173//! assert_eq!(bytes.len(), 16); // 4 floats * 4 bytes
174//!
175//! // Zero-copy conversion back
176//! let floats_back: &[f32] = ZeroCopyConverter::bytes_to_slice(bytes);
177//! assert_eq!(floats, floats_back);
178//! ```
179//!
180//! ## Safetensors Multi-Dtype Support
181//!
182//! ```
183//! use ipfrs_tensorlogic::{SafetensorsWriter, SafetensorsReader, ArrowTensor};
184//! use bytes::Bytes;
185//!
186//! // Create a model with multiple data types
187//! let mut writer = SafetensorsWriter::new();
188//!
189//! // Add float32 weights
190//! writer.add_f32("layer1.weights", vec![128, 64], &vec![0.1; 8192]);
191//!
192//! // Add float64 biases for high precision
193//! writer.add_f64("layer1.bias", vec![64], &vec![0.01; 64]);
194//!
195//! // Add int32 indices
196//! writer.add_i32("vocab_indices", vec![1000], &vec![42; 1000]);
197//!
198//! // Add int64 large IDs
199//! writer.add_i64("entity_ids", vec![100], &vec![1000000; 100]);
200//!
201//! // Serialize and read back
202//! let bytes = writer.serialize().expect("example: should succeed in docs");
203//! let reader = SafetensorsReader::from_bytes(Bytes::from(bytes)).expect("example: should succeed in docs");
204//!
205//! // Load as Arrow tensors for zero-copy access
206//! let weights = reader.load_as_arrow("layer1.weights").expect("example: should succeed in docs");
207//! let bias = reader.load_as_arrow("layer1.bias").expect("example: should succeed in docs");
208//! let indices = reader.load_as_arrow("vocab_indices").expect("example: should succeed in docs");
209//! let ids = reader.load_as_arrow("entity_ids").expect("example: should succeed in docs");
210//!
211//! assert!(weights.as_slice_f32().is_some());
212//! assert!(bias.as_slice_f64().is_some());
213//! assert!(indices.as_slice_i32().is_some());
214//! assert!(ids.as_slice_i64().is_some());
215//! ```
216//!
217//! ## Memory Profiling
218//!
219//! ```
220//! use ipfrs_tensorlogic::MemoryProfiler;
221//! use std::time::Duration;
222//!
223//! let profiler = MemoryProfiler::new();
224//!
225//! {
226//! let _guard = profiler.start_tracking("tensor_allocation");
227//! let data: Vec<f32> = vec![1.0; 1000000]; // ~4 MB
228//! std::thread::sleep(Duration::from_millis(10));
229//! drop(data);
230//! }
231//!
232//! let stats = profiler.get_stats("tensor_allocation").expect("example: should succeed in docs");
233//! assert_eq!(stats.track_count, 1);
234//! assert!(stats.total_duration >= Duration::from_millis(10));
235//!
236//! // Generate and print a report
237//! let report = profiler.generate_report();
238//! println!("Total operations tracked: {}", report.total_operations);
239//! ```
240//!
241//! ## Model Quantization
242//!
243//! ```
244//! use ipfrs_tensorlogic::{QuantizedTensor, QuantizationConfig};
245//!
246//! // Per-tensor INT8 symmetric quantization
247//! let weights = vec![0.5, -0.3, 0.8, -0.1];
248//! let config = QuantizationConfig::int8_symmetric();
249//! let quantized = QuantizedTensor::quantize_per_tensor(&weights, vec![4], config).expect("example: should succeed in docs");
250//!
251//! // Dequantize back to f32
252//! let dequantized = quantized.dequantize();
253//! assert_eq!(dequantized.len(), 4);
254//!
255//! // Check compression ratio
256//! println!("Compression: {:.2}x", quantized.compression_ratio());
257//! ```
258//!
259//! ## More Examples
260//!
261//! For complete examples, see the `examples/` directory:
262//! - `basic_reasoning.rs` - TensorLogic inference and backward chaining
263//! - `query_optimization.rs` - Materialized views and query caching
264//! - `proof_storage.rs` - Proof fragment management and compression
265//! - `proof_explanation_demo.rs` - Automatic proof explanation in natural language (multiple styles)
266//! - `model_versioning.rs` - Git-like version control for ML models
267//! - `model_quantization.rs` - Model quantization for edge deployment (INT4/INT8, per-channel, dynamic)
268//! - `tensor_storage.rs` - Safetensors and Arrow integration
269//! - `device_aware_training.rs` - Device detection and adaptive batching
270//! - `federated_learning.rs` - Gradient compression and differential privacy
271//! - `allocation_optimization.rs` - Buffer pooling and zero-copy techniques
272//! - `ffi_profiling.rs` - FFI overhead measurement
273//! - `distributed_graph_execution.rs` - Graph partitioning across multiple workers
274//! - `memory_profiling.rs` - Memory usage tracking and profiling
275//! - `visualization_demo.rs` - Graph and proof visualization with DOT format
276
277use ipfrs_core::Cid;
278use serde::{Deserialize, Deserializer, Serializer};
279
280pub mod kernel_registry;
281pub use kernel_registry::{
282 KernelDescriptor, KernelPrecision, KernelQuery, KernelRegistryStats, KernelTarget,
283 TensorKernelRegistry,
284};
285
286pub mod allocation_optimizer;
287pub mod arrow;
288pub mod audit_log;
289pub mod cache;
290pub mod checkpoint_manager;
291pub mod checkpoint_v2;
292pub mod codec_registry;
293pub mod computation_graph;
294pub mod consensus;
295pub mod constraint_solver;
296pub mod datalog;
297pub mod device;
298pub mod distributed_backward_chainer;
299pub mod feed_forward;
300pub mod ffi_profiler;
301pub mod gpu;
302pub mod gradient;
303pub mod gradient_accumulator;
304pub mod gradient_clipper;
305pub mod gradient_noise;
306pub mod gradient_sparsify;
307pub mod graph_partitioner;
308pub mod inference_cache;
309pub mod inference_trace;
310pub mod ipld_codec;
311pub mod ipld_path;
312pub mod ir;
313pub mod kb_federation;
314pub mod kg_traversal;
315pub mod memory_profiler;
316pub mod memory_tracker;
317pub mod multi_hop;
318pub mod op_scheduler;
319pub mod optimizer;
320pub mod privacy_budget;
321pub mod proof_cache;
322pub mod proof_explanation;
323pub mod proof_serializer;
324pub mod proof_storage;
325pub mod proof_tree;
326pub mod proof_tree_export;
327pub mod proof_tree_streaming;
328pub mod proof_verifier;
329pub mod provenance;
330pub mod pytorch_checkpoint;
331pub mod quantization;
332pub mod reasoning;
333pub mod recursive_reasoning;
334pub mod remote_reasoning;
335pub mod rule_conflict_v2;
336pub mod rule_dependency;
337pub mod rule_profiler;
338pub mod rule_versioning;
339pub mod safetensors_support;
340pub mod session_manager;
341pub mod session_replay;
342pub mod shared_memory;
343pub mod storage;
344pub mod tensor_arena;
345pub mod tensor_diff;
346pub mod tensor_pool;
347pub mod term_index;
348pub mod utils;
349pub mod version_control;
350pub mod versioned_cache;
351pub mod visualization;
352// ConstraintSolver — CSP solver with AC-3, backtracking, and MRV heuristics.
353// Note: `SolverConfig` and `SolverResult` are aliased as `CspSolverConfig` and
354// `CspSolverResult` to avoid collision with the same names already exported
355// from `markov_decision_process` (as `MdpSolverConfig` / `MdpSolverResult`).
356pub use constraint_solver::{
357 Assignment as CspAssignment, Constraint as CspConstraint, ConstraintSolver, CspError, CspStats,
358 CspVarId, CspVariable, Domain as CspDomain, SolverConfig as CspSolverConfig,
359 SolverResult as CspSolverResult,
360};
361pub mod budget_manager;
362pub mod early_stopping;
363pub mod rule_migrator;
364pub mod slice_manager;
365pub mod tensor_checksum;
366pub mod tensor_gc;
367pub use early_stopping::{
368 EarlyStoppingConfig, EarlyStoppingMonitor, EarlyStoppingStats, EpochMetrics, StopCriterion,
369 StopDecision,
370};
371pub mod dependency_graph;
372pub mod event_bus_v2;
373pub mod feature_extractor;
374pub mod flow_controller;
375pub mod inference_scheduler;
376pub mod memory_layout;
377pub mod memory_pool;
378pub mod ml_feature_extractor;
379pub mod op_dispatcher;
380pub mod op_fusion;
381pub mod query_optimizer;
382pub mod rule_index;
383pub mod rule_validator;
384
385// TensorMemoryLayout — manages tensor memory layout descriptors
386// Note: `TensorShape` is also exported as `MemoryLayoutShape` for callers
387// that need to import it alongside other crates that define their own
388// `TensorShape`.
389pub use memory_layout::{
390 LayoutDescriptor, LayoutOrder, LayoutStats, MemoryLayoutShape, TensorMemoryLayout,
391 TensorShape as MemoryTensorShape,
392};
393
394// TensorFeatureExtractor — statistical and structural feature extraction
395pub use feature_extractor::{
396 ExtractedFeature, ExtractionResult, ExtractorConfig, ExtractorStats, FeatureKind,
397 TensorFeatureExtractor,
398};
399
400// FeatureExtractor — composable ML preprocessing pipeline
401// Note: `ExtractorStats` from `ml_feature_extractor` is re-exported as
402// `FeExtractorStats` to avoid collision with `feature_extractor::ExtractorStats`.
403pub use ml_feature_extractor::{
404 fit_minmax_scaler, fit_onehot, fit_standard_scaler, ExtractedFeatures, FePipelineStats,
405 FeatureError, FeatureExtractor, FeatureSpec, FeatureTransform, FeatureValue,
406};
407
408// TensorOpDispatcher — routes tensor operations to registered backends
409// (CPU/GPU/Remote/Simulated) with priority-ordered fallback chains and
410// per-backend statistics.
411pub use op_dispatcher::{
412 BackendKind, BackendRegistration, BackendStats, DispatchOp, DispatchResult, DispatcherStats,
413 TensorOpDispatcher,
414};
415
416// TensorOpFusion — detects and fuses sequences of tensor operations into
417// optimised compound operations, reducing memory bandwidth overhead.
418// Note: `TensorOp` is re-exported as `FusionTensorOp` to avoid collision
419// with `computation_graph::TensorOp` which is already exported at crate root.
420pub use op_fusion::{FusedOp, FusionPlan, FusionStats, TensorOp as FusionTensorOp, TensorOpFusion};
421
422// TensorMemoryPool — slab-based memory pool with size-class bucketing
423pub use memory_pool::{MemoryPoolStats, PoolSlot, SizeClass, TensorMemoryPool};
424
425// TensorBlockPool — pre-allocated fixed-size block pool with owner tracking,
426// reservation, defragmentation, and shrink-to-fit.
427pub use memory_pool::{BlockPoolStats, BlockStatus, MemoryBlock, PoolConfig, TensorBlockPool};
428
429// TensorRuleIndex — multi-dimensional index over TensorLogic rules
430pub use rule_index::{IndexedRule, RuleArity, RuleIndexStats, RuleQuery, TensorRuleIndex};
431
432// TensorInferenceScheduler — deadline-aware priority scheduling for inference jobs
433pub use inference_scheduler::{
434 InferenceJob, JobStatus, SchedulerConfig, SchedulerStats, TensorInferenceScheduler,
435};
436
437// TensorQueryOptimizer — query plan rewriting
438pub use query_optimizer::{
439 estimated_cost, OptimizationResult, OptimizationRule, OptimizerStats, QueryNode,
440 TensorQueryOptimizer,
441};
442
443// Tensor flow controller — backpressure, rate limiting, priority-based admission
444pub use flow_controller::{
445 FlowControllerConfig, FlowItem, FlowPriority, FlowState, FlowStats, TensorFlowController,
446};
447
448// Tensor rule validator
449pub use rule_validator::{
450 RuleSpec, TensorRuleValidator, ValidationError, ValidationResult, ValidatorConfig,
451};
452
453// Tensor dependency graph
454pub use dependency_graph::{
455 DependencyEdge, DependencyKind, DirtySet, GraphStats, TensorDependencyGraph,
456};
457
458// Checkpoint pruning and validation
459pub use checkpoint_manager::{
460 crc32, CheckpointPruner, CheckpointRecord, CheckpointValidator, RetentionPolicy,
461 ValidationError as CheckpointValidationError,
462};
463
464// Distributed backward chaining
465pub use distributed_backward_chainer::{Binding, DistributedBackwardChainer};
466
467// Multi-hop rule resolution
468pub use multi_hop::{
469 HopRecord, HopTrace, MultiHopConfig, MultiHopResolver, MultiHopResult, VisitedSet,
470};
471
472// Proof tree
473pub use proof_tree::{ProofNode, ProofTree};
474
475// Proof tree streaming
476pub use proof_tree_streaming::{
477 ProofTreeStreamSummary, ProofTreeStreamer, ProofTreeUpdate, ProofTreeUpdateSink,
478};
479
480// Allocation optimization
481pub use allocation_optimizer::{
482 AdaptiveBuffer, AllocationError, BufferPool, PooledBuffer, StackBuffer, TypedBufferPool,
483 TypedPooledBuffer, ZeroCopyConverter,
484};
485
486// Tensor pool (slab-based, power-of-two bucket pool for Arrow IPC zero-copy operations)
487pub use tensor_pool::{
488 bucket_for, PooledBuffer as TensorPoolBuffer, TensorPool, TensorPoolConfig, TensorPoolSnapshot,
489 TensorPoolStats, NUM_BUCKETS,
490};
491
492// Arrow integration
493pub use arrow::{ArrowTensor, ArrowTensorStore, TensorDtype, TensorMetadata, ZeroCopyAccessor};
494
495// Caching
496pub use cache::{
497 CacheManager, CacheStats, CacheStatsSnapshot, CombinedCacheStats, QueryCache, QueryKey,
498 RemoteFactCache,
499};
500
501// Computation graphs
502pub use computation_graph::{
503 BatchScheduler, ComputationGraph, DistributedExecutor, ExecutionBatch, GraphError, GraphNode,
504 GraphOptimizer, GraphPartition, LazyCache, NodeAssignment, ParallelExecutor, StreamChunk,
505 StreamingExecutor, TensorOp,
506};
507
508// Datalog parsing
509pub use datalog::{parse_fact, parse_query, parse_rule, DatalogParser, ParseError, Statement};
510
511// Device capabilities
512pub use device::{
513 AdaptiveBatchSizer, CpuInfo, DeviceArch, DeviceCapabilities, DeviceError,
514 DevicePerformanceTier, DeviceProfiler, DeviceType, MemoryInfo,
515};
516
517// FFI profiling
518pub use ffi_profiler::{
519 global_profiler, FfiCallGuard, FfiCallStats, FfiProfiler, OverheadSummary, ProfilingReport,
520};
521
522// Feedforward network layer for transformer blocks
523pub use feed_forward::{
524 FFLayer, FFStats, FeedForwardActivation, FeedForwardConfig, FeedForwardNetwork,
525};
526
527// GPU execution (stub for future integration)
528pub use gpu::{
529 GpuBackend, GpuBuffer, GpuDevice, GpuError, GpuExecutor, GpuKernel, GpuMemoryManager,
530};
531
532// Gradient storage
533pub use gradient::{
534 clip_gradient_norm, federated_average, load_gradient_from_arrow, store_gradient_as_arrow,
535 AggregationMethod, BackwardPassConfig, BackwardPassCoordinator, BackwardPassStats,
536 BackwardPassStep, BackwardStepStatus, ClientInfo, ClientState, ComputationGraphError,
537 ComputationGraphStore, ComputationNode, ConvergenceDetector, DPMechanism, DifferentialPrivacy,
538 DistributedGradientAccumulator, FederatedRound, GradientAggregator, GradientCheckpoint,
539 GradientCompressor, GradientDelta, GradientError, GradientVerifier, LayerGradient,
540 ModelSyncProtocol, PrivacyBudget as GradientPrivacyBudget, QuantizedGradient,
541 SecureAggregation, SparseGradient,
542};
543
544// IR types
545pub use ir::{Constant, KnowledgeBase, KnowledgeBaseStats, Predicate, Rule, Term, TermRef};
546
547// Memory profiling
548pub use memory_profiler::{
549 MemoryProfiler, MemoryProfilingReport, MemoryStats, MemoryTrackingGuard,
550};
551
552// Query optimization
553pub use optimizer::{
554 OptimizationRecommendation, PlanNode, PredicateStats, QueryOptimizer, QueryPlan,
555};
556
557// Reasoning
558pub use reasoning::{
559 apply_subst_predicate, rename_rule_vars, unify_predicates, CycleDetector, DistributedReasoner,
560 GoalDecomposition, InferenceEngine, MemoizedInferenceEngine, Proof, ProofRule, Substitution,
561};
562
563// Recursive reasoning
564pub use recursive_reasoning::{
565 FixpointEngine, StratificationAnalyzer, StratificationResult, TableStats, TabledInferenceEngine,
566};
567
568// Remote reasoning
569pub use remote_reasoning::{
570 DistributedGoalResolver, DistributedInferenceSession, DistributedProofAssembler,
571 DistributedReasonerConfig, DistributedReasonerV2, FactDiscoveryRequest, FactDiscoveryResponse,
572 GoalResolutionRequest, GoalResolutionResponse, IncrementalLoadRequest, IncrementalLoadResponse,
573 InferenceRequest, InferenceResponse, InferenceResultStream, MockRemoteKnowledgeProvider,
574 PartialResult, QueryRequest, QueryResponse, ReasoningError, RemoteKnowledgeProvider,
575 RemoteReasoningError, RemoteResult, SessionMetrics, SessionStats,
576};
577
578// Proof storage
579pub use proof_storage::{
580 ProofAssembler, ProofFragment, ProofFragmentRef, ProofFragmentStore, ProofMetadata, RuleRef,
581};
582
583// Proof explanation
584pub use proof_explanation::{
585 ExplanationConfig, ExplanationStyle, FragmentProofExplainer, ProofExplainer,
586 ProofExplanationBuilder,
587};
588
589// Provenance tracking
590pub use provenance::{
591 Attribution, DatasetProvenance, Hyperparameters, License, LineageTrace, ProvenanceError,
592 ProvenanceGraph, TrainingProvenance,
593};
594
595// PyTorch checkpoint support
596pub use pytorch_checkpoint::{
597 CheckpointMetadata, OptimizerState, ParamState, PyTorchCheckpoint, StateDict, TensorData,
598};
599
600// Quantization support
601pub use quantization::{
602 CalibrationMethod, DynamicQuantizer, QuantizationConfig, QuantizationError,
603 QuantizationGranularity, QuantizationParams, QuantizationScheme, QuantizedTensor,
604};
605
606// Safetensors support
607pub use safetensors_support::{
608 ChunkedModelStorage, ModelSummary, SafetensorError, SafetensorsReader, SafetensorsWriter,
609 TensorInfo,
610};
611
612// Shared memory
613pub use shared_memory::{
614 SharedMemoryError, SharedMemoryPool, SharedTensorBuffer, SharedTensorBufferReadOnly,
615 SharedTensorInfo,
616};
617
618// IPLD codec
619pub use ipld_codec::{
620 block_to_fact, block_to_kb, block_to_rule, fact_cid, fact_ipld_to_predicate, fact_to_block,
621 kb_to_block, predicate_to_fact_ipld, predicate_to_term_ipld, rule_cid, rule_ipld_to_rule,
622 rule_to_block, rule_to_rule_ipld, term_ipld_to_predicate, FactIpld, KnowledgeBaseIpld,
623 RuleIpld, TermIpld,
624};
625
626// IPLD path resolution
627pub use ipld_path::{IpldPathResolver, IpldPathValue, PathError};
628
629// Storage
630pub use storage::{
631 FactSnapshot, KnowledgeBaseSnapshot, RuleSnapshot, TensorLogicError,
632 TensorLogicPersistenceConfig, TensorLogicStore, TensorLogicStoreStats,
633};
634
635// Inference cache
636pub use inference_cache::{
637 hash_goal as inference_hash_goal, CacheStats as InferenceCacheStats, CachedResult,
638 InferenceCache, InferenceCacheKey,
639};
640
641// Versioned inference cache
642pub use versioned_cache::{
643 CacheEntry, CacheError, CacheKey, CacheStatsSnapshot as VersionedCacheStatsSnapshot,
644 VersionedInferenceCache,
645};
646
647// Knowledge base federation
648pub use kb_federation::{
649 export_kb_as_cid, import_remote_kb, merge_knowledge_bases, KbConflict, KbMergeDiff,
650};
651
652// Utilities
653pub use utils::{KnowledgeBaseUtils, PredicateBuilder, QueryUtils, RuleBuilder, TermUtils};
654
655// Version control
656pub use version_control::{
657 Branch, LayerDiff, ModelCommit, ModelDiff, ModelDiffer, ModelRepository, VersionControlError,
658};
659
660// Rule set versioning and conflict resolution
661pub use rule_versioning::{
662 ConflictResolver, ConflictStrategy, ResolvedRuleSet, RuleSetDiff, RuleSetVersion,
663 VersionedRuleSet,
664};
665
666// Distributed session manager
667pub use session_manager::{
668 DistributedSessionManager, PeerId as SessionPeerId, SessionError, SessionId,
669 SessionMetrics as SessionManagerMetrics, SessionMetricsSnapshot, SessionStatus,
670 MAX_CONCURRENT_SESSIONS,
671};
672
673// Visualization
674pub use visualization::{GraphVisualizer, ProofVisualizer};
675
676// Privacy budget accounting (differential privacy)
677pub use privacy_budget::{
678 BudgetError, BudgetSnapshot, PerRoundBudget, PrivacyBudget as DpPrivacyBudget, RenyiAccountant,
679 RoundGuard,
680};
681
682// Knowledge graph traversal
683pub use kg_traversal::{
684 EdgeType, KgEdge, KgError, KgNode, KnowledgeGraph, KnowledgeGraphTraverser, NodeType,
685};
686
687// Round consensus tracking for federated learning
688pub use consensus::{
689 ConsensusError, ConsensusStats, ConsensusStatsSnapshot, PeerVote, QuorumPolicy, QuorumResult,
690 RoundConsensusTracker, RoundId, RoundStatus, Vote,
691};
692
693// Codec registry — compression/encoding codec selection and peer negotiation
694pub use codec_registry::{
695 CodecDescriptor, CodecError, CodecId, CodecNegotiationRecord, CodecRegistry, SpeedClass,
696};
697
698// Inference audit log — immutable compliance trail for distributed inference queries
699pub use audit_log::{
700 AuditEntry, AuditError, AuditEvent, AuditStats, AuditStatsSnapshot, InferenceAuditLog,
701};
702
703// Rule dependency graph — topological evaluation scheduling
704pub use rule_dependency::{
705 DepError, DependencyType, EvaluationSchedule, RuleDependency, RuleDependencyGraph, RuleId,
706};
707
708// Gradient sparsification and delta encoding for bandwidth-constrained federated learning.
709// Note: `SparseGradientV2` / `GradientDeltaV2` are used as aliases to avoid
710// collisions with the existing types in the `gradient` module.
711pub use gradient_sparsify::{
712 DeltaEncoder, DeltaStats, GradientDelta as GradientDeltaV2, GradientSparsifier,
713 SparseGradient as SparseGradientV2, SparsifierStats, SparsityConfig,
714};
715
716// Gradient noise injection — training regularization via configurable noise distributions.
717pub use gradient_noise::{
718 GradientNoiseConfig, GradientNoiseInjector, NoiseSample, NoiseStats, NoiseType,
719};
720
721// Gradient clipping — norm and value clipping strategies to prevent gradient explosion.
722pub use gradient_clipper::{
723 ClipperStats, ClippingResult, ClippingStrategy, GradientTensor, TensorGradientClipper,
724};
725
726// Proof serializer — serialize/deserialize distributed proof trees for IPLD.
727pub use proof_serializer::{
728 ProofNodeInput, ProofNodeRecord, ProofSerError, ProofSerializer, ProofSerializerStats,
729 ProofSerializerStatsSnapshot, ProofTreeInput, SerializedProof,
730};
731
732// Tensor arena — bump-allocating slab arena for inference pipeline tensors.
733pub use tensor_arena::{ArenaError, ArenaRegion, ArenaSlice, ArenaStats, TensorArena};
734
735// Proof caching layer — LFU-evicting, TTL-expiring cache for proof results.
736pub use proof_cache::{
737 fnv1a_hash, CachedProof, ProofCacheConfig, ProofCacheKey, ProofCacheStats, ProofCachingLayer,
738};
739
740// TensorStateSnapshot — capture/restore TensorLogic runtime state.
741pub mod state_snapshot;
742pub use state_snapshot::{
743 fnv1a_u64, FieldData, SnapshotDelta, SnapshotField, StateSnapshot, StateSnapshotStats,
744 TensorStateSnapshot,
745};
746
747// TensorProvenanceTracker — full lineage tracking for tensor values and
748// inference results.
749pub mod provenance_tracker;
750pub use provenance_tracker::{
751 ProvenanceChain, ProvenanceKind, ProvenanceRecord, ProvenanceStats, TensorProvenanceTracker,
752};
753
754// TensorExecutionTracer — records detailed execution traces of TensorLogic
755// inference operations for debugging, profiling, and replay purposes.
756pub mod execution_tracer;
757
758// TensorOptimizationHistory — records and analyzes optimization steps to
759// detect convergence, track best results, and guide adaptive LR schedules.
760pub mod optimization_history;
761pub use execution_tracer::{
762 TensorExecutionTracer, TraceEvent, TraceEventKind, TraceSummary, TracerConfig, TracerStats,
763};
764pub use optimization_history::{
765 ConvergenceStatus, HistoryStats, OptimizationHistoryConfig, OptimizationStep,
766 TensorOptimizationHistory,
767};
768
769// TensorCheckpointScheduler — step/tick/loss-triggered automatic checkpointing.
770// Note: `CheckpointRecord`, `SchedulerConfig`, and `SchedulerStats` are aliased
771// to avoid collisions with the same names already exported from
772// `checkpoint_manager` / `inference_scheduler`.
773pub mod checkpoint_scheduler;
774pub use checkpoint_scheduler::{
775 CheckpointRecord as SchedulerCheckpointRecord, CheckpointTrigger,
776 SchedulerConfig as CheckpointSchedulerConfig, SchedulerStats as CheckpointSchedulerStats,
777 TensorCheckpointScheduler,
778};
779
780// TensorGradAccumulator — mini-batch gradient accumulation before optimizer step.
781// Note: `AccumulatorStats` is aliased to `GradAccumulatorStats` to avoid
782// collision with `gradient_accumulator::AccumulatorStats` already exported
783// at crate root.
784pub mod grad_accumulator;
785pub use grad_accumulator::{
786 AccumulationMode, AccumulatorConfig as GradAccumulatorConfig,
787 AccumulatorStats as GradAccumulatorStats, GradBuffer, TensorGradAccumulator,
788};
789
790// Reverse-mode automatic differentiation (autograd) for scalar-output functions.
791pub mod autograd;
792pub use autograd::{AutogradGraph, AutogradNode, AutogradOp, NodeId};
793
794// TensorSliceView — zero-copy logical views via offset+stride descriptors.
795pub mod slice_view;
796pub use slice_view::{BroadcastShape, SliceRange, SliceViewStats, TensorSliceView, ViewDescriptor};
797
798// Batch normalisation layer with running statistics tracking, training/inference
799// modes, and configurable epsilon/momentum parameters.
800pub mod batch_norm;
801pub use batch_norm::{BatchNormConfig, BatchNormStats, NormMode, TensorBatchNorm};
802
803// TensorQuantizer — symmetric/asymmetric calibration-based quantization (INT8/INT4).
804pub mod quantizer;
805pub use quantizer::{QuantBits, QuantMode, QuantParams, QuantizerStats, TensorQuantizer};
806
807// MultiPrecisionQuantizer — multi-precision tensor quantization (INT8, INT4, FP16, BF16).
808// Note: Several names conflict with existing exports:
809// - `QuantizedTensor` → `TqQuantizedTensor` (conflicts with quantization module)
810// - `QuantizerStats` → `TqQuantizerStats` (conflicts with quantizer module)
811// - `TensorQuantizer` → `MultiPrecisionQuantizer` (conflicts with quantizer module)
812pub mod tensor_quantizer;
813pub use tensor_quantizer::{
814 percentile as tq_percentile, DequantizedTensor as TqDequantizedTensor, QuantizationMode,
815 QuantizedTensor as TqQuantizedTensor, QuantizerConfig, QuantizerError,
816 QuantizerStats as TqQuantizerStats, TensorQuantizer as MultiPrecisionQuantizer,
817};
818
819// TensorCheckpointer — periodic checkpointing of tensor computation state with rollback.
820pub mod checkpointer;
821pub use checkpointer::{Checkpoint, CheckpointConfig, CheckpointerStats, TensorCheckpointer};
822
823// TensorProfiler — operation profiling for tensor computations.
824// Note: `ProfilerStats` is aliased to `TensorProfilerStats` to avoid
825// collision with `rule_profiler::ProfilerStats`.
826pub mod profiler;
827pub use profiler::{OpProfile, ProfileEntry, ProfilerStats as TensorProfilerStats, TensorProfiler};
828
829// TensorDataLoader — batch data loading with shuffling and epoch tracking.
830pub mod data_loader;
831pub use data_loader::{DataBatch, DataLoaderConfig, DataLoaderStats, TensorDataLoader};
832
833// TensorShapeInference — static shape inference for tensor operation graphs.
834// Note: `TensorShape` is re-exported as `InferenceTensorShape` to avoid
835// collision with `memory_layout::TensorShape` (already exported as
836// `MemoryTensorShape`).
837pub mod shape_inference;
838pub use shape_inference::{
839 InferenceRule, ShapeInferenceStats, ShapeOp, TensorShape as InferenceTensorShape,
840 TensorShapeInference,
841};
842
843// TensorLossFunction — common loss functions for tensor computations
844// (MSE, MAE, CrossEntropy, Huber, Hinge) with gradient support.
845pub mod loss_function;
846pub use loss_function::{LossConfig, LossFunctionStats, LossType, Reduction, TensorLossFunction};
847
848// TensorActivation — activation functions with forward/backward passes.
849pub mod activation;
850pub use activation::{ActivationConfig, ActivationStats, ActivationType, TensorActivation};
851
852// ActivationFunction — richer activation layer with derivative, vectorised
853// ops, dead-ReLU tracking, and extended type set (ELU, Mish, HardSwish, …).
854// Names collide with `activation`; re-export under `Af*` aliases.
855pub mod activation_function;
856pub use activation_function::ActivationConfig as AfActivationConfig;
857pub use activation_function::ActivationFunction;
858pub use activation_function::ActivationStats as AfActivationStats;
859pub use activation_function::ActivationType as AfActivationType;
860
861// TensorRegularizer — L1/L2/ElasticNet regularization for tensor parameters.
862pub mod regularizer;
863pub use regularizer::{RegularizerConfig, RegularizerStats, RegularizerType, TensorRegularizer};
864
865// LossScaler — dynamic loss scaling for mixed-precision training to prevent
866// gradient underflow (Static, Dynamic, Gradual policies).
867pub mod loss_scaler;
868pub use loss_scaler::{LossScaler, LossScalerConfig, ScaleUpdatePolicy, ScalerStats};
869
870// TensorLRScheduler — learning rate scheduling strategies (Constant,
871// StepDecay, ExponentialDecay, CosineAnnealing, WarmupLinear, OneCycleLR).
872pub mod lr_scheduler;
873pub use lr_scheduler::{
874 LRSchedulerConfig,
875 LRSchedulerStats,
876 // Multi-strategy LearningRateScheduler
877 LearningRateScheduler,
878 LrHistory,
879 LrSchedulerState,
880 LrStats,
881 ScheduleType,
882 SchedulerStrategy,
883 TensorLRScheduler,
884};
885
886// WeightInitializer — weight initialization strategies (Xavier, He, LeCun,
887// Orthogonal, Sparse, TruncatedNormal) for tensor operations.
888pub mod weight_initializer;
889pub use weight_initializer::{
890 FanMode, InitDistribution, InitStats, InitStrategy, TensorShape as InitTensorShape,
891 WeightInitConfig, WeightInitializer,
892};
893
894// TensorOptimizer — SGD optimizer variants (vanilla, momentum, Nesterov)
895// with weight decay and dampening support.
896pub mod sgd_optimizer;
897pub use sgd_optimizer::{
898 OptimizerType, ParameterState, SGDConfig, SGDOptimizer, SGDOptimizerStats,
899};
900
901// ModelPruner — weight pruning with magnitude, structured, percentile,
902// random, and gradual scheduling strategies.
903pub mod model_pruner;
904pub use model_pruner::{
905 LayerWeights, ModelPruner, PrunerConfig, PrunerStats, PruningResult, PruningStrategy,
906};
907
908// AttentionMechanism — production-grade multi-head scaled dot-product attention
909// with positional encoding, masking, and attention pattern analysis.
910//
911// Name collision notes:
912// - `AttentionStats` → `AttnStats` (new production type)
913// - `SimpleAttentionStats` replaces the old `AttentionStats` in the simple API
914// - `AttentionOutput` → `AttentionOutput` (new, uses AttentionMatrix fields)
915// - Old simple variants exported with `Simple*` prefix
916pub mod attention_mechanism;
917pub use attention_mechanism::{
918 causal_mask,
919 matmul as attn_matmul,
920 // Free-standing utilities
921 scaled_dot_product_attention,
922 softmax_1d,
923 transpose as attn_transpose,
924 // Configuration
925 AttentionConfig,
926 // Sub-types
927 AttentionHead,
928 // Matrix primitive
929 AttentionMatrix,
930 // Production-grade mechanism
931 AttentionMechanism,
932 // Output / stats
933 AttentionOutput,
934 // Error type
935 AttnError,
936 AttnStats,
937 PositionalEncoding,
938 // Simple / backward-compatible API
939 SimpleAttentionConfig,
940 SimpleAttentionMechanism,
941 SimpleAttentionOutput,
942 SimpleAttentionStats,
943};
944
945// GradientCheckpointer — gradient accumulation, checkpointing, and replay for
946// distributed training with fault tolerance.
947// Note: Several names conflict with existing exports:
948// - `GradientTensor` → `GcGradientTensor` (conflicts with gradient_clipper)
949// - `GradientCheckpoint` → `GcGradientCheckpoint` (conflicts with gradient module)
950// - `CheckpointerStats` → `GcCheckpointerStats` (conflicts with checkpointer module)
951// - `AccumulationMode` → `GcAccumulationMode` (conflicts with grad_accumulator)
952pub mod gradient_checkpointer;
953pub use gradient_checkpointer::{
954 fnv1a_f64_slice, CheckpointId, CheckpointerConfig, GcAccumulationMode, GcCheckpointerStats,
955 GcGradientCheckpoint, GcGradientTensor, GradientCheckpointer, GradientCheckpointerError,
956};
957
958// ModelEnsemble — multi-model ensemble aggregator supporting voting, averaging,
959// and stacking strategies for distributed inference.
960pub mod model_ensemble;
961pub use model_ensemble::{
962 EnsembleConfig, EnsembleError, EnsembleResult, EnsembleStats, EnsembleStrategy, ModelEnsemble,
963 ModelMember, ModelPrediction,
964};
965
966// OnlineLearner — online / incremental learning algorithms for streaming data.
967// Implements Perceptron, Passive-Aggressive (PA-I), and SGD with Momentum.
968// Note: `LossFunction` is re-exported as `OlLossFunction` to avoid collision
969// with `loss_function::LossType` and related names already at crate root.
970pub mod online_learner;
971pub use online_learner::{
972 LearnerError, OlLossFunction, OnlineAlgorithm, OnlineLearner, OnlineLearnerStats,
973 TrainingSample,
974};
975
976// AdaptiveOptimizer — Adam, AdaGrad, RMSProp, and AdamW optimizers for
977// distributed gradient descent.
978// Note: Several names conflict with existing exports:
979// - `OptimizerState` → `AoOptimizerState` (conflicts with pytorch_checkpoint)
980// - `OptimizerStats` → `AoOptimizerStats` (conflicts with query_optimizer)
981pub mod adaptive_optimizer;
982pub use adaptive_optimizer::{
983 AdaptiveOptimizer, OptimizerAlgorithm, OptimizerError, OptimizerState as AoOptimizerState,
984 OptimizerStats as AoOptimizerStats, ParameterGroup,
985};
986
987// NeuralArchitectureSearch — random / evolutionary NAS for discovering optimal network structures.
988// Note: All public types are prefixed with `Nas` to avoid any future collision risk.
989pub mod neural_arch_search;
990pub use neural_arch_search::{
991 fnv1a_nas, NasArchitecture, NasConfig, NasEvaluationResult, NasLayerType, NasSearchStrategy,
992 NasStats, NeuralArchitectureSearch,
993};
994
995// HyperparameterTuner — Bayesian optimization, random search, and grid search
996// for hyperparameter tuning with UCB acquisition and importance scoring.
997pub mod hyperparameter_tuner;
998pub use hyperparameter_tuner::{
999 HpConfig, HpSpec, HpTunerError, HpType, HpValue, HyperparameterTuner, TunerConfig, TunerStats,
1000 TuningResult, TuningStrategy,
1001};
1002
1003// MetaLearner — MAML-inspired meta-learning system that learns to learn.
1004pub mod meta_learner;
1005pub use meta_learner::{
1006 MetaError, MetaLearner, MetaLearnerConfig, MetaLearnerStats, MetaParameters, MetaTask,
1007 TaskAdaptation, TaskExample, TaskId, TaskType,
1008};
1009
1010// ReinforcementLearner — tabular Q-learning, SARSA, and Double Q-learning agents
1011// for discrete reinforcement learning.
1012pub mod reinforcement_learner;
1013pub use reinforcement_learner::{
1014 ActionId, Experience, Policy, ReinforcementLearner, RlAlgorithm, RlError, RlStats, StateId,
1015};
1016
1017// CausalInferenceEngine — do-calculus, interventional distributions,
1018// and counterfactual reasoning over Gaussian structural causal models.
1019pub mod causal_inference;
1020pub use causal_inference::{
1021 CausalEdge, CausalEdgeType, CausalError, CausalGraph, CausalInferenceEngine, CausalNode,
1022 CausalNodeId, CausalStats, CounterfactualQuery, InferenceResult, Intervention,
1023};
1024
1025// DistributedOptimizer — coordinates distributed gradient aggregation across
1026// workers with staleness handling and fault tolerance.
1027// Note: `WorkerState` is re-exported as `DoWorkerState` to avoid collision
1028// with any future `WorkerState` names at crate root.
1029// BayesianUpdateEngine — conjugate-prior Bayesian belief updating.
1030pub mod bayesian_updater;
1031pub use bayesian_updater::{
1032 BayesError, BayesianUpdateEngine, CredibleInterval, Observation as BayesObservation,
1033 Posterior as BayesPosterior, Prior as BayesPrior,
1034};
1035
1036pub mod distributed_optimizer;
1037pub use distributed_optimizer::{
1038 AggregatedGradient, AggregationStrategy, DistOptimizerStats, DistributedOptimizer,
1039 GradientUpdate as DoGradientUpdate, OptimizerDistError, WorkerId as DoWorkerId,
1040 WorkerState as DoWorkerState,
1041};
1042
1043// GraphNeuralNetwork — message-passing GNN with node feature aggregation,
1044// edge weighting, and multi-layer propagation.
1045pub mod graph_neural_network;
1046pub use graph_neural_network::{
1047 xorshift64 as gnn_xorshift64, GnnActivation, GnnAggregation, GnnConfig, GnnEdge, GnnError,
1048 GnnLayer, GnnNodeId, GnnStats, GraphNeuralNetwork, NodeFeatures,
1049};
1050
1051// DifferentialPrivacyEngine — Laplace/Gaussian/Randomized noise mechanisms,
1052// sensitivity clipping, privacy budget tracking, and composition theorems.
1053pub mod differential_privacy;
1054pub use differential_privacy::{
1055 BudgetTracker as DpBudgetTracker, DifferentialPrivacyEngine, DpError, DpQuery, DpResult,
1056 NoiseScale, PrivacyMechanism, PrivacyParameters as DpPrivacyParameters,
1057};
1058
1059// FuzzyLogicEngine — membership functions, fuzzy rules, Mamdani/Sugeno
1060// inference, and centroid / mean-of-max / largest-of-max defuzzification.
1061pub mod fuzzy_logic;
1062pub use fuzzy_logic::{
1063 DefuzzMethod, FuzzyError, FuzzyLogicEngine, FuzzyProposition, FuzzyRule, FuzzySet, FuzzyStats,
1064 FuzzyVariable, InferenceMethod, MembershipFunction,
1065};
1066
1067// FuzzyLogicEngine (full Mamdani) — production-quality engine with all MF
1068// variants (Triangle, Trapezoid, Gaussian, Bell, Sigmoid, Singleton, Linear),
1069// tree-structured FuzzyExpr antecedents (And/Or/Not/Very/Somewhat), Mamdani
1070// inference, and five defuzzification methods.
1071//
1072// Collision notes:
1073// • `MembershipFunction`, `FuzzySet`, `FuzzyVariable`, `FuzzyRule`,
1074// `FuzzyError`, `DefuzzMethod`, `FuzzyLogicEngine` already exported from
1075// `fuzzy_logic`; prefixed with `Fle`.
1076// • `InferenceResult` already exported from `causal_inference`; prefixed
1077// with `Fle`.
1078pub mod fuzzy_logic_engine;
1079pub use fuzzy_logic_engine::{
1080 DefuzzMethod as FleDefuzzMethod, EngineConfig, EngineStats, FuzzyError as FleFuzzyError,
1081 FuzzyExpr, FuzzyLogicEngine as FleFuzzyLogicEngine, FuzzyRule as FleFuzzyRule,
1082 FuzzySet as FleFuzzySet, FuzzyVariable as FleFuzzyVariable,
1083 InferenceResult as FleInferenceResult, MembershipFunction as FleMembershipFunction,
1084};
1085
1086// TemporalReasoningEngine — Allen's interval algebra, temporal constraints,
1087// event chains and windowed queries.
1088pub mod temporal_reasoning;
1089pub use temporal_reasoning::{
1090 AllenRelation, ConstraintViolation, TemporalConstraint, TemporalError, TemporalEvent,
1091 TemporalReasoningEngine, TemporalStats, TimeInterval, TimePoint,
1092};
1093
1094// MarkovDecisionProcess — tabular MDP solver (Value Iteration, Policy Iteration, Q-values).
1095// Note: `StateId`, `ActionId`, and `Policy` are already exported from
1096// `reinforcement_learner`; the MDP equivalents are exported under the `Mdp*`
1097// prefix to avoid name collisions.
1098pub mod markov_decision_process;
1099pub use markov_decision_process::{
1100 xorshift64 as mdp_xorshift64, xorshift_f64 as mdp_xorshift_f64, MarkovDecisionProcess,
1101 MdpActionId, MdpError, MdpPolicy, MdpState, MdpStateId, MdpStats,
1102 SolverConfig as MdpSolverConfig, SolverResult as MdpSolverResult, SolverType as MdpSolverType,
1103 Transition as MdpTransition, ValueFunction as MdpValueFunction,
1104};
1105
1106// NeuralSymbolicIntegrator — hybrid neural + symbolic inference engine.
1107pub mod neural_symbolic;
1108pub use neural_symbolic::{
1109 InferenceMode, IntegratorConfig, LogicalRule, NeuralSymbolicIntegrator, NsError, NsQuery,
1110 NsResult, NsStats, RuleType, Symbol, SymbolId,
1111};
1112
1113// EpistemicLogicReasoner — multi-agent epistemic logic over finite Kripke structures.
1114pub mod epistemic_logic;
1115pub use epistemic_logic::{
1116 AccessibilityRelation, AgentId, EpistemicError, EpistemicFormula, EpistemicLogicReasoner,
1117 EpistemicStats, KripkeModel, PossibleWorld, WorldId,
1118};
1119
1120// SymbolicNeuralOptimizer — hybrid symbolic + gradient-based optimizer.
1121// Note: `OptimizationStep` is re-exported as `SnoOptimizationStep` to avoid
1122// collision with `optimization_history::OptimizationStep`.
1123// `OptimizationResult` is re-exported as `SnoOptimizationResult` to avoid
1124// collision with `query_optimizer::OptimizationResult`.
1125pub mod symbolic_neural_optimizer;
1126pub use symbolic_neural_optimizer::{
1127 parse_constraint_bound, xorshift64 as sno_xorshift64, ConstraintBound, OptimizationObjective,
1128 ParameterVector, SnoOptimizationResult, SnoOptimizationStep, SnoOptimizerConfig,
1129 SymbolicConstraint, SymbolicNeuralOptimizer,
1130};
1131
1132// TemporalPatternMatcher — NFA-based temporal sequence pattern matching.
1133//
1134// Collision note: `TemporalConstraint` is already exported from
1135// `temporal_reasoning`; the version from this module is re-exported under the
1136// alias `TpmTemporalConstraint` to avoid the name conflict.
1137// Similarly `xorshift64` is already exported from `graph_neural_network` and
1138// `symbolic_neural_optimizer`; this one is exported as `tpm_xorshift64`.
1139pub mod temporal_pattern_matcher;
1140pub use temporal_pattern_matcher::{
1141 xorshift64 as tpm_xorshift64, EventLabel, MatchResult as TpmMatchResult, MatcherConfig,
1142 MatcherError, MatcherStats, NfaState, PatternStep, RepeatSpec,
1143 TemporalConstraint as TpmTemporalConstraint, TemporalPattern, TemporalPatternMatcher,
1144 TimedEvent,
1145};
1146
1147// CausalChainTracer — production-quality causal chain tracing for event sequences.
1148// Collision note: `CausalEdge` and `CausalNode` already exist in `causal_inference`;
1149// those from this module are re-exported under `CctCausalEdge` / `CctCausalNode` aliases.
1150// `xorshift64` is re-exported as `cct_xorshift64`.
1151pub mod causal_chain_tracer;
1152pub use causal_chain_tracer::{
1153 xorshift64 as cct_xorshift64, CausalChain, CausalChainTracer, CausalEdge as CctCausalEdge,
1154 CausalNode as CctCausalNode, CausalRelation, TraceQuery, TracerConfig as CctTracerConfig,
1155 TracerError, TracerStats as CctTracerStats,
1156};
1157
1158// RuleConflictResolver — production-quality logic rule conflict detection and resolution.
1159//
1160// Collision notes:
1161// • `LogicRule` is new (distinct from `LogicalRule` in `neural_symbolic`).
1162// • `ConflictType`, `ResolutionStrategy`, `ConflictRecord` exist inside
1163// `rule_conflict_v2` but are NOT exported at crate root — no aliases needed.
1164// • `xorshift64` is re-exported as `rcr_xorshift64` (consistent with gnn/sno/tpm/cct).
1165pub mod rule_conflict_resolver;
1166pub use rule_conflict_resolver::{
1167 xorshift64 as rcr_xorshift64, ConflictRecord, ConflictType, LogicRule, ResolutionStrategy,
1168 ResolverConfig, ResolverError, ResolverStats, RuleConflictResolver,
1169};
1170
1171// BeliefRevisionEngine — AGM-style belief revision (expansion, contraction, revision,
1172// consolidation) with epistemic entrenchment, recency bias, source-priority, and
1173// minimal-change retention functions.
1174//
1175// Collision note: `xorshift64` is already exported from several modules; this one is
1176// re-exported as `bre_xorshift64`.
1177pub mod belief_revision_engine;
1178pub use belief_revision_engine::{
1179 xorshift64 as bre_xorshift64, Belief, BeliefRevisionEngine, BeliefSet, ConsistencyCheck,
1180 RetentionFunction, RevisionConfig, RevisionError, RevisionOp, RevisionStats,
1181};
1182
1183// ProbabilisticLogicNetwork — indefinite truth values, PLN inference rules
1184// (Deduction, Induction, Abduction, Revision, Conjunction, Disjunction,
1185// Negation, ModusPonens), and hypergraph atom/link store.
1186//
1187// Collision notes:
1188// • `InferenceResult` is already exported from `causal_inference`;
1189// this module's type is re-exported as `PlnInferenceResult`.
1190// • `InferenceRule` is already exported from `shape_inference`;
1191// this module's type is re-exported as `PlnInferenceRule`.
1192pub mod probabilistic_logic_network;
1193pub use probabilistic_logic_network::{
1194 AtomType, LinkType, PlnAtom, PlnConfig, PlnError, PlnInferenceResult, PlnInferenceRule,
1195 PlnLink, PlnStats, ProbabilisticLogicNetwork, TruthValue,
1196};
1197
1198// Collision notes:
1199// • `EngineConfig` is already exported from `fuzzy_logic_engine`;
1200// this module's type is re-exported as `HteEngineConfig`.
1201pub mod hypothesis_test_engine;
1202pub use hypothesis_test_engine::{
1203 chi2_p_value, normal_cdf, sample_stats, t_cdf_approx, xorshift64, xorshift_normal,
1204 EngineConfig as HteEngineConfig, Hypothesis, HypothesisTestEngine, SampleData, TestError,
1205 TestResult, TestStatistic, TestStats, TestType,
1206};
1207
1208// ReinforcementLearningAgent — tabular RL with multiple algorithms
1209// (SARSA, Q-Learning, Expected SARSA, Double Q-Learning, N-Step TD)
1210// and multiple policies (EpsilonGreedy, Boltzmann, UCB, Random).
1211//
1212// Collision notes:
1213// • `RlError` is already exported from `reinforcement_learner`; the new
1214// error type is re-exported as `RlaRlError`.
1215// • `xorshift64` / `xorshift_f64` are re-exported as `rla_xorshift64` /
1216// `rla_xorshift_f64` (consistent naming convention).
1217pub mod reinforcement_learning_agent;
1218pub use reinforcement_learning_agent::{
1219 xorshift64 as rla_xorshift64, xorshift_f64 as rla_xorshift_f64, AgentConfig, AgentPolicy,
1220 AgentStats, AlgorithmType, EpisodeStats, ExperienceReplay, ReinforcementLearningAgent,
1221 RlAction, RlAgentError, RlState, Transition as RlaTransition,
1222};
1223
1224// BayesianNetworkInference — variable elimination, belief propagation, and
1225// sampling-based inference over discrete Bayesian networks.
1226//
1227// Collision notes:
1228// • `xorshift64` is already exported from `hypothesis_test_engine` at crate
1229// root; this module's copy is re-exported as `bni_xorshift64`.
1230pub mod bayesian_network_inference;
1231pub use bayesian_network_inference::{
1232 bni_xorshift64, BayesianNetwork, BayesianNetworkInference, BniConfig, BniError, BniStats,
1233 ConditionalProbabilityTable, EliminationOrder, Evidence, Factor, InferenceAlgorithm,
1234 InferenceQuery, QueryResult, RandomVariable,
1235};
1236
1237// MetaLearningOptimizer — MAML, Reptile, FOMAML, and ProtoNet meta-learning
1238// over a linear regression model.
1239//
1240// Collision notes:
1241// • `TaskId` is already exported from `meta_learner`; aliased as `MloTaskId`.
1242// • `TaskExample` is already exported from `meta_learner`; aliased as `MloTaskExample`.
1243// • `MetaTask` is already exported from `meta_learner`; aliased as `MloMetaTask`.
1244// • `MetaError` is already exported from `meta_learner`; aliased as `MloMetaError`.
1245// • `xorshift64` is internal to this module and NOT re-exported at crate root.
1246pub mod meta_learning_optimizer;
1247pub use meta_learning_optimizer::{
1248 AdaptationStep, MetaAlgorithm, MetaError as MloMetaError, MetaLearningOptimizer, MetaStats,
1249 MetaTask as MloMetaTask, ModelParams, OptimizerConfig, TaskExample as MloTaskExample,
1250 TaskId as MloTaskId,
1251};
1252
1253// TemporalKnowledgeGraph — tracks facts and relationships over time.
1254//
1255// Collision notes:
1256// • `NodeId` is already exported from `autograd`; aliased as `TkgNodeId`.
1257// • `QueryResult` is already exported from `bayesian_network_inference`; TkgQueryResult has no
1258// collision because it carries the `Tkg` prefix already.
1259pub mod temporal_knowledge_graph;
1260pub use temporal_knowledge_graph::{
1261 EdgeId as TkgEdgeId, NodeId as TkgNodeId, TemporalKnowledgeGraph, TkgEdge, TkgError, TkgEvent,
1262 TkgGraphStats, TkgMergePolicy, TkgNode, TkgQuery, TkgQueryResult, TkgSnapshot,
1263};
1264
1265// ProbabilisticProgramEngine — Bayesian reasoning and posterior sampling.
1266//
1267// Collision notes:
1268// • `xorshift64` is already exported from `hypothesis_test_engine`; the copy
1269// in this module is NOT re-exported at crate root (it is `pub(crate)` only
1270// inside the module). All external references use `ppe_xorshift64` if
1271// needed but we do not re-export it here to keep the API surface clean.
1272pub mod probabilistic_program_engine;
1273pub use probabilistic_program_engine::{
1274 PpeEngineConfig, PpePrior, PpeSampleResult, PpeSamplingMethod, PpeSamplingStats,
1275 ProbabilisticProgramEngine,
1276};
1277
1278pub mod constraint_propagation_engine;
1279pub use constraint_propagation_engine::{
1280 ConstraintPropagationEngine, CpeConstraint, CpeDomain, CpeEngineConfig, CpePropagationResult,
1281 CpePropagationStats, CpeVariable,
1282};
1283
1284// SymbolicExpressionSimplifier — multi-pass rewriting engine for symbolic math expressions.
1285pub mod symbolic_expression_simplifier;
1286pub use symbolic_expression_simplifier::{
1287 SesExpr, SesRewriteRule, SesSimplifierConfig, SesSimplifierStats, SymbolicExpressionSimplifier,
1288};
1289
1290// DecisionTreeLearner — ID3/C4.5-style decision tree with training, prediction,
1291// feature importance, pruning, and rich statistics.
1292pub mod decision_tree_learner;
1293pub use decision_tree_learner::{
1294 DecisionTreeLearner, DtlCriterion, DtlLearnerConfig, DtlLearnerStats, DtlNode, DtlPrediction,
1295 DtlSample,
1296};
1297
1298// AbductiveReasoningEngine — infers the best explanation for observed facts.
1299// All exported names use the `Abr` prefix to avoid collision with the `Are*`
1300// names already used by `adaptive_routing_engine`.
1301pub mod abductive_reasoning_engine;
1302pub use abductive_reasoning_engine::{
1303 abr_xorshift64, fnv1a_64 as abr_fnv1a_64, set_fingerprint as abr_set_fingerprint,
1304 AbductiveReasoningEngine, AbrAbductiveReasoningEngine, AbrCostFunction, AbrEngineConfig,
1305 AbrExplanation, AbrExplanationRecord, AbrHypothesis, AbrReasoningStats, AbrRule, AbrTerm,
1306};
1307
1308// EnsembleLearner — Bagging, AdaBoost, Gradient Boosting, Random Forest, and Stacking.
1309//
1310// Collision notes:
1311// • `ElEnsembleLearner` is a type alias for `EnsembleLearner` — no collision.
1312// • All exported names carry the `El` prefix; no crate-root conflicts expected.
1313pub mod ensemble_learner;
1314pub use ensemble_learner::{
1315 ElBaseModel, ElEnsembleLearner, ElError, ElLearnerConfig, ElLearnerStats, ElMethod,
1316 ElPrediction, ElSample, ElTrainingRecord, EnsembleLearner,
1317};
1318
1319/// Serialize CID as string
1320pub(crate) fn serialize_cid<S>(cid: &Cid, serializer: S) -> Result<S::Ok, S::Error>
1321where
1322 S: Serializer,
1323{
1324 serializer.serialize_str(&cid.to_string())
1325}
1326
1327/// Deserialize CID from string
1328pub(crate) fn deserialize_cid<'de, D>(deserializer: D) -> Result<Cid, D::Error>
1329where
1330 D: Deserializer<'de>,
1331{
1332 let s = String::deserialize(deserializer)?;
1333 s.parse().map_err(serde::de::Error::custom)
1334}