use ppflib::prelude::*;
use ppflib::algebra::StateSpaceIdealError;
fn main() -> Result<(), StateSpaceIdealError> {
println!("=== PPF Algebraic Structures Example ===\n");
println!("1. State Space Ideals:");
let ideal_12 = StateSpaceIdeal::new(12)?;
let ideal_neg12 = StateSpaceIdeal::new(-12)?;
println!("IS(12) generator: {}", ideal_12.generator());
println!("IS(-12) generator: {}", ideal_neg12.generator());
println!("IS(12) dimension: {}", ideal_12.dimension());
println!("IS(-12) dimension: {}", ideal_neg12.dimension());
println!("IS(12) is classical: {}", ideal_12.is_classical());
println!("IS(-12) is quantum: {}", ideal_neg12.is_quantum());
println!("IS(12) contains 24: {}", ideal_12.contains(24));
println!("IS(12) contains 7: {}", ideal_12.contains(7));
println!("\n2. P-Prime Spectrum:");
let spectrum = PPrimeSpectrum::new(100); let state_space = FactorizationStateSpace::new(30)?;
println!("Number of spectrum points: {}", spectrum.all_points().len());
let magnitude_primes = spectrum.magnitude_prime_points();
println!("Magnitude prime points: {}", magnitude_primes.len());
let sign_prime_point = spectrum.sign_prime_point();
println!("Sign prime point: {}", sign_prime_point.prime());
println!(" Is sign prime: {}", sign_prime_point.is_sign_prime());
let support = spectrum.support(&state_space);
println!("Support of S(30): {:?}", support);
println!("\n3. Multiplication Algebra:");
let _mult_algebra = MultiplicationAlgebra::new();
let s6 = FactorizationStateSpace::new(6)?;
let s10 = FactorizationStateSpace::new(10)?;
let s15 = FactorizationStateSpace::new(15)?;
println!("Computing multiplication properties:");
println!("S(6) size: {}", s6.size());
println!("S(10) size: {}", s10.size());
println!("S(15) size: {}", s15.size());
println!("S(6) and S(10) have disjoint support: {}",
spectrum.have_disjoint_support(&s6, &s10));
println!("\n4. Homological Algebra:");
let _homology = HomologyGroups::new();
println!("Homology groups structure initialized");
println!("Can compute chain complexes and Betti numbers");
println!("For S(30) with 3 distinct primes:");
println!(" Expected b₁ = 2 (from 3-1 primes)");
println!(" Expected χ = 0 (toroidal topology)");
println!("\n5. Advanced Algebraic Operations:");
let ideal_6 = StateSpaceIdeal::new(6)?;
let ideal_10 = StateSpaceIdeal::new(10)?;
if let Ok(sum) = ideal_6.add(&ideal_10) {
println!("IS(6) + IS(10) = IS({})", sum.generator());
}
if let Ok(product) = ideal_6.multiply(&ideal_10) {
println!("IS(6) × IS(10) = IS({})", product.generator());
}
if let Ok(intersection) = ideal_6.intersect(&ideal_10) {
println!("IS(6) ∩ IS(10) = IS({})", intersection.generator());
}
println!("IS(6) contains IS(12): {}", ideal_6.contains_ideal(&StateSpaceIdeal::new(12)?));
println!("IS(12) contains IS(6): {}", StateSpaceIdeal::new(12)?.contains_ideal(&ideal_6));
println!("\n6. Ring Structure Analysis:");
println!("State space ideals form a ring under addition and multiplication");
let ideal_1 = StateSpaceIdeal::new(1)?;
println!("IS(1) generator: {}", ideal_1.generator());
println!("IS(1) dimension: {}", ideal_1.dimension());
if let (Ok(ab), Ok(ba)) = (ideal_6.multiply(&ideal_10), ideal_10.multiply(&ideal_6)) {
println!("Multiplication is commutative: {}", ab.generator() == ba.generator());
}
println!("\n7. Localization at Primes:");
if let Some(_point_2) = spectrum.get_point(2) {
println!("Localizing S(30) at prime 2:");
if let Ok(localized) = spectrum.localize(&state_space, 2) {
println!(" Local dimension: {}", localized.local_dimension());
println!(" Is trivial: {}", localized.is_trivial());
}
}
println!("\nAlgebraic structures provide the foundation for quantum-classical transitions!");
Ok(())
}