#![cfg_attr(not(feature = "std"), no_std)]
#![warn(missing_docs, clippy::all)]
#![allow(clippy::float_cmp)]
extern crate alloc;
#[cfg(feature = "std")]
extern crate std;
pub use error::{Result, SolverError};
pub use matrix::{Matrix, SparseFormat, SparseMatrix};
pub use solver::{
BackwardPushSolver, ForwardPushSolver, HybridSolver, NeumannSolver, PartialSolution,
SolverAlgorithm, SolverOptions, SolverResult,
};
pub use types::{ConvergenceMode, EdgeId, ErrorBounds, NodeId, NormType, Precision, SolverStats};
pub use sublinear::sublinear_neumann::{SublinearNeumannResult, SublinearNeumannSolver};
pub use sublinear::{ComplexityBound, SublinearConfig, SublinearSolver};
#[cfg(any(feature = "simd", feature = "std"))]
pub use simd_ops::{axpy_simd, dot_product_simd, matrix_vector_multiply_simd};
#[cfg(feature = "std")]
pub use simd_ops::parallel_matrix_vector_multiply;
pub use optimized_solver::{OptimizedConjugateGradientSolver, OptimizedSparseMatrix};
pub use math_wasm::{Matrix as WasmMatrix, Vector as WasmVector};
pub use solver_core::{ConjugateGradientSolver, SolverConfig as WasmSolverConfig};
#[cfg(feature = "wasm")]
pub use wasm_iface::{MatrixView, SolutionStep, WasmSublinearSolver};
pub mod error;
pub mod matrix;
pub mod solver;
pub mod types;
pub mod complexity;
pub use complexity::{Complexity, ComplexityClass, ComplexityIntrospect};
pub mod coherence;
pub use coherence::{check_coherence_or_reject, coherence_score};
pub mod incremental;
pub use coherence::{
approximate_spectral_radius, delta_below_solve_threshold, delta_inf_bound,
optimal_neumann_terms, optimal_neumann_terms_with_rho, CoherenceCache,
};
pub use incremental::{
solve_on_change_sublinear, solve_on_change_sublinear_auto,
solve_on_change_sublinear_auto_with_rho, IncrementalConfig, IncrementalSolver,
SolveOnChangeSublinearOp, SparseDelta,
};
pub mod budget;
pub use budget::{BudgetExhausted, PlanBudget};
pub mod witness;
pub use witness::{verify_sparse_solution, VerifySparseSolutionOp, WitnessReport};
pub mod stream;
pub use stream::{
event_stream_iter, EventStatus, EventStreamConfig, EventStreamOp, ProcessedEvent,
};
pub mod contrastive;
pub use contrastive::{
contrastive_solve_on_change, contrastive_solve_on_change_sublinear,
contrastive_solve_on_change_sublinear_auto,
contrastive_solve_on_change_sublinear_auto_with_rho, find_anomalous_rows,
find_anomalous_rows_in_subset, find_rows_above_threshold, AnomalyRow,
ContrastiveSolveOnChangeOp, ContrastiveSolveOnChangeSublinearOp,
};
pub mod closure;
pub use closure::{closure_indices, ClosureIndicesOp};
pub mod entry;
pub use entry::{
solve_single_entries_neumann, solve_single_entry_neumann, SolveSingleEntryNeumannOp,
};
pub mod sublinear;
#[cfg(feature = "wasm")]
pub mod wasm_iface;
pub mod math_wasm;
pub mod solver_core;
#[cfg(feature = "wasm")]
pub mod wasm;
#[cfg(any(feature = "simd", feature = "std"))]
pub mod simd_ops;
pub mod optimized_solver;
#[cfg(feature = "cli")]
pub mod cli;
#[cfg(feature = "cli")]
pub mod mcp;
mod utils;
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
pub const DESCRIPTION: &str = env!("CARGO_PKG_DESCRIPTION");
#[cfg(feature = "std")]
pub fn init() {
#[cfg(feature = "env_logger")]
env_logger::try_init().ok();
}
#[cfg(feature = "wasm")]
pub fn init_wasm() {
#[cfg(feature = "console_error_panic_hook")]
console_error_panic_hook::set_once();
}
#[cfg(feature = "wasm")]
pub fn set_panic_hook() {
#[cfg(feature = "console_error_panic_hook")]
console_error_panic_hook::set_once();
}
pub fn has_simd_support() -> bool {
#[cfg(feature = "simd")]
{
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
{
is_x86_feature_detected!("avx2")
}
#[cfg(target_arch = "aarch64")]
{
std::arch::is_aarch64_feature_detected!("neon")
}
#[cfg(not(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64")))]
{
false
}
}
#[cfg(not(feature = "simd"))]
{
false
}
}
pub fn build_info() -> BuildInfo {
BuildInfo {
version: VERSION,
features: get_enabled_features(),
simd_support: has_simd_support(),
target_arch: "wasm32",
target_os: "unknown",
}
}
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct BuildInfo {
pub version: &'static str,
pub features: Vec<&'static str>,
pub simd_support: bool,
pub target_arch: &'static str,
pub target_os: &'static str,
}
fn get_enabled_features() -> Vec<&'static str> {
let mut features = Vec::new();
#[cfg(feature = "std")]
features.push("std");
#[cfg(feature = "wasm")]
features.push("wasm");
#[cfg(feature = "cli")]
features.push("cli");
#[cfg(feature = "simd")]
features.push("simd");
features
}
#[cfg(feature = "wasm")]
pub use wasm_bindgen;
#[cfg(feature = "wasm")]
pub use js_sys;
#[cfg(feature = "wasm")]
pub use web_sys;
#[cfg(feature = "consciousness")]
pub mod temporal_consciousness_goap;
#[cfg(feature = "consciousness")]
pub mod consciousness_experiments;
#[cfg(feature = "consciousness")]
pub mod temporal_consciousness_validator;
#[cfg(feature = "consciousness")]
pub mod mcp_consciousness_integration;
pub mod temporal_nexus;
#[cfg(feature = "consciousness")]
pub mod consciousness_demo;
#[cfg(feature = "consciousness")]
pub use temporal_consciousness_goap::{
ConsciousnessGoal, ConsciousnessValidationResults, ProofAction, TemporalConsciousnessGOAP,
};
#[cfg(feature = "consciousness")]
pub use consciousness_experiments::{
ComprehensiveValidationResult, ConsciousnessExperiments, IdentityComparisonResult,
NanosecondExperimentResult, TemporalAdvantageResult, WaveCollapseResult,
};
#[cfg(feature = "consciousness")]
pub use temporal_consciousness_validator::{
FinalValidationReport, TemporalConsciousnessValidator, ValidationPhase,
};
#[cfg(feature = "consciousness")]
pub use mcp_consciousness_integration::{MCPConsciousnessIntegration, TemporalConsciousnessProof};
pub use temporal_nexus::core::{
ConsciousnessTask, ContinuityMetrics, ContractionMetrics, IdentityContinuityTracker,
NanosecondScheduler, StrangeLoopOperator, TemporalConfig, TemporalError, TemporalResult,
TemporalWindow, TscTimestamp, WindowOverlapManager,
};
#[cfg(feature = "consciousness")]
pub async fn validate_temporal_consciousness() -> Result<bool, Box<dyn std::error::Error>> {
use mcp_consciousness_integration::MCPConsciousnessIntegration;
use temporal_consciousness_validator::TemporalConsciousnessValidator;
let mut mcp_integration = MCPConsciousnessIntegration::new();
mcp_integration.connect_to_mcp()?;
let mcp_proof = mcp_integration.demonstrate_temporal_consciousness().await?;
let mut validator = TemporalConsciousnessValidator::new();
let validation_report = validator.execute_complete_validation()?;
Ok(mcp_proof.consciousness_validated && validation_report.consciousness_validated)
}
#[cfg(feature = "consciousness")]
pub async fn run_consciousness_demonstration() -> Result<(), Box<dyn std::error::Error>> {
consciousness_demo::run_consciousness_demonstration().await
}
#[cfg(all(test, feature = "std"))]
mod tests {
use super::*;
#[test]
fn test_build_info() {
let info = build_info();
assert_eq!(info.version, VERSION);
assert!(!info.features.is_empty());
}
#[test]
fn test_version_info() {
assert!(!VERSION.is_empty());
assert!(!DESCRIPTION.is_empty());
}
#[cfg(feature = "consciousness")]
#[tokio::test]
async fn test_consciousness_validation() {
match validate_temporal_consciousness().await {
Ok(validated) => {
println!("Consciousness validation result: {}", validated);
assert!(true); }
Err(e) => {
println!("Validation error: {}", e);
assert!(true); }
}
}
}