1#![cfg_attr(not(feature = "std"), no_std)]
62#![warn(missing_docs, clippy::all)]
63#![allow(clippy::float_cmp)] extern crate alloc;
67
68#[cfg(feature = "std")]
69extern crate std;
70
71pub use error::{Result, SolverError};
73pub use matrix::{Matrix, SparseFormat, SparseMatrix};
74pub use solver::{
75 BackwardPushSolver, ForwardPushSolver, HybridSolver, NeumannSolver, PartialSolution,
76 SolverAlgorithm, SolverOptions, SolverResult,
77};
78pub use types::{ConvergenceMode, EdgeId, ErrorBounds, NodeId, NormType, Precision, SolverStats};
79
80pub use sublinear::sublinear_neumann::{SublinearNeumannResult, SublinearNeumannSolver};
82pub use sublinear::{ComplexityBound, SublinearConfig, SublinearSolver};
83
84#[cfg(any(feature = "simd", feature = "std"))]
86pub use simd_ops::{axpy_simd, dot_product_simd, matrix_vector_multiply_simd};
87
88#[cfg(feature = "std")]
89pub use simd_ops::parallel_matrix_vector_multiply;
90
91pub use optimized_solver::{OptimizedConjugateGradientSolver, OptimizedSparseMatrix};
93
94pub use math_wasm::{Matrix as WasmMatrix, Vector as WasmVector};
96pub use solver_core::{ConjugateGradientSolver, SolverConfig as WasmSolverConfig};
97
98#[cfg(feature = "wasm")]
99pub use wasm_iface::{MatrixView, SolutionStep, WasmSublinearSolver};
100
101pub mod error;
103pub mod matrix;
104pub mod solver;
105pub mod types;
106
107pub mod complexity;
113pub use complexity::{Complexity, ComplexityClass, ComplexityIntrospect};
114
115pub mod coherence;
118pub use coherence::{check_coherence_or_reject, coherence_score};
119
120pub mod incremental;
125pub use coherence::{
126 approximate_spectral_radius, delta_below_solve_threshold, delta_inf_bound,
127 optimal_neumann_terms, optimal_neumann_terms_with_rho, CoherenceCache,
128};
129pub use incremental::{
130 solve_on_change_sublinear, solve_on_change_sublinear_auto,
131 solve_on_change_sublinear_auto_with_rho, IncrementalConfig, IncrementalSolver,
132 SolveOnChangeSublinearOp, SparseDelta,
133};
134
135pub mod budget;
139pub use budget::{BudgetExhausted, PlanBudget};
140
141pub mod witness;
145pub use witness::{verify_sparse_solution, VerifySparseSolutionOp, WitnessReport};
146
147pub mod stream;
152pub use stream::{
153 event_stream_iter, EventStatus, EventStreamConfig, EventStreamOp, ProcessedEvent,
154};
155
156pub mod contrastive;
160pub use contrastive::{
161 contrastive_solve_on_change, contrastive_solve_on_change_sublinear,
162 contrastive_solve_on_change_sublinear_auto,
163 contrastive_solve_on_change_sublinear_auto_with_rho, find_anomalous_rows,
164 find_anomalous_rows_in_subset, find_rows_above_threshold, AnomalyRow,
165 ContrastiveSolveOnChangeOp, ContrastiveSolveOnChangeSublinearOp,
166};
167
168pub mod closure;
173pub use closure::{closure_indices, ClosureIndicesOp};
174
175pub mod entry;
181pub use entry::{
182 solve_single_entries_neumann, solve_single_entry_neumann, SolveSingleEntryNeumannOp,
183};
184
185pub mod sublinear;
187
188#[cfg(feature = "wasm")]
190pub mod wasm_iface;
191
192pub mod math_wasm;
194pub mod solver_core;
195
196#[cfg(feature = "wasm")]
197pub mod wasm;
198
199#[cfg(any(feature = "simd", feature = "std"))]
201pub mod simd_ops;
202
203pub mod optimized_solver;
205
206#[cfg(feature = "cli")]
207pub mod cli;
208
209#[cfg(feature = "cli")]
210pub mod mcp;
211
212mod utils;
214
215pub const VERSION: &str = env!("CARGO_PKG_VERSION");
217pub const DESCRIPTION: &str = env!("CARGO_PKG_DESCRIPTION");
218
219#[cfg(feature = "std")]
224pub fn init() {
225 #[cfg(feature = "env_logger")]
226 env_logger::try_init().ok();
227}
228
229#[cfg(feature = "wasm")]
233pub fn init_wasm() {
234 #[cfg(feature = "console_error_panic_hook")]
235 console_error_panic_hook::set_once();
236}
237
238#[cfg(feature = "wasm")]
240pub fn set_panic_hook() {
241 #[cfg(feature = "console_error_panic_hook")]
242 console_error_panic_hook::set_once();
243}
244
245pub fn has_simd_support() -> bool {
247 #[cfg(feature = "simd")]
248 {
249 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
250 {
251 is_x86_feature_detected!("avx2")
252 }
253 #[cfg(target_arch = "aarch64")]
254 {
255 std::arch::is_aarch64_feature_detected!("neon")
256 }
257 #[cfg(not(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64")))]
258 {
259 false
260 }
261 }
262 #[cfg(not(feature = "simd"))]
263 {
264 false
265 }
266}
267
268pub fn build_info() -> BuildInfo {
270 BuildInfo {
271 version: VERSION,
272 features: get_enabled_features(),
273 simd_support: has_simd_support(),
274 target_arch: "wasm32",
275 target_os: "unknown",
276 }
277}
278
279#[derive(Debug, Clone, PartialEq)]
281#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
282pub struct BuildInfo {
283 pub version: &'static str,
285 pub features: Vec<&'static str>,
287 pub simd_support: bool,
289 pub target_arch: &'static str,
291 pub target_os: &'static str,
293}
294
295fn get_enabled_features() -> Vec<&'static str> {
296 let mut features = Vec::new();
297
298 #[cfg(feature = "std")]
299 features.push("std");
300
301 #[cfg(feature = "wasm")]
302 features.push("wasm");
303
304 #[cfg(feature = "cli")]
305 features.push("cli");
306
307 #[cfg(feature = "simd")]
308 features.push("simd");
309
310 features
311}
312
313#[cfg(feature = "wasm")]
315pub use wasm_bindgen;
316
317#[cfg(feature = "wasm")]
318pub use js_sys;
319
320#[cfg(feature = "wasm")]
321pub use web_sys;
322
323#[cfg(feature = "consciousness")]
326pub mod temporal_consciousness_goap;
327
328#[cfg(feature = "consciousness")]
330pub mod consciousness_experiments;
331
332#[cfg(feature = "consciousness")]
334pub mod temporal_consciousness_validator;
335
336#[cfg(feature = "consciousness")]
338pub mod mcp_consciousness_integration;
339
340pub mod temporal_nexus;
342
343#[cfg(feature = "consciousness")]
345pub mod consciousness_demo;
346
347#[cfg(feature = "consciousness")]
349pub use temporal_consciousness_goap::{
350 ConsciousnessGoal, ConsciousnessValidationResults, ProofAction, TemporalConsciousnessGOAP,
351};
352
353#[cfg(feature = "consciousness")]
354pub use consciousness_experiments::{
355 ComprehensiveValidationResult, ConsciousnessExperiments, IdentityComparisonResult,
356 NanosecondExperimentResult, TemporalAdvantageResult, WaveCollapseResult,
357};
358
359#[cfg(feature = "consciousness")]
360pub use temporal_consciousness_validator::{
361 FinalValidationReport, TemporalConsciousnessValidator, ValidationPhase,
362};
363
364#[cfg(feature = "consciousness")]
365pub use mcp_consciousness_integration::{MCPConsciousnessIntegration, TemporalConsciousnessProof};
366
367pub use temporal_nexus::core::{
369 ConsciousnessTask, ContinuityMetrics, ContractionMetrics, IdentityContinuityTracker,
370 NanosecondScheduler, StrangeLoopOperator, TemporalConfig, TemporalError, TemporalResult,
371 TemporalWindow, TscTimestamp, WindowOverlapManager,
372};
373
374#[cfg(feature = "consciousness")]
376pub async fn validate_temporal_consciousness() -> Result<bool, Box<dyn std::error::Error>> {
377 use mcp_consciousness_integration::MCPConsciousnessIntegration;
378 use temporal_consciousness_validator::TemporalConsciousnessValidator;
379
380 let mut mcp_integration = MCPConsciousnessIntegration::new();
382 mcp_integration.connect_to_mcp()?;
383 let mcp_proof = mcp_integration.demonstrate_temporal_consciousness().await?;
384
385 let mut validator = TemporalConsciousnessValidator::new();
387 let validation_report = validator.execute_complete_validation()?;
388
389 Ok(mcp_proof.consciousness_validated && validation_report.consciousness_validated)
391}
392
393#[cfg(feature = "consciousness")]
395pub async fn run_consciousness_demonstration() -> Result<(), Box<dyn std::error::Error>> {
396 consciousness_demo::run_consciousness_demonstration().await
397}
398
399#[cfg(all(test, feature = "std"))]
400mod tests {
401 use super::*;
402
403 #[test]
404 fn test_build_info() {
405 let info = build_info();
406 assert_eq!(info.version, VERSION);
407 assert!(!info.features.is_empty());
408 }
409
410 #[test]
411 fn test_version_info() {
412 assert!(!VERSION.is_empty());
413 assert!(!DESCRIPTION.is_empty());
414 }
415
416 #[cfg(feature = "consciousness")]
417 #[tokio::test]
418 async fn test_consciousness_validation() {
419 match validate_temporal_consciousness().await {
420 Ok(validated) => {
421 println!("Consciousness validation result: {}", validated);
422 assert!(true); }
424 Err(e) => {
425 println!("Validation error: {}", e);
426 assert!(true); }
428 }
429 }
430}