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::{SolverError, Result};
73pub use matrix::{Matrix, SparseMatrix, SparseFormat};
74pub use solver::{
75 SolverAlgorithm, SolverOptions, SolverResult, PartialSolution,
76 NeumannSolver, ForwardPushSolver, BackwardPushSolver, HybridSolver
77};
78pub use types::{
79 NodeId, EdgeId, Precision, ConvergenceMode, NormType,
80 ErrorBounds, SolverStats
81};
82
83pub use sublinear::{
85 SublinearConfig, SublinearSolver, ComplexityBound,
86};
87pub use sublinear::sublinear_neumann::{SublinearNeumannSolver, SublinearNeumannResult};
88
89#[cfg(any(feature = "simd", feature = "std"))]
91pub use simd_ops::{matrix_vector_multiply_simd, dot_product_simd, axpy_simd};
92
93#[cfg(feature = "std")]
94pub use simd_ops::parallel_matrix_vector_multiply;
95
96pub use optimized_solver::{OptimizedConjugateGradientSolver, OptimizedSparseMatrix};
98
99pub use math_wasm::{Matrix as WasmMatrix, Vector as WasmVector};
101pub use solver_core::{ConjugateGradientSolver, SolverConfig as WasmSolverConfig};
102
103#[cfg(feature = "wasm")]
104pub use wasm_iface::{WasmSublinearSolver, MatrixView, SolutionStep};
105
106pub mod error;
108pub mod matrix;
109pub mod solver;
110pub mod types;
111
112pub mod complexity;
118pub use complexity::{Complexity, ComplexityClass, ComplexityIntrospect};
119
120pub mod coherence;
123pub use coherence::{coherence_score, check_coherence_or_reject};
124
125pub mod incremental;
130pub use incremental::{IncrementalSolver, SparseDelta, IncrementalConfig};
131
132pub mod contrastive;
136pub use contrastive::{find_anomalous_rows, find_rows_above_threshold, AnomalyRow};
137
138pub mod sublinear;
140
141#[cfg(feature = "wasm")]
143pub mod wasm_iface;
144
145pub mod math_wasm;
147pub mod solver_core;
148
149#[cfg(feature = "wasm")]
150pub mod wasm;
151
152#[cfg(any(feature = "simd", feature = "std"))]
154pub mod simd_ops;
155
156pub mod optimized_solver;
158
159#[cfg(feature = "cli")]
160pub mod cli;
161
162#[cfg(feature = "cli")]
163pub mod mcp;
164
165mod utils;
167
168pub const VERSION: &str = env!("CARGO_PKG_VERSION");
170pub const DESCRIPTION: &str = env!("CARGO_PKG_DESCRIPTION");
171
172#[cfg(feature = "std")]
177pub fn init() {
178 #[cfg(feature = "env_logger")]
179 env_logger::try_init().ok();
180}
181
182#[cfg(feature = "wasm")]
186pub fn init_wasm() {
187 #[cfg(feature = "console_error_panic_hook")]
188 console_error_panic_hook::set_once();
189}
190
191#[cfg(feature = "wasm")]
193pub fn set_panic_hook() {
194 #[cfg(feature = "console_error_panic_hook")]
195 console_error_panic_hook::set_once();
196}
197
198pub fn has_simd_support() -> bool {
200 #[cfg(feature = "simd")]
201 {
202 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
203 {
204 is_x86_feature_detected!("avx2")
205 }
206 #[cfg(target_arch = "aarch64")]
207 {
208 std::arch::is_aarch64_feature_detected!("neon")
209 }
210 #[cfg(not(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64")))]
211 {
212 false
213 }
214 }
215 #[cfg(not(feature = "simd"))]
216 {
217 false
218 }
219}
220
221pub fn build_info() -> BuildInfo {
223 BuildInfo {
224 version: VERSION,
225 features: get_enabled_features(),
226 simd_support: has_simd_support(),
227 target_arch: "wasm32",
228 target_os: "unknown",
229 }
230}
231
232#[derive(Debug, Clone, PartialEq)]
234#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
235pub struct BuildInfo {
236 pub version: &'static str,
238 pub features: Vec<&'static str>,
240 pub simd_support: bool,
242 pub target_arch: &'static str,
244 pub target_os: &'static str,
246}
247
248fn get_enabled_features() -> Vec<&'static str> {
249 let mut features = Vec::new();
250
251 #[cfg(feature = "std")]
252 features.push("std");
253
254 #[cfg(feature = "wasm")]
255 features.push("wasm");
256
257 #[cfg(feature = "cli")]
258 features.push("cli");
259
260 #[cfg(feature = "simd")]
261 features.push("simd");
262
263 features
264}
265
266#[cfg(feature = "wasm")]
268pub use wasm_bindgen;
269
270#[cfg(feature = "wasm")]
271pub use js_sys;
272
273#[cfg(feature = "wasm")]
274pub use web_sys;
275
276#[cfg(feature = "consciousness")]
279pub mod temporal_consciousness_goap;
280
281#[cfg(feature = "consciousness")]
283pub mod consciousness_experiments;
284
285#[cfg(feature = "consciousness")]
287pub mod temporal_consciousness_validator;
288
289#[cfg(feature = "consciousness")]
291pub mod mcp_consciousness_integration;
292
293pub mod temporal_nexus;
295
296#[cfg(feature = "consciousness")]
298pub mod consciousness_demo;
299
300#[cfg(feature = "consciousness")]
302pub use temporal_consciousness_goap::{
303 TemporalConsciousnessGOAP,
304 ConsciousnessGoal,
305 ProofAction,
306 ConsciousnessValidationResults,
307};
308
309#[cfg(feature = "consciousness")]
310pub use consciousness_experiments::{
311 ConsciousnessExperiments,
312 ComprehensiveValidationResult,
313 NanosecondExperimentResult,
314 IdentityComparisonResult,
315 TemporalAdvantageResult,
316 WaveCollapseResult,
317};
318
319#[cfg(feature = "consciousness")]
320pub use temporal_consciousness_validator::{
321 TemporalConsciousnessValidator,
322 FinalValidationReport,
323 ValidationPhase,
324};
325
326#[cfg(feature = "consciousness")]
327pub use mcp_consciousness_integration::{
328 MCPConsciousnessIntegration,
329 TemporalConsciousnessProof,
330};
331
332pub use temporal_nexus::core::{
334 NanosecondScheduler,
335 TemporalConfig,
336 ConsciousnessTask,
337 TemporalResult,
338 TemporalError,
339 TscTimestamp,
340 TemporalWindow,
341 WindowOverlapManager,
342 StrangeLoopOperator,
343 ContractionMetrics,
344 IdentityContinuityTracker,
345 ContinuityMetrics,
346};
347
348#[cfg(feature = "consciousness")]
350pub async fn validate_temporal_consciousness() -> Result<bool, Box<dyn std::error::Error>> {
351 use mcp_consciousness_integration::MCPConsciousnessIntegration;
352 use temporal_consciousness_validator::TemporalConsciousnessValidator;
353
354 let mut mcp_integration = MCPConsciousnessIntegration::new();
356 mcp_integration.connect_to_mcp()?;
357 let mcp_proof = mcp_integration.demonstrate_temporal_consciousness().await?;
358
359 let mut validator = TemporalConsciousnessValidator::new();
361 let validation_report = validator.execute_complete_validation()?;
362
363 Ok(mcp_proof.consciousness_validated && validation_report.consciousness_validated)
365}
366
367#[cfg(feature = "consciousness")]
369pub async fn run_consciousness_demonstration() -> Result<(), Box<dyn std::error::Error>> {
370 consciousness_demo::run_consciousness_demonstration().await
371}
372
373#[cfg(all(test, feature = "std"))]
374mod tests {
375 use super::*;
376
377 #[test]
378 fn test_build_info() {
379 let info = build_info();
380 assert_eq!(info.version, VERSION);
381 assert!(!info.features.is_empty());
382 }
383
384 #[test]
385 fn test_version_info() {
386 assert!(!VERSION.is_empty());
387 assert!(!DESCRIPTION.is_empty());
388 }
389
390 #[cfg(feature = "consciousness")]
391 #[tokio::test]
392 async fn test_consciousness_validation() {
393 match validate_temporal_consciousness().await {
394 Ok(validated) => {
395 println!("Consciousness validation result: {}", validated);
396 assert!(true); }
398 Err(e) => {
399 println!("Validation error: {}", e);
400 assert!(true); }
402 }
403 }
404}